第三阶段基础
时 间:2023年7月4日
参加人:全班人员
内 容:
MongoDB远程复制集集群
目录
MongoDB远程复制集集群
实验环境:(两台服务器,8个实例)
Huyang1 | Node1 | Node2 | Node3 | Node4 |
192.168.59.137 | 27017 | 27018 | 27019 | 27020 |
Huyang2 | Node1 | Node2 | Node3 | Node4 |
192.168.59.138 | 27017 | 27018 | 27019 | 27020 |
环境部署:
1、关闭防火墙
systemctl stop firewall
iptables -F
setenforce 0
2、上传软件包或下载
3、解包、移动位置,命令优化
tar xf mongodb-linux-x86_64-rhel70-4.0.6.tgz
mv mongodb-linux-x86_64-rhel70-4.0.6
/usr/local/mongodb
ln -s /usr/local/mongodb/bin/* /bin/ 命令优化
安装部署
1、创建数据目录,日志文件及目录并创建相应配置文件
mkdir -p /data/mongodb1
mkdir -p /data/logs/mongodb
touch /data/logs/mongodb/mongodb1.log
cd /usr/local/mongodb/
mkdir conf
2、修改配置文件
vim conf/mongodb1.conf
添加配置如下:
同理,配置huyang1/huyang2上的27018/27019
3、启动服务
mongod -f /usr/local/mongodb/conf/mongodb1.conf
4、进入数据库,配置复制集
mongo
rs.status() 查看状态
配置复制集【huyang1或huyang2操作,另一方不操作】
cfg={"_id":"huyang","members":[{"_id":0,"host":"192.168.59.138:27017"},{"_id":1,"host":"192.168.59.138:27018"},{"_id":2,"host":"192.168.59.138:27019"},{"_id":10,"host":"192.168.59.137:27017"},{"_id":11,"host":"192.168.59.137:27018"},{"_id":12,"host":"192.168.59.137:27019"}]}
rs.initiate(cfg) 配置成功
rs.status() 查看变化
【huyang1】 无状态--->成为从库
【huyang2】 无状态--->从库--->主库
实 验:
实验一:在没有配置优先级下,模拟故障转移
【huyang2】宕机主库
查看复制集内变化
【huyang1】rs.status()
huyang2的27018成为新的主库
【huyang2】宕机主库
查看复制集内变化
【huyang1】rs.status()
huyang2的27018成为新的主库
可见,在没有配置优先级的情况下,主库随机产生
实验二:配置优先级测试
【huyang2】配置8个hosts,六个优先级,一从,一仲裁
重启复制集查看变化
rs.reconfig(cfg)
只能添加不超过7个
rs.isMaster()
【huyang2】配置7个hosts,5个优先级,一从,一仲裁
重启复制集查看变化
rs.reconfig(cfg)
rs.isMaster()
建立成功,五个优先,一从一仲裁
只能建立奇数类的复制集
【huyang2】配置7个hosts,4个优先级,一从,两仲裁
【huyang2】配置7个hosts,4个优先级,一从,三仲裁
rs.reconfig(cfg)
rs.isMaster()
建立均不成功,只能建立一个仲裁(奇数偶数都不可以)
【huyang2】配置7个hosts,4个优先级,两从,一仲裁
rs.reconfig(cfg)
rs.isMaster()
配置四从,结果都可以建立
实验三:配置了优先级后,测试故障转移
当前为5hosts,1从,1仲裁
优先级为:
138:27017=100 27018=95 27019=90
137:27017=85 27018=80
【huyang2】27017主库宕机
【huyang1】rs.status() 查看变化 138:27018成为主库
【huyang2】27018主库宕机
【huyang1】rs.status() 查看变化 138:27019成为主库
实验结果总结:
1、mongodb远程复制集建立hosts,只能建立奇数个hosts,不能建立偶数个hosts;
2、mongodb远程复制集建立仲裁点,只能建立一个仲裁(奇数偶数都不可以);
3、mongodb远程复制集建立从库,可以建立多个,(奇数偶数都可以);
4、配置了优先级后的mongodb远程复制集,由仲裁点和优先级决定主库宕机之后的新主库。