天天看点

使用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  [email protected]:/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      

去掉注释后:

# 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()

>