Linux下将Mongodb单机升级至副本集

将单机升级至副本集,我目前实践的方法是使用新的服务器做为临时的primary节点进行服务,通过备份还原的方法将数据同步到新搭建的服务器(最小程度的影响线上的服务)
完成后修改线上web的连接字符串,让应用连接集群,如果有必要的话也可以将迁移期间产生的数据还原至新服务器

1.首先得准备两台mongodb服务器,一个做为secondary节点(临时做为primary节点),一个做为arbiter节点
在mongodb服务器中加入集群元素,keyfile文件是集群内服务器共用的

keyFile=/usr/local/mongodb/keyfile
replSet=rs0

可能需要修改keyfile的访问权限

chmod 600 keyfile


2.初始化集群

config={
   _id : "rs0",
   members: [
      { _id: 0, host: "192.168.0.2:27017" },
      { _id: 1, host: "192.168.0.3:27017",arbiterOnly:true}
   ]
}
rs.initiate(config)


3.完成后检查集群的状态

#查看现在集群的状态
rs0:PRIMARY> rs.status();
#检查是否是主节点
rs0:PRIMARY> rs.isMaster();


4.备份还原

1)进入原单机服务器备份 /usr/local/mongodb/bin/mongodump
2)压缩打包 tar -zcvf backup2020.tar.gz backup2020
3)通过ftp上传至新服务器
4)解压 tar -zxvf backup2020.tar.gz
5)还原 
/usr/local/mongodb/bin/mongorestore
6)修改web应用连接字符串,更新部署

5.正常运行后可以将原单机服务器加至集群,这里在同步之前需要将原单机服务器的data文件夹和log文件夹里面的内容删除(在操作之前需要备份一下数据)
完成同步后,使用rs.stepDown(),将当前主库降级,primary角色交给192.168.0.1

rs0:PRIMARY> rs.add("192.168.0.1:27017")
rs0:PRIMARY> rs.stepDown()

 

6.强制关闭其中一个primary点后,另外一台服务器会成为primary节点

rs0:PRIMARY> db.shutdownServer();

 
7.设置副本集的优先级(该操作需要在primary节点进行)
首先通过rs.config()查看当前副本集的优先级情况
然后通过rs.reconfig(config)进行更新

rs0:PRIMARY> config=rs.conf()
rs0:PRIMARY> config.members[0].priority=3
rs0:PRIMARY> config.members[0].votes=1
rs0:PRIMARY> rs.reconfig(config);

当节点的投票数为0的时候无法设置优先级,需要修改节点的投票数
 

posted @ 2020-03-19 20:31  chen2013  阅读(978)  评论(0编辑  收藏  举报