1.在接下来要用的服务器上部署好mongo
1)下载压缩包,官网下载需要的版本
2)解压tar -xvf xxx.tar.gz
3)cd xxx/
并创建配置文件touch mongodb.conf
,写入如下配置
port=27017
dbpath=../data
logpath=../logs/mongodb.log
logappend=true
fork=true
replSet=cat
4)启动./bin/mongod -f mongodb.conf --replSet=cat --maxConns=20000
2.同样用replSet模式启动原服务器上的mongo,启动时带上参数:--replSet=cat
3.进入到mongo中./bin/mongo
4.查看mongo当前replSet状态rs.status()
5.添加新部署的mongo服务到当前集合中rs.add('172.0.0.1:27017');
6.等待同步完成,可通过'show dbs;'查看数据库同步的数据量情况(新的mongo作为副本,需要执行rs.slaveOk()
才能正常访问和写入)
7.同步完后,将原来的服务器关掉,然后在新的服务器上执行rs.remove('原来的ip和端口')
即可
8.切换主库(primary)
1)主动切换,在原来的主库上执行rs.stepDown()
,然后关闭原来的主库即可,此时新的从库会自动切换成为主库,然后在新库上把原来的库删掉即可
2)被动切换,可能由于一些原因无法在主库操作,需要直接强制激活第二个(状态为SECONDARY)的成员
cfg=rs.conf()
#只给一个成员的数据,注意数组的下标是从0开始,本例是id为2,所以数组下标为1
cfg.members=[cfg.members[1]]
[
{
"_id" : 2,
"host" : "192.168.56.10:63105",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
}
]
#强制重新配置复制
rs.reconfig(cfg, {force: true});
#通过命令可以看到我们当前已经成功激活了id为2的成员
rs.status();
遇到的问题
- 同步中途自动停止了同步
实际上没有停止,只是local是一个本地主要存储副本集的配置信息、oplog信息的库,不会同步到其他副本集中
https://www.cnblogs.com/MyOnlyBook/articles/6201391.html
参考:
https://www.jianshu.com/p/ddcc3643aec9
http://blog.chinaunix.net/uid-20785090-id-5664554.html
导入导出的方式:
https://www.jianshu.com/p/d65190e16afe
网友评论