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

mongodb 集群迁移

0条评论1,528次浏览

问题:测试机上有一台全部运行在本地的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
  • 文章总数:79篇
  • 评论总数:254条
  • 分类总数:31个
  • 标签总数:44个
  • 运行时间:1192天

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

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

最新评论
  • Anonymous: :arrow: :neutral: :cry:
  • Anonymous: java.io.NotSerializableExcepti on: DStream checkpointing has been enabled but the DStreams with their...
  • wick: HI,请问一下,U,S,V得到后,怎么得到近似矩阵呢(用sp ark 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: 你好 我想问下一般删除节点要多久,要删除的datanode大概用了 1t,解除授权已经30多小时还没完成,请问是出现什么问题了吗 麻烦告诉下谢谢 qq1844554123
  • Anonymous: 你好 我想问下一般删除节点要多久,要删除的datanode大概用了 1t,解除授权已经30多小时还没完成,请问是出现什么问题了吗
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮忙发给我吗
  • Anonymous: 请问一下,那个 user的推荐结果楼主查看了么? 为什么输入数据 最高是五分,输出结果都是7分8分啥的?怎么设置输出的分数的最 大值?
  • Anonymous: 那个 user的推荐结果楼主查看了么? 为什么输入数据 最高是五分,输出结果都是7分8分啥的?
  • Anonymous: stopGracefullyOnShutdown在yarn- client模式下我测试的无效,你的呢
  • Anonymous: 另外,import的lib包能否发个列表.