Mongodb 同步不同服务器上的mongo数据库
我有下一个情况。我在不同的服务器上有两个mongodb实例。 比如说Mongodb 同步不同服务器上的mongo数据库,mongodb,synchronize,Mongodb,Synchronize,我有下一个情况。我在不同的服务器上有两个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” “同步”是指下一步: 如果“tes
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”
“同步”是指下一步:
{
_id: "1",
name: "some name"
}
{
_id: "1",
name: "some name"
}
{
_id: "2",
name: "some name2"
}
“test2”数据库包含包含以下文档的集合“A”:
{
_id: "1",
name: "some name"
}
{
_id: "1",
name: "some name"
}
{
_id: "2",
name: "some name2"
}
如果我执行db.copyDatabase('test1','test2','host2:27017'),我会得到错误:
“errmsg”:“异常:E11000重复密钥错误索引:test1.A.$id重复密钥:{:\'1\'”
与cloneDatabase
命令相同。我怎样才能解决它
一般来说,同步数据库的方法是什么?
我知道最简单的方法是将文件从一台服务器复制到另一台服务器,但也许有更好的方法
请帮忙。我是蒙哥的新来者。谢谢 我还没有尝试过,但是当前的MongoDB文档描述了一个: 使用副本集部署等效的主从机
如果您想要类似于主从复制的复制配置,使用副本集,请考虑下面的副本配置文档。在此部署中,主机和提供的复制大致相当于两个实例的主从部署:
{
_id : 'setName',
members : [
{ _id : 0, host : "<master>", priority : 1 },
{ _id : 1, host : "<slave>", priority : 0, votes : 0 }
]
}
{
_id:'setName',
成员:[
{u id:0,主机:“”,优先级:1},
{u id:1,主机:“”,优先级:0,投票数:0}
]
}
有关副本集配置的更多信息,请参阅
使用_id而不是id。不需要在模型中声明它 如果你有很多服务器 我在每台服务器上使用一个小的预读,它创建一个受控的唯一id。mongoose id构建得非常符合逻辑(),数字0,6是机器标识符。我只是控制这些数字,因为我有多个服务器,我想确保没有共谋。如果你只有几个,不这样做可能没有风险。即使在我的情况下,我也觉得这太偏执了
exports.useProcessId = ()->
return process.env.INSTANCE_PROCESS_ID? && process.env.INSTANCE_PROCESS_ID.length == 4
exports.manipulateMongooseId = (id) ->
id = id.toString()
newId = new ObjectId(id.slice(0,6) + process.env.INSTANCE_PROCESS_ID + id.slice(10,24))
return newId
模式
如果您搜索一下,这里就有很多关于这个主题的问题,例如:为什么不将数据库转储到host1上,tar+scp将数据发送到另一台主机并执行dbrestore?或者您设置了一个复制集(记住要包含一个仲裁器),让mongodb负责复制?mongodb中的内容是如何更新的?有写入到test1和test2只是一个副本吗?我只想在不同的实例之间同步数据。在我的例子中,test1是如何将master和test2作为slave的,我希望在test1和test2Sounds中有等价的数据,就像你说master和slave时想要一个副本集一样