程序员的自我修养
Home » MongoDB » mongodb 集群迁移

mongodb 集群迁移

0条评论1,696次浏览

问题:测试机上有一台全部运行在本地的mongodb集群。由于网络变化。现在本机的ip发生改变。因此 原来配置的绝对ip地址全部不可用。需要迁移。

简单版

  1. 每个sharding如果是replica set那么需要重新设置replica set的配置信息到新的ip地址。
    • 停止rs的所有副本。
    • 以standalone模式启动其中一个副本,修改rs.conf
    • 重复以上操作到其他所有副本
    • 重新以rs模式启动所有副本。查看rs的状态确认正确。
  2. 修改config server的meta信息为正确的ip地址。
    • 连接到config server 修改 config数据库下 shards集合里的关于sharding的地址为正确的地址。
  3. 重启 mongos 和 config server。

详细版

原有配置

  • mongos实例 x1:运行在192.168.6.81:20202
  • config server实例 x3:运行在192.168.6.81:36000, 192.168.6.81:36001, 192.168.6.81:36002
  • 三副本replica set实例 x2: 分别运行在 sh0/192.168.6.81:23000,192.168.6.81:23001,192.168.6.81:23002 和 sh1/192.168.6.81:24000,192.168.6.81:24001,192.168.6.81:24002
  • replica set sh0和sh1已经添加为mongos的两个分片

现在由于路由器配置改变,192.168.6.81这台测试机所在的子网不再可达,因此需要配置此机器的静态IP到新的网段,192.168.1.81。于是原来的mongodb的集群变得不再可用,需要进行迁移。
注意,mongodb要求在配置replica set和sharding时不能使用localhost或127.0.0.1这样的本地环回地址。因此之前虽然所有集群实例都运行在同一台机器上,但是不能用本地环回IP,导致本机IP改变后需要迁移。

0. 停止所有mongodb集群的实例

1. 修改本机IP

打开配置文件修改IP和网关vim /etc/sysconfig/network-scripts/ifcfg-eth0

2. 修改replica set的配置

  1. 以standalone模式运行sh0的其中一个副本mongod --dbpath sh0-rs0 --port 33333
  2. 用mongodb客户端mongo 连接到这个实例mongo --port 33333
  3. 修改replica set的配置信息, replica set的信息都保存在local数据库的system.replset集合中。

  4. 停止该mongod实例。
  5. 对sh0的另外两个副本重复2.1到2.4的操作。
  6. 对sh1的三个副本重复2.1到2.4的操作,注意replica set的名字为sh1,端口对应为24000,24001,24002。

3. 重新以replica set模式启动两个副本集sh0 和sh1

配置文件如下
kk1

此时两个副本集应该已经正常运作,用mongo cli连接后使用命令rs.status()可以查看到状态如下:
kk2

4. 修改config server的meta信息使得mongos能正确找到后端的mongod实例。

  1. 停止之前已经修正并启动的replica set实例。
  2. 正常启动第一个config server, 配置如下
    kk3
  3. 用cli连接上这台config server实例mongo --port 36000
  4. 修改分片的meta信息

  5. 重启config server
  6. 用上述config server的数据文件到替换另外两个config server的原来的数据文件。

  7. 启动两个分片副本集sh0, sh1
  8. 启动剩下两个config server, config1, config2。

5. 修改mongos的启动配置文件,设置正确的config server地址。

kk4

6. 启动mongos,此时集群应该已经能正确工作了。

如果出现提示config server无法确认的问题。尝试再次重启config server和mongos。

参考资料

(转载本站文章请注明作者和出处 程序员的自我修养 – SelfUp.cn ,请勿用于任何商业用途)
分类:MongoDB
标签:,
发表评论


profile
  • 文章总数:81篇
  • 评论总数:241条
  • 分类总数:32个
  • 标签总数:45个
  • 运行时间:1253天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论
  • Anonymous: :?: :razz: :sad:
  • Anonymous: 牛
  • Anonymous: 楼主你好,我偶尔也会 遇到Reconnect due to socket error: java.nio.channels.ClosedCha...
  • Anonymous: sdfs
  • Anonymous: :arrow: :neutral: :cry:
  • Anonymous: java.io.NotSerializableExcepti on: DStream checkpointing has been enabled but the DStreams with their...
  • wick: HI,请问一下,U,S,V得到 ,怎么得到近似矩阵 (用spark java),谢谢。
  • Michael Whitaker: Thank you for this blog, it was very helpful in troubleshooting my own issues. It seems that no...
  • Anonymous: :mad:
  • Anonymous: :???:
  • Anonymous: :mad: :mad: :mad:
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • Anonymous: :razz: :evil: :grin:
  • 张瑞昌: 有很多,比较常见的是 Jacob迭代法,一次迭代O (n^3),迭代次数不清楚 ...
  • Anonymous: :mrgreen:
  • lc277: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮 忙发给我吗