MongoDB副本集群

目录

一.副本集概述

副本集的功能:

二.副本集成员

1.主结点

2.副本结点

3.仲裁结点

三.部署副本集

1.安装副本集

2.启动副本集

 3.关闭防火墙

 4.副本集初始化

 5.添加副本集

 6.查看副本集成员状态

一.副本集概述
副本集的功能:
(1)数据冗余:副本集可以确保副本结点与主结点数据的更新,以防止单个数据库的服务宕机造成数据丢失的问题。这些副本结点可以和主结点位于同一个数据中心或处于安全考虑分布于其他数据中心

(2)自动故障转移:副本集没有固定的主结点,整个集群会选举出一个主结点,当这个主结点不会正常工作时,会选举一个副本结点切换为主结点,客户端会连接到这个新的主结点,并且数据和应用程序都将保持可用。MongoDB副本集实现这样的主/副本切换是自动的,因此副本集是保证MongoDB高可用的基础。

(3)读写分离:副本集可以将读取请求分流到所有副本集上,以减轻主结点的读写压力。

二.副本集成员
1.主结点
主结点是副本集中负责处理客户端请求和读写数据的主要成员。主节点通过iplog(操作日志)记录所有操作。副本集中有且只有一个主结点,如果当主结点不可用时,则会从副本结点中选举出新的主结点。

2.副本结点
副本结点定期轮询主结点来获取oplog记录的操作内容,然后对自己的数据副本执行这些操作,从而保证副本结点的数据副本与主结点保持一致。副本集中可以有一个或者多个副本结点。当主结点宕机时,副本集会根据副本结点的优先级进行选举,确定哪个副本结点成为新的主结点。

3.仲裁结点
仲裁结点不会同步主结点的数据副本,也不会被选举为主结点,它主要时参与选举投票。由于仲裁结点没有访问压力,比较空闲,因此仲裁结点需要的资源很小。 

三.部署副本集
开展副本集之前首先规划各服务器的基本信息以及角色分配

                           

1.安装副本集

创建一个虚拟机之后, 可以通过克隆的方式进行克隆另外两台虚拟机,也可以直接创建另外两台台虚拟机,还可以通过复制已经创建好的虚拟机文件。三个虚拟机安装好之后,打开配置文件,修改三台centos的ip地址。如果通过克隆或者复制的方式需要修改hostname

在linux下安装MongoDB,可以看下面这一篇博客

https://blog.csdn.net/m0_57979544/article/details/124329983?spm=1001.2014.3001.5501 

上面链接的mongod.conf配置文件需要修改一下:

2.启动副本集

分别在3台服务器nosql01,nosql02,nosql03的/opt/servers/mongodb/mongodb-4.2/bin目录下以副本集模式启动MongoDB,这里以nosql01为例进行操作

分别在三台服务器上面输入如上命令: 

3.关闭防火墙

4.副本集初始化

在哪一台服务器上面进行初始化,哪一台服务器就是主结点。本次时nosql01为主结点,所以需要在nosql01这里进行初始化

5.添加副本集

 rs.add("192.168.47.131:27017")

rs.add("192.168.47.133:27017")

出现以上{ok:1}表明加入成功

在nosql02和nosql03中输入下图的命令:显示secondary

6.查看副本集成员状态

命令:

rs.status()

  • 46
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要创建一个MongoDB副本集群,你可以使用Docker来运行多个MongoDB容器。下面是一些步骤: 1. 首先,确保你已经安装了Docker和Docker Compose。 2. 创建一个新的目录,并在该目录下创建一个名为`docker-compose.yml`的文件。 3. 在`docker-compose.yml`文件中定义三个MongoDB容器,分别命名为`mongo1`、`mongo2`和`mongo3`。你可以使用以下配置作为参考: ``` version: '3' services: mongo1: image: mongo restart: always ports: - 27017:27017 volumes: - ./data/db1:/data/db command: --replSet rs0 mongo2: image: mongo restart: always ports: - 27018:27017 volumes: - ./data/db2:/data/db command: --replSet rs0 mongo3: image: mongo restart: always ports: - 27019:27017 volumes: - ./data/db3:/data/db command: --replSet rs0 ``` 4. 在每个MongoDB容器中,我们使用`--replSet rs0`参数来指定副本集的名称为`rs0`。此外,我们还将每个容器的数据文件夹挂载到主机上的不同目录中,以便数据持久化。 5. 在终端中,切换到包含`docker-compose.yml`文件的目录,并运行以下命令来启动副本集群: ``` docker-compose up -d ``` 这将启动三个MongoDB容器,并将它们连接到一个名为`rs0`的副本集群。 6. 进入其中一个MongoDB容器中,可以使用以下命令: ``` docker exec -it <container_name> bash ``` 在容器内部,使用以下命令来初始化副本集群: ``` mongo rs.initiate() ``` 7. 接下来,你可以添加其他的MongoDB节点到副本集群中。在容器内部,使用以下命令将其他节点添加到副本集群: ``` rs.add("<hostname>:<port>") ``` 其中`<hostname>`是其他MongoDB容器的主机名,`<port>`是该容器上MongoDB实例的端口号。 这样,你就创建了一个基于Docker的MongoDB副本集群。你可以通过连接到其中一个容器并使用MongoDB客户端来访问和管理该集群。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值