ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MongoDB 副本集用一致性快照方法添加从节点

2021-05-26 21:02:18  阅读:270  来源: 互联网

标签:快照 mongo MongoDB 27017 db 192.168 集用 data 节点


副本集信息:

192.168.1.1 PRIMARY
192.168.1.2 SECONDARY
192.168.1.3 SECONDARY

192.168.1.4 SECONDARY(新增)

一、步骤:

1.主或从节点上进行一致性快照备份
2.从节点上进行一致性快照恢复,仅仅对数据部分进行恢复,暂时不要对oplog进行恢复
3.初始化oplog.rs集合,并恢复oplog记录
4.初始化local数据库的其他两个集合db.replset.election,db.system.replset
5.修改数据库配置并重启数据库(这一步操作前实例不开启认证模式、复制集的配置)
6.用rs.add("HOST_NAME:PORT")命令将从节点添加进集群
7.用rs.status()观察同步状态并校验数据的完整和一致性

二、备份:

主节点或者其他两个从节点上备份数据:

mongodump -uadmin -padmin --host 192.168.1.1 --authenticationDatabase=admin --port=27017 --oplog -o /data/mongo/backup

将备份传输到192.168.1.4进行恢复:

scp -r /data/mongo/backup mongo@192.168.1.4/data/mongo

三、第三个从节点以单实例方式启动:

备注:需要注释掉以下副本集参数
# auth = true

#replSet = repl_mongo

#keyFile = /data/mongo/27017/replSet.key

启动:
mongod -f /data/mongo/27017/conf/mongodb.conf

在192.168.1.4上进行一致性快照恢复:
mongorestore --oplogReplay --port=27017 /data/mongo/backup

四、创建oplog.rs集合并初始化大小:

>use local

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

五、查询主节点replset.election集合的数据并将这些数据存储到192.168.1.4节点

在PRIMARY上的操作:若没权限,添加权限:db.grantRolesToUser( "admin", [{ role: "read", db: "local"}])
> use local

> db.replset.election.find()
{ "_id" : ObjectId("60ab1a31c16378e2712acaf4"), "term" : NumberLong(1), "candidateIndex" : NumberLong(0) }

在SECONDARY上保存PRIMARY上replset.election集合的数据内容:

> use local

> db.replset.election.save({ "_id" : ObjectId("60ab1a31c16378e2712acaf4"), "term" : NumberLong(1), "candidateIndex" : NumberLong(0) })

六、关闭第三个从节点,以副本集方式启动mongodb:

修改第三个从节点配置,注释去掉:

auth = true

replSet = repl_mongo

keyFile = /data/mongo/27017/replSet.key

以副本集方式启动mongodb:
mongod -f  /data/mongo/27017/conf/mongodb.conf

七、在PRIMARY上添加SECONDARY节点:若权限不够:db.grantRolesToUser ( "admin", [ { role: "__system", db: "admin" } ] )

> rs.add("192.168.1.4:27017")

 

标签:快照,mongo,MongoDB,27017,db,192.168,集用,data,节点
来源: https://www.cnblogs.com/hankyoon/p/14814995.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有