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

mongodb 集群迁移

0条评论692次浏览

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

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

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

最新评论
  • 增达网: 受教了!呵呵!
  • Anonymous: :!: :smile: :oops: :grin: :eek: :shock:
  • 27: :razz: dsa会报错,rsa不会
  • Anonymous: 看错了 忽略我
  • Anonymous: UserSideCF这个类在哪里
  • 晴子: 在主节点初始化CM5数据库的时候报错误:Verifying that we can write to /opt/cm-5.9.0/etc/cloudera-scm -server log4j:ERROR Could not...
  • zhangnew: 就4题 :?:
  • linxh: “ 但要是遇到预先并不知道数组的长度而又需要获取正确的(或者称之 为原始的)split长度时,该如何处理呢。。? ” 印象中可以split函数参数传-1?
  • linxh: 班门弄斧一下: ssh host cmd 和直接ssh上后cmd结果不一样是因为ssh直接运行远程命令 是非交互非登录模式与ssh上去得到一个登录交互式Shell二 者加载的环境变量不一样。
  • 匿名: 其实文本分类和数字分类是一样的,只是文本分类需要多一个步骤, 就是计算它的tf-idf值将其转换为double类型
  • yurnom: 可能苹果最近又改变了返回值吧,最近没做测试了。 BadDeviceToken一般测试环境和正式环境弄错的情况 下会出现。
  • Anonymous: :razz: 博主,良心贴啊, 最近也在弄apns推送。 有个问题想请教你一下啊。 你博客中写的 Unregistered 错误,有准确的说明吗, 我看你博客中写的:...
  • 一波清泉: 回复邮箱: 1004161699@qq.com 多谢
  • Anonymous: 17/02/09 01:15:02 WARN Utils: Service ‘SparkUI’ could not bind on port 4040. Attempting port...
  • 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...