首页 > 数据库 > NoSQL > Mongodb数据同步和主从切换
1. 在采用Master-Slave 下,备节点宕机不会影响到主节点,但是主节点宕机,并不会自动进行故障转移,会影响到连接mongodb 的应用程序。
2. 需要手动把备节点的停止,并修改mongodb.conf 文件后,再重启,如图:

3. 由于现在备节点已经变成了主节点,所以需要修改web 的poseidon.properties 和rmm 的xx.config 里的mongodb 相关配置,改为备节点的ip 和端口,如图:
4. 等主节点恢复后,则把主节点当成备节点,数据会自动地同步到原来的主节点上。
5. 主节点同步完数据后,可选择主备再次调换。
6. 如果主从长期没有同步,mongodb 启动可能不会再自动同步,需要备库加上autoresyuc=true 配置项才能全部重新开始同步。
7.mongoDB 服务器启动与关闭,使用量两种方式:
7.1 通过我们提供的startMongoDB.sh 和 stopMongoDB.sh 。
7.2 通过mongod -f mongodb.conf 启动,通过use admin db.shutdownServer() 关闭。
1. 复制文件方式进行主从同步
mongodb 拷贝data文件同步了,mongodb靠自身的全量同步,随着data文件夹的增大,构建索引所花费的时间会越来越多,在周末两天根本完不成同步的任务,且同步时会影响主的性能,导致主的插入性能会受到影响,所以要找到一个可以先把主的data文件夹复制到从里面去,然后在往后的时间里增量同步的方法。
如果直接全量复制过去,再启动mongodb的主,然后启动mongodb的备,会报一个错误`TueFeb 19 16:31:45 [replslave] all sources dead: data too stale haltedreplication, sleeping for 5 seconds`, 同步失败了
2. 解决方案
关闭RMM (time&&event ), 关闭主的mongodb ,关闭从的mongodb
备份主的local.*, 包括local.ns 到一个新的文件夹目录,备份好之后,删除主的local.*, 再删除从的local.*
启动主的mongodb ,再启动从的mongodb
在主的上面增加数据或者删除数据,看能否同步到从库里面去
从库查看数据是否成功新增的方法,见第三节`mongodb 命令行启动命令
3.mongodb 主从配置内容
|
# 1. mongodb 主的配置文件 port=37017 dbpath=E:\\mongo\\mongodb-master\\data logpath=E:\\mongo\\mongodb-master\\log\\mongodb.log logappend=true master=true |
|
# 2. mongodb 从的配置文件 port=37018 dbpath=E:\\mongo\\mongodb-slave\\data logpath=E:\\mongo\\mongodb-slave\\log\\mongodb.log logappend=true slave=true source=127.0.0.1:37017 |
|
# 3. mongodb 命令行启动命令 > cd bin > mongo --host 127.0.0.1 --port 37018 [ -u admin -p admin] > use rmm > db.rmm_backup_processor_calc_num.find()
|
|
# 4. mongodb 统计命令[ 观察mongodb 负载性能的命令] > cd bin > mongostat --port 37018 |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69994536/viewspace-2763461/ ,如需转载,请注明出处,否则将追究法律责任。