【mongoDB】mongoDB 2 套集群 数据同步、重组集群

原数据库:

192.168.1.101:27017 (主)
192.168.1.102:27017 (从)
192.168.1.103:27017 (仲裁)

新数据库:

192.168.2.101:27017
192.168.2.102:27017
192.168.2.103:27017(仲裁)

1.清空新数据库,加入原数据库集群作为隐藏从节点

在192.168.1.101执行:

rs.add("192.168.2.101:27017")
cfg= rs.conf()
cfg.members[3].priority = 0
cfg.members[3].hidden = true
rs.reconfig(cfg)

rs.add("192.168.2.102:27017")
cfg= rs.conf()
cfg.members[4].priority = 0
cfg.members[4].hidden = true
rs.reconfig(cfg)
  1. 数据同步完,从原环境集群中取消隐藏节点,移出集群

在192.168.1.101执行:

cfg= rs.conf()

cfg.members[3].priority = 1
cfg.members[3].hidden = false
rs.reconfig(cfg)
 
cfg= rs.conf()
cfg.members[4].priority = 1
cfg.members[4].hidden = false
rs.reconfig(cfg)
 
rs.remove("192.168.2.101:27017")
rs.remove("192.168.2.102:27017")"
  1. 新环境各节点,重新组建集群

在服务器192.168.2.101执行:

cfg= rs.conf()

cfg.members[0].host = "192.168.2.101:27017"
cfg.members[1].host = "192.168.2.102:27017"
cfg.members[2].host = "192.168.2.103:27017"

rs.reconfig(cfg,{"force":true})

为什么 cfg.members[2].host = "192.168.2.103:27017" 加进来就成为了仲裁节点?
因为 members[2] 就是 原数据库的仲裁节点的id,只是将其ip port 强制修改为了新数据库 ip port,属性不会变!

当然,你也可以显示指定节点角色为仲裁:

cfg= rs.conf()

cfg.members[0].host = "192.168.2.101:27017"

cfg.members[1].host = "192.168.2.102:27017"

cfg.members[2].host = "192.168.2.103:27017"
cfg.members[2].arbiterOnly = true

rs.reconfig(cfg,{"force":true})

一般地,不指定 member id 的方式添加仲裁节点的2种方式:

rs.addArb("host:port") 

rs.add("host:port", "arbiterOnly": true)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。