docker 搭建mongodb集群(多机)
至少需要3个节点,可以是1主1丛1仲裁节点,也可以是1主2从(但不能是1主2仲裁,仲裁节点不备份数据,无法升为主节点)。
一主一从的Replica Set也可以部署,但是效果等同于Master/Slave集群,主节点挂掉后,从节点无法自动提升为主节点。
192.168.59.102:mongo-primary(主)
192.168.59.103:mongo-primary1(从)
192.168.59.102:mongo-primary2(从)
1、编辑三台服务器的/etc/hosts

3、创建mongo-secondary1
4、进入mongo客户端mongo-primary,进行集群配置
#docker exec -it mongo-client bash
#mongo
>config = {_id:"mongo-rep", version:1, members:[{_id:0, host:"192.168.59.102:27017", priority:6}, {_id:1, host:"192.168.59.103:27017", priority:3}, {_id:2, host:"192.168.59.104:27017", priority:2}]}
激活配置
>rs.initiate(config)
登录
mongo-secondary1 和 mongo-secondary2

5、验证
关闭mongo-primary
#docker stop mongo-primary
192.168.59.103被选举为新的primary
重新启动mongo-primary后
#docker stop mongo-primary
192.168.59.102恢复primary,192.168.59.103恢复secondary
数据验证:
在192.168.59.102上新建数据数据库,192.168.59.103和192.168.59.104都会自动创建数据库
在192.168.59.102上数据库中插入一条数据,192.168.59.103和192.168.59.104都会自动插入同样的数据
模拟关闭192.168.59.102,192.168.59.103被选举为新的主,在192.168.59.103上数据库中插入一条数据,192.168.59.104都会自动插入同样的数据
模拟重启192.168.59.102,192.168.59.102恢复为的主,2同步到关闭时间内在192.168.59.103为主的时间插入的数据(三台服务器数据一样),192.168.59.103恢复为从
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了