基于docker的MongoDB复制(副本集)
2021/4/27 19:27:15
本文主要是介绍基于docker的MongoDB复制(副本集),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MongoDB复制(副本集)
MongoDB复制是将数据同步在多个服务器的过程。
复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。
复制还允许您从硬件故障和服务中断中恢复数据。
什么是复制?
- 保障数据的安全性
- 数据高可用性 (24*7)
- 灾难恢复
- 无需停机维护(如备份,重建索引,压缩)
- 分布式读取数据
MongoDB复制原理
mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
mongodb各个节点常见的搭配方式为:一主一从、一主多从。
我们采用 一主一从一仲裁者模式。
主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
MongoDB复制结构图如下所示:
MongoDB副本集设置
-
准备三台服务器(linux docker环境)
地址 角色 192.168.1.1 Primary 192.168.1.2 Secondary 192.168.1.3 Arbiter -
分别创建MongoDB
docker run --name mongodb_test -p 27017:27017 -v /mountdir/mongodb_test/configdb:/data/configdb/ -v /mountdir/mongodb_test/db/:/data/db/ -d mongo:4.4 --replSet "rs0"
-
进入MongoDB所在容器
docker exec -it mongodb_test /bin/bash
-
进入mongodb shell
mongo
-
初始化副本集
var config={_id:"rs0",members:[{_id:0,host:"192.168.1.1:27017"},{_id:1,host:"192.168.1.2:27017"}, {_id:2,host:"192.168.1.3:27017",arbiterOnly:true}]}; rs.initiate(config);
-
可能用到的命令
##查看副本集状态 rs.status(); ##向副本集添加成员 rs.add("host:port"); ##移除副本集成员 rs.remove("host:port");
更多副本集相关操作,请参考官方文档
-
注意事项:
初始化副本集前,请确保,mongodb版本是一致的,并且彼此间网络互通。
C#使用副本集
连接串直接配置Primary和Secondary格式如下:
mongodb://[host1]:[prot1],[host2]:[prot2] mongodb://192.168.1.1:27017,192.168.1.2:27017
这篇关于基于docker的MongoDB复制(副本集)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19Docker-Compose容器集群化项目实战:新手入门指南
- 2024-11-19Docker镜像仓库项目实战:新手入门教程
- 2024-11-19Docker容器化部署项目实战:新手入门教程
- 2024-11-19Docker-Compose容器集群化资料入门教程
- 2024-11-19Docker镜像仓库资料详解:新手入门教程
- 2024-11-19Docker容器化部署资料:新手入门指南
- 2024-11-19Docker-Compose容器集群化教程:从入门到实践
- 2024-11-19Docker镜像仓库教程:新手入门指南
- 2024-11-19Docker容器化部署教程:初学者指南
- 2024-11-18Docker-Compose容器集群化入门教程