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

mongodb 集群迁移

0条评论86次浏览

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

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

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

最新评论
  • pacificLee: :twisted:
  • 小码: 为什么没有后面的呢,只有前10个
  • Anonymous: :lol:
  • Anonymous: :razz: 楼主是属于会聊天的。 我想问,sqoop发了几个版本了,应该没这些问题了吧。
  • Anonymous: Config.kafkaConfig.kafkaGroupI d 这个是指自己配置的group id 还是从 import org.apache.kafka.common.config .Config 这个类...
  • Anonymous: ZkUtils.getPartitionsForTopics (zkClient, Config.kafkaConfig.topic) 那个方法是在 spark-streaming_2.10 中 kafka...
  • Anonymous: ZkUtils.getPartitionsForTopics (zkClient, Config.kafkaConfig.topic) 你确定 kafka 里面有这个类 ? 个人在kafka 最新 稳定版...
  • Anonymous: :roll:
  • Anonymous: 很不错,试问有java版的吗?
  • Anonymous: 赞
  • Anonymous: 哈哈 看楼主的吐槽乐死了 where子句是可以写的 同样找不到资料 一点点试出来的 select id from xxxx where ${CONDITIONS} and 1=1 and 2=2 limit 4
  • EVIL: 我在运行完C4.5的代码后,显示 defined object DecisionTreeTest 是什么意思?这是有错误吗?运行结果在哪里看?
  • sf: 楼主的问题,我都遇到。。。没办法项目已经定型了,最后都硬着头 皮一个一个的改了源码
  • zz: 我去,楼主你真及时,我们今天上了新的HTTP2 push之后也发现速度曲线很奇怪,开始有200k/min,跟 另一台老的推送协议速度差不多,但是过了一会,立马降到只有几k /min,百思不得其解,我们还用了一个海外代理,在...
  • qi365: :mad: 很可恶,百度助纣为虐~
  • qi365: :? :shock: haha~ very good~
  • 张是大: 《深入浅出Spark机器学习实战(用户行为分析)》 课程网盘下载:http://pan.baidu.com/s/ 1mixvUli 密码:1pfn
  • Anonymous: :???:
  • Anonymous: 我用着sqoop感觉还可以,select 几十个字段也没事,估计是版本低。。
  • Anonymous: :grin: