一、概述
MongoDB副本集(Replica Set)是有自动故障恢复功能的主从集群,有一个Primary节点和一个或者多个Secondary节点组成。副本集没有固定的主节点,当主节点发生故障时,整个集群会选举一个主节点 为系统提供服务以保证系统的高可用。
1.1、Automatic Failover
中文名称:自动故障转移机制,当主节点未与集合中的其他成员通信超过配置的选举超时时间(默认为10秒)时,合格的辅助节点将调用选举方式将自己提名为新的主节点。集群尝试完成新主节点的选举并恢复正常操作。
二、搭建副本集
2.1、创建数据目录
# 在 /usr/local/mongodb5 目录分别创建如下文件夹:
mkdir -p ./rep1/data1
mkdir -p ./rep1/data2
mkdir -p ./rep1/data3
2.2、搭建副本集
# 打开三个窗口,分别在/usr/local/mongodb5/bin 目录执行如下指令
./mongod --port=27017 --dbpath=/usr/local/mongodb5/rep1/data1 --bind_ip 0.0.0.0 --replSet myreplace/[localhost:27018,localhost:27019]
./mongod --port=27018 --dbpath=/usr/local/mongodb5/rep1/data2 --bind_ip 0.0.0.0 --replSet myreplace/[localhost:27019,localhost:27017]
./mongod --port=27019 --dbpath=/usr/local/mongodb5/rep1/data3 --bind_ip 0.0.0.0 --replSet myreplace/[localhost:27017,localhost:27018]
2.3、配置副本集,连接任意节点
2.3.1、连接27017
./mongo --port 27017
2.3.2、初始化副本集
var config = {
_id: "myreplace",
members: [
{_id:0,host:"localhost:27017"},
{_id:1,host:"localhost:27018"},
{_id:2,host:"localhost:27019"}
]
}
# 初始化配置:作用是选举主节点
rs.initiate(config);
# 说明
主节点具有可读可写的权限
2.4、测试一(27017主节点、27018&27019副节点)
# 1、创建索引(db)& 查询表
use ruoyi
show tables
# 2、插入数据
for (let i = 1; i <= 100; i++) {
db.users.insert({_id:i,name:'李白_' + i,age:10 + i})
}
# 3、查询表
show tables
# 4、查询表中的数据(默认前20条)
db.users.find().pretty()
# 5、观察27018和27019子节点中的索引、集合、文档数据
第一步:打开新窗口,连接27018
第二步:设置副节点可以临时访问。指令:rs.secondaryOk();
2.4.1、创建索引&查询表
2.4.2、插入数据
2.4.3、查询表
2.4.4、查询表中的数据
2.4.5、观察27018和27019子节点中的索引、集合、文档数据
说明:27019节点同上
2.5、测试二(27017节点宕机,竞选主节点测试)
步骤:
1、将27017节点退出。模拟宕机
2、观察27018、27019节点
3、结果:重新竞选了主节点