【发布时间】:2013-05-16 06:21:34
【问题描述】:
我有下一个情况。我在不同的服务器上有两个 mongodb 实例。 例如
Mongodb instance on server "one" (host1:27017) with database: "test1"
Mongodb instance on server "two" (host2:27017) with database: "test2"
现在,我需要将“host1:27017”中的“test1”数据库与 来自“host2:27017”的“test2”。
“同步”是指下一个:
如果“test2”中不存在“test1”数据库中的某些集合,则应将该集合完全复制到“test1”数据库中。
如果集合中的某些记录在“test2”数据库中不存在,则必须添加,否则更新。如果记录在“test1”数据库的A集合中不存在,但在“test2”数据库的A集合中存在,则必须从“test2”中删除记录。
顺便说一句,这里有问题。例如: “test1”数据库有集合“A”,包含以下文档:
{
_id: "1",
name: "some name"
}
"test2" 数据库具有包含以下文档的集合 "A":
{
_id: "1",
name: "some name"
}
{
_id: "2",
name: "some name2"
}
如果我执行 db.copyDatabase('test1', 'test2', "host2:27017") 我得到错误:
"errmsg" : "异常:E11000 重复键错误索引:test1.A.$id 重复键:{ : \"1\" }"
与cloneDatabase 命令相同。我该如何解决?
一般来说,同步数据库的方法有哪些? 我知道最简单的方法是将文件从一台服务器复制到另一台,但也许有更好的方法。
请帮忙。我是mongo的新人。谢谢。
【问题讨论】:
-
如果你稍微搜索一下,这里有很多关于这个主题的问题,即:stackoverflow.com/questions/16171613/…
-
为什么不将host1上的数据库转储,tar+scp数据到另一台主机做一个dbrestore呢?或者你设置一个复制集(记得包含一个仲裁器),让 mongodb 负责复制?
-
mongoDB 的更新情况如何?是否有写入到 test1 和 test2 只是一个副本?
-
我只想在不同实例之间同步数据。在我的情况下,test1 是 master 和 test2 作为从属的方式,我想在 test1 和 test2 中有等价数据
-
当你说master和slave时,听起来你想要一个副本集
标签: mongodb synchronize