我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB复制集

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB复制集

一、关于 MongoDB复制集

1、什么是复制集
复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复。
复制集的优势如下:
让数据更安全
搞数据可用性(7 * 24)
灾难恢复
无停机维护(如备份、索引重建、故障转移)
读缩放(额外的副本读取)
副本集对应用程序是透明的
2、复制集的工作原理
MongoDB的复制集至少需要两个节点。其中一个是主节点(primary),负责处理客户端的请求,其余的都是从节点(Secondary),负责复制主节点上的数据。
MongoDB各个节点常见的搭配方式为:一主一从或一主多从。主节点记录其上的所有操作到oplog中,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
主从复制结构图如下:
MongoDB复制集
复制集特点如下:
N个节点的集群
任何节点可作为主节点
所有写入操作都在主节点上
自动故障转移
自动恢复

二、MongoDB复制集部署

1、配置yum源
vi /etc/yum.repos.d/CentOS-Base.repo //末行增加
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
2、安装配置mongodb

yum install -y mongodb-org  //安装
vi /etc/mongod.conf //修改监听地址和端口

MongoDB复制集
打开复制模块
MongoDB复制集
3、创建多实列

mkdir -p /data/mongodb/mongodb{2,3,4}   //创建数据目录
cd /data
mkdir logs  
touch logs/mongodb{2,3,4}.log   //创建日志文件
cd logs/
chmod 777 *.log //赋予权限
cp -p /etc/mongod.conf /etc/mongod2.conf        //复制主配置文件
cp -p /etc/mongod.conf /etc/mongod3.conf
cp -p /etc/mongod.conf /etc/mongod4.conf
vi /etc/mongod2.conf    //依次修改主配置文件(注意文件的名称不一样)

MongoDB复制集
MongoDB复制集

mongod -f /etc/mongod.conf     //进入对应的实列
mongod -f /etc/mongod2.conf
mongod -f /etc/mongod3.conf
mongod -f /etc/mongod4.conf

4、配置三个节点的复制集

mongo   //进库
cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.80.100:27017"},{"_id":1,"host":"192.168.80.100:27018"},{"_id":2,"host":"192.168.80.100:27019"},{"_id":3,"host":"192.168.80.100:27020"}]} //将另外三个节点添加到复制集
rs.initiate(cfg)        //初始化复制集配置
rs.status() //查看复制集的状态

MongoDB复制集
MongoDB复制集
MongoDB复制集
MongoDB复制集

rs.remove("192.168.80.183:27020")       //删除节点
rs.add("192.168.80.183:27020")      //添加节点

5、验证复制集

use test
db.a.insert({"id":1,"name":"jack"})
db.a.find()

去其他节点依次查看验证

mongo -port 27018
show dbs

MongoDB复制集

三、MongoDB复制切换

1、故障自动切换

mongod -f /etc/mongo.conf --shutdown    //模拟了模拟故障点
mongdo -port 27018  //进入新的主节点
rs.status() //查看复制集状态

MongoDB复制集
MongoDB复制集
2、手动切换

mongdo -port 27018  //进入主节点
rs.stepDown(60,30)      //交出主节点位置
rs.status() //查看状态

MongoDB复制集
rs.freeze(30) //暂停30s不参与选举,必须要有仲裁节点,在下面的复制选举中验证

四、MongoDB复制选举

1、虚拟机还原重复上述安装mongoDB并添加多实例
2、配置三个复制节点

mongo   //进库
cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.80.100:27017","priority":100},{"_id":1,"host":"192.168.80.100:27018","priority":100},{"_id":2,"host":"192.168.80.100:27019","priority":0},{"_id":3,"host":"192.168.80.100:27020","arbiterOnly":true}]}       //指定复制节点给的属性(priority为100:标准节点,priority为0:被动节点,arbiterOnly:仲裁节点)
rs.initiate(cfg)        //初始化配置
rs.isMaster()   //查看个点节点属性

MongoDB复制集

use local
show collections   //查看集合

MongoDB复制集
db.oplog.rs.find() //查看日志记录所有操作
3、模拟便准节点故障

