ITPub博客

首页 > 数据库 > NoSQL > Mongodb数据同步和主从切换

Mongodb数据同步和主从切换

原创 NoSQL 作者:zhcunique 时间:2021-03-18 09:15:25 0 删除 编辑

一、主从切换方式

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
先后就职于银行、券商等金融机构科技部门,从事数据库管理、自动化运维管理与系统运维相关工作,拥有Oracle 11g OCM/OCP证书,通过CFA二级考试。

注册时间:2021-02-04

  • 博文量
    73
  • 访问量
    500165