使用mongodump和mongorestore添加一个副本集从库

 

当前环境:

副本集如下:

10.10.10.11:28000  (主库)
10.10.10.12:28000  (从库)
10.10.10.13:28000  (从库)

 

当前需求:

      现在需要通过mongodump该副本集来给该副本集添加一个从库,新的实例所在机器为:

10.10.10.22:28000  

 

 

01,备份当前副本集:

 

# mongodump是不会备份local和config这两个库,其余的库均可以被备份,这里进行全备份。

# 在哪里执行mongodump命令,则没有任何要求,只需要与该副本集在同一个网段即可。比如,这里在

# mongodump --host 10.10.10.13 --port 28000 --username xxx --password yyy --authenticationDatabase admin --oplog --out /home/work/backup

 

02,将备份拷贝到目标机器10.10.10.22:

 

# 这一步不是必须的,只要备份文件所在机器能够连接目标机器10.10.10.22即可:

 

scp  -r  /home/work/backup  work@10.10.10.22:/home/work/tmp/  

 

 

 

03,以单实例启动10.10.10.22:28000:

 

         更改mongodb的配置文件:注释掉安全配置与复制配置:

# vi /home/work/mongodb/mongo_28000/etc/mongodb.conf
#
replication: # oplogSizeMB: 51200 # replSetName: test #security: # keyFile: /home/work/mongodb/mongo_28000/etc/test.keyfile # authorization: enabled

 

       启动该实例:

 

# /home/work/mongodb/4.0.17/bin/mongod   -f  /home/work/mongodb/mongo_28000/etc/mongodb.conf

 

04,mongorestore恢复数据:

 

# /home/work/mongodb/4.0.17/bin/mongorestore   --host=10.10.10.22 --port=28008 --oplogReplay --dir=/home/work/tmp/backup/

 

 

05,创建local库中的固定集合oplog.rs:

 

# /home/work/mongodb/4.0.17/bin/mongo   --host=10.10.10.22 --port=28008 

> use local

> db.createCollection("oplog.rs",{"capped":true,"size":100000000})

# 其中capped:true表示创建的集合是循环覆盖的,限制大小的;创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。size单位是KB

 

06,恢复备份中oplog.rs到目标机器10.10.10.22:28000:

 

# /home/work/mongodb/4.0.17/mongorestore --host=10.10.10.22 --port=28000 --db local --collection oplog.rs   /home/work/tmp/backup/oplog.bson

 

07,恢复主节点replset.election集合的数据到目标机器10.10.10.22:28000:

 

# mongo  --host 10.10.10.11 --port 28000 --username xxx --password  yyy  --authenticationDatabase admin

> use local

>db.replset.election.find()
{ "_id" : ObjectId("5dcfb9112670e3e338d03747"), "term" : NumberLong(
7), "candidateIndex" : NumberLong(2) }
###########################################################################################################################################
###########################################################################################################################################

# mongo
--host 10.10.10.22 --port 28000 > use local >db.replset.election.save({ "_id" : ObjectId("5dcfb9112670e3e338d03747"), "term" : NumberLong(7), "candidateIndex" : NumberLong(2) })

 

08,关闭目标机器10.10.10.22:28000实例,然后以副本集方式启动:

 

杀掉mongod进程:

#  ps aux|grep mongod

# kill xxx

 

去掉注释后:

# vi /home/work/mongodb/mongo_28000/etc/mongodb.conf

replication:
    oplogSizeMB: 51200
    replSetName: test
security:
   keyFile: /home/work/mongodb/mongo_28000/etc/test.keyfile
   authorization: enabled

 

启动:

# /home/work/mongodb/4.0.17/bin/mongod   -f  /home/work/mongodb/mongo_28000/etc/mongodb.conf

 

09,在主库添加该节点实例10.10.10.22:28000:

 

# mongo  --host 10.10.10.11 --port 28000 --username xxx --password  yyy  --authenticationDatabase admin


> use admin

> rs.add("10.10.10.22:28000")

> rs.status()

> rs.printSlaveReplicationInfo()

 

posted @ 2020-11-06 16:43  igoodful  阅读(627)  评论(3编辑  收藏  举报