Mongo复制集不停服数据迁移操作实例

0、流程

  • 1、在目标服务器上用同样的配置文件起三个mongod
  • 2、修改当前服务器上的复制集配置文件改ip:port
  • 3、在当前服务器上的主mongod上添加目标服务器的三个mongod的地址
  • 4、等到数据同步完,通过修改权重实现重目标投票,选出目标服务器上的为主节点
  • 5、登录目标服务器的主mongod移除当前服务器地址。
  • 6、在当前服务器上重目标配置集群
  • 注意:本次以0.0.0.158为当前服务器,0.0.0.203为目标服务器

1、准备工作

1、下载安装mongod

注意:搭复制集的两台服务器的mongo版本一定要一致

>wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz?_ga=1.96171865.475907078.1449151064
>mv mongodb-linux-x86_64-3.0.6.tgz\?_ga=1.96171865.475907078.1449151064 mongodb.tar
>tar zxvf mongodb.tar
>sudo mv mongodb-linux-x86_64-3.0.6 /usr/local/mongodb
>vim /etc/profile
    最后一行添加 export PATH=$PATH:/usr/local/mongodb/bin
>source /etc/profile

2、建立相关文件夹并修改权限

1、建立数据库路径

>sudo mkdir -p /data1/mongodb/{mongodb1,mongodb2,mongodb3}

2、建立日志文件路径(记得chmod -R 777 赋予权限)

>sudo touch /data1/logs/mongo/{mongo1.log,mongo2.log,mongo3.log}

3、利用当前服务器的配置文件(iguitar1.conf)新建

>sudo mkdir /etc/mongo
>sudo chmod -R 777 /etc/mongo
>cp /tmp/iguitar1.conf /etc/mongo/aimusic1.conf
>vim aimusic1.conf 
#主要修改的事配置文件里的 数据库地址、日志地址、端口号三处,对应上面建的三个,端口分别设置(30001,30002,30003)

1、起目标服务mongo并配置复制集

1、起mongo服务

>mongod -f aimusic1.conf
>mongod -f aimusic2.conf
>mongod -f aimusic3.conf

起完看一下是否成功

ps -ef | grep mongo
注意:如果是搭建复制集接下来按此处下面操作,迁移则不用这一步。
>mongo -p 30001 登录任一mongo
>rs.initiate({_id:'rs0',members:[{_id:1,host:'localhost:port'}]})初始化复制集并添加一个成员
>rs.add("host2:port2") 添加第二个成员
>rs.addArb("host3:port3") 添加第三个成员并设为仲裁节点
注意里面的host,port要填实际情况的值

2、修改当前服务器mongo的配置

因为当前服务器initate的过程是以hostname命名,不能进行连接,所以修改成ip

> conf=rs.conf()
> conf.members[0].host="0.0.0.158:30001";
> rs.reconfig(conf,{"force":true});

3、配置主从

登录当前服务器主节点进行操作

>mongo --port 30001
>rs.add("0.0.0.203:30001")
>rs.add("0.0.0.203:30002")
>rs.addArb("0.0.0.203:30003")
这里设置30001和30002为SECONDARY次节点,设置30003为ARBITER仲裁者

3、干预投票,重选主节点

1、干预投票

1、登录当前服务器的mongo等数据完成同步后开始操作

>mongo --port 30001
>rs.status()

当查看目标服务器的mongo的"stateStr"字段为SECONDARY或者ARBITER 即为完成同步

2、重选设置优先级,使得目标服务器的要设置主节点的mongo优先级最高

conf=rs.conf()
conf.members[0].priority = 4
rs.reconfig(conf)

3、等待重新投票,并登陆目标服务器查看(本次以目标服务器的30001为目标主节点)

>mongo --port 30001
> rs.isMaster()

4、同时在目标服务器主节点mongo中移除当前服务器的地址

>rs.remove("0.0.0.158:30001")
>rs.remove("0.0.0.158:30002")

4、当前服务器mongo重设复制集

1、登录当前服务器上之前设置主节点的mongo 30001

>mongo --port 30001

2、强制重新配置

>config = {"_id":"rs0","members":[{"_id":0,"host":"0.0.0.158:30001","priority":1}]}
>rs.reconfig(config,{force:true})

3、把之前的仲裁节点加进来

>rs.addArb("0.0.0.158:30002")

收工

mongo 
更新时间:2019-03-13 20:08:35

本文由 智慧煮粥 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:http://zz.zzhub.cn/archives/mongoset
最后更新:2019-03-13 20:08:35

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×