mongod -f /etc/mongod.conf --shutdown   //模拟标准节点1故障
mongo --port 27018  //进入第二个准备节点验证是否被选举为主节点

MongoDB复制集
MongoDB复制集

mongod -f /etc/mongod2.conf --shutdown      //模拟标准节点2故障
mongo --port 27019  //进入被动节点验证,此时被动节点不能成为主节点

4、允许从节点读取数据
在从节点无法查看数据
MongoDB复制集

rs.slaveOk()    //允许从节点读取数据
show dbs;   //允许默认从节点读取数据

MongoDB复制集
5、查看复制状态信息

rs.help()   //查看
rs.printReplicationInfo()       //查看复制集信息

MongoDB复制集
rs.printSlaveReplicationInfo() //查看从节点的状态
MongoDB复制集
注:其中没有仲裁节点,说明仲裁节点不具备数据复制能力
6、更改oplog大小

use local
db.oplog.rs.stats() //查看操作复制操作的状态

MongoDB复制集
方法一:

use admin   //进入管理库
db.shutdownServer() //关闭注销复制集相关启动参数
vi /etc/mongod.conf //修改端口为27028并注释复制集参数
mongod -f /etc/mongod.conf      //单实例启动
mongodump --port 27028 --db local --collection 'oplog.rs'   //备份操作日志
mongo --port 27028
> use local
> db.oplog.rs.drop()    //删除日志文件
> db.runCommand( { create: "oplog.rs", capped: true, size: (2 * 1024 * 1024 * 1024) } ) //重新创建日志文件并且指定大小
> use admin
> db.shutdownServer()   //关闭节点服务

方法二:
vi /etc/mongod.conf //修改端口回27018打开复制集参数指定复制集的大小
MongoDB复制集

mongod -f /etc/mongod.conf      //重新启动
mongo   //进入实例验证

MongoDB复制集
7、放弃被选举产生新的有效选举

mongo --port  27018 //进入主节点
rs.stepDown()   //放弃选举权

MongoDB复制集
rs.status() //另外一个标准节点有效选举为主节点
MongoDB复制集

五、部署认证复制

vi /etc/mongod.conf
vi /etc/mongod2.conf
vi /etc/mongod3.conf
vi /etc/mongod4.conf        //依次打开安全认证模块

MongoDB复制集

cd /usr/bin/    //进入bin目录
echo "kgcrs key"> kgcrskey1 //创建认证文件
echo "kgcrs key"> kgcrskey2
echo "kgcrs key"> kgcrskey3
echo "kgcrs key"> kgcrskey4
chmod 600 kgcrskey{1..4}    //更改权限

四个实例依次进行重启
进入主节点
kgcrs:PRIMARY> show dbs #无法查看数据库
kgcrs:PRIMARY> rs.status() #无法查看复制集

kgcrs:PRIMARY> use admin #身份登录验证
kgcrs:PRIMARY> db.auth("root","123")

kgcrs:PRIMARY> rs.status() #可以查看数据库
kgcrs:PRIMARY> show dbs #可以查看复制集

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MongoDB复制集

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MongoDB复制集RS(ReplicationSet)

MongoDB复制集RS(ReplicationSet) 1.基本原理      基本构成是1主2从的结构,自带互相监控投票机制(Raft(MongoDB) Paxos(mysql MGR 用的是变种))如果发生主库宕机,复制集内部会进行投票选举,选择一个
MongoDB复制集RS(ReplicationSet)
2022-03-31

mongoDB复制集修改 oplog 大小

ctiy:PRIMARY> use localswitched to db localctiy:PRIMARY> db.oplog.rs.stats().maxSize //查看大小NumberLong("53687091200") //这里为50G
mongoDB复制集修改 oplog 大小
2019-07-06

MongoDB复制集与故障恢复机制是什么

MongoDB复制集是一组维护相同数据集的MongoDB实例。其中有一个主节点(primary)负责处理所有的写操作,其他节点是从节点(secondary),负责复制主节点上的数据并处理读操作。复制集还包括一个仲裁节点(arbiter),用
MongoDB复制集与故障恢复机制是什么
2024-05-07

编程热搜

目录