返回顶部
首页 > 资讯 > 数据库 >MongoDB复制集部署和基本管理
  • 296
分享到

MongoDB复制集部署和基本管理

2024-04-02 19:04:59 296人浏览 薄情痞子
摘要

mongoDB复制集部署和基本管理 MonGoDB复制集概述 复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据的可用性,通过复制集可以对硬件故障

mongoDB复制集部署和基本管理

MonGoDB复制集概述

复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据的可用性,通过复制集可以对硬件故障和中断服务进行恢复。

复制集由下列优点:

  • 让数据更安全
  • 高数据可用性(7*24)
  • 灾难恢复
  • 无停机维护(如备份、索引重建、故障转移)
  • 读缩放(额外的副本读取)
  • 副本集对应用程序是透明的

    复制集工作原理

    MongoDB的复制集至少需要两个节点。其中一个节点是主节点(Primary),负责处理客户端的请求,其余的都是从节点(Serondary),负责复制主节点上的数据。

MongoDB各个节点常见的搭配方式为:一主一从或者一主多从。主节点记录所有打操作到oplog中,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作。从而保证从节点的数据与主节点一致。如下图所示:

客户端在主节点写入数据,在主节点写入数据,主节点与从节点进行数据交互保证数据的一致性。如果其中一个节点出现故障,其他节点马上会将业务接过来,无需停机操作。

MongoDB复制集部署

配置多个实例

在上一篇的博客中已经讲解了MongoDB开启多实例的方法,这里就不多赘述,我们用相同的方法创建了四个MongoDB实例。在启动四个实例前,先要修改每个实例的配置文件,配置replSet参数值都为同一个值,这个值作为复制集的名称,具体操作如下:

[root@localhost ~]# vim /usr/local/mongodb/bin/mongodb1.conf 
port=27017
dbpath=/data/mongodb1
logpath=/data/logs/mongodb/mongodb1.log
logappend=true
fork=true
maxConns=5000
replSet=kGCrs                     #配置复制集的名称

在其他的三个实例的配置文件中最后一行,加上相同的一句代码就行。开启四个实例进程。

[root@localhost ~]# export PATH=$PATH:/usr/local/mongodb/bin/
#由于之前重启过,重新设置环境变量
[root@localhost ~]# mongod -f /usr/local/mongodb/bin/mongodb1.conf
#开启端口号为27017的实例进程
2018-07-17T10:33:29.835+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
about to fork child process, waiting until server is ready for connections.
forked process: 3751
child process started successfully, parent exiting
初始化配置并启动复制集

启动完4个MongoDB实例后,下面介绍如何配置并启动MongoDB复制集。这里先配置包含3个节点的复制集(后面会再进行添加最后一个实例),Primary代表主节点。Secondary代表从节点

[root@localhost bin]# mongod -f /usr/local/mongodb/bin/mongodb2.conf --smallfiles
about to fork child process, waiting until server is ready for connections.
forked process: 20207
child process started successfully, parent exiting
[root@localhost bin]# mongod -f /usr/local/mongodb/bin/mongodb3.conf --smallfiles
about to fork child process, waiting until server is ready for connections.
forked process: 20230
child process started successfully, parent exiting
[root@localhost bin]# mongod -f /usr/local/mongodb/bin/mongodb4.conf --smallfiles
about to fork child process, waiting until server is ready for connections.
forked process: 20253
child process started successfully, parent exiting

可以看到四个实例都已经启动成功,对应的端口号都已经打开。然后进入到端口号为27017端口号的实例中。
MongoDB复制集部署和基本管理

[root@localhost bin]# mongo   #默认就是端口号为27017的实例
> cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.100.201:27017"},{"_id":1,"host":"192.168.100.201:27018"},{"_id":2,"host":"192.168.100.201:27019"}]}
#这句代码的意思就是向kgcrs的复制集中添加三个成员
> rs.initiate(cfg)
{ "ok" : 1 }
#对复制集进行初始化启动复制集,启动复制集后,可以通过rs.status()查看复制集的完整信息。

MongoDB复制集部署和基本管理
MongoDB复制集部署和基本管理
MongoDB复制集部署和基本管理
MongoDB复制集部署和基本管理

增加和删除节点

配置启动复制集后,还可以通过rs.add()和rs.remove()命令方便地添加和删除节点。

kgcrs:PRIMARY> rs.add("192.168.100.201:27020")
{ "ok" : 1 }
#可以看到27020端口的实例添加成功
kgcrs:PRIMARY> rs.remove("192.168.100.201:27019")
{ "ok" : 1 }
#可以看到27019端口的实例被删除了
MongoDB复制集切换

1、模拟故障自动切换

通过kill命令可以停止复制集的当前节点,然后查看主节点会自动切换到其他节点上,可以看到当前端口为27017的实例为主节点。
MongoDB复制集部署和基本管理

[root@localhost bin]# netstat -ntap| grep mongo
tcp        0      0 0.0.0.0:27019           0.0.0.0:*               LISTEN      20230/mongod        
tcp        0      0 0.0.0.0:27020           0.0.0.0:*               LISTEN      20253/mongod        
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      20055/mongod        
tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      20207/mongod 
[root@localhost bin]# kill -9 20055 #kill掉27017端口的进程
kgcrs:SECONDARY> rs.status()
#可以看到现在的主节点是端口为27019的实例

MongoDB复制集部署和基本管理
2、手动进行主从切换

首先要先进入到主节点的实例中,只有主节点才有权限进行主从节点切换。

[root@localhost bin]# mongo --port 27019
kgcrs:PRIMARY> rs.freeze(30)   #暂停30s不参加选举
{ "ok" : 1 }
kgcrs:PRIMARY> rs.stepDown(60,30)  #告诉主节点交出主节点位置,然后维持从节点状态不少于60s,同时等待30s以使主节点和从节点日志同步,再次查看状态,发现主节点已经切换到另外一个实例中。
2018-07-18T15:52:53.254+0800 I NETWORK  [thread1] trying reconnect to 127.0.0.1:27019 (127.0.0.1) failed
2018-07-18T15:52:53.256+0800 I NETWORK  [thread1] reconnect 127.0.0.1:27019 (127.0.0.1) ok
kgcrs:SECONDARY> rs.status()

MongoDB复制集部署和基本管理

复制集的选举原理

复制的原理

复制是基于操作日志oplog,相当于Mysql中的二进制日志,只记录发生改变的记录。复制是将主机点的oplog日志同步并应用到其他从节点的过程

选举的原理

节点类型分为标准(host)节点,被动(passive)节点和仲裁(abriter)节点。

(1)只有标准节点可能被选举为活跃(primary)节点,由选举权。被动节点有完整副本,不可能成为活跃节点,有选举权。仲裁节点不复制数据,不可能成为活跃节点,只有选举权。

(2)标准节点与被动节点的区别:priority值高者是标准节点,低者则成为被动节点。

(3)选举规则是票数高者获胜,priority是优先权为0到1000的值,相当于额外增加0到1000的票数。选举结果:票数高者获胜;若票数相同,数据新者获胜。

配置复制集的优先级

重新配置4个节点的MongoDB复制集,设置两个标准节点,哟个被动节点和一个仲裁节点。这个设置要在主节点上配置。

kgcrs:PRIMARY> > cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.58.131:27017","priority":100},{"_id":1,"host":"192.168.58.131:27018","priority":100},{"_id":2,"host":"192.168.58.131:27019","priority":0},{"_id":3,"host":"192.168.58.131:27020","arbiterOnly":true}]}
#这句代码分别设置了四个实例的属性,优先级
kgcrs:PRIMARY> rs.reconfig(cfg)
{ "ok":1 }

可以看到现在端口27018的实例,现在是主节点。
MongoDB复制集部署和基本管理

模拟主节点故障

如果主节点出现故障,另外一个标准节点将会被选举为新的主节点。

[root@promote ~]# mongod -f /usr/local/mongodb/bin/mongodb2.conf --shutdown
2018-07-22T09:20:02.706+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
killing process with pid: 9639
kgcrs:PRIMARY> rs.isMaster()

MongoDB复制集部署和基本管理
可以看到27017端口的实例已经成为主节点。

模拟所有标准节点都出现故障

如果所有标准节点出现故障,被动节点和仲裁节点都不能成为主节点。

[root@promote ~]# mongod -f /usr/local/mongodb/bin/mongodb1.conf --shutdown
2018-07-22T09:24:08.290+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
killing process with pid: 9740
kgcrs:SECONDARY> rs.isMaster()

MongoDB复制集部署和基本管理

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB复制集部署和基本管理

本文链接: https://lsjlt.com/news/42053.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MongoDB复制集部署和基本管理
    MongoDB复制集部署和基本管理 MongoDB复制集概述 复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据的可用性,通过复制集可以对硬件故障...
    99+
    2024-04-02
  • mongodb复制集部署
    部署复制集由三个节点组成的 复制集 为网络故障或是其他的系统故障提供了足够的冗余。该复制集也有足够的分布式读操作的能力。复制集应该保持奇数个节点,这也就保证了 选举 可以正常的进行用3台已有的 mongod...
    99+
    2024-04-02
  • mongodb主从复制及副本集的部署
    一.mongodb配置参数介绍:[root@host11 tmp]# cat  /etc/mongod.conf #以守护进程的方式运行fork=true#设置db的路径dbpath=/...
    99+
    2024-04-02
  • MongoDB复制集管理(后续)
    简介:复制集:1:标准节点:参与primary选举2:被动节点:只能成为secend,不参与选举3:仲裁节点:负责投票选举,不存放数据 实验环境:2台标准节点 1台被动节点 1台仲裁点具体实验步骤:(前半...
    99+
    2024-04-02
  • MongoDB 带访问控制的副本集部署
      当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成。       版本及环境 MongoDB4.4  Centos6.5    一. 下载安装 MongoDB Server 及 MongoDB S...
    99+
    2021-11-22
    MongoDB 带访问控制的副本集部署
  • 大数据 MongoDB 复制集管理
    MongoDB 复制集 MongoDB复制是将数据同步在多个服务器的过程。 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。 复制还允许您从硬...
    99+
    2024-04-02
  • MongoDB复制集选举原理管理
    MongoDB 复制集概述 复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了沉余添加了数据可用性,通过个复制集可以对硬件故障中断的服务进行恢复 复制集的优势如下: 让数据更安全。 高...
    99+
    2024-04-02
  • MongoDB访问控制的副本集如何部署
    这篇文章主要介绍了MongoDB访问控制的副本集如何部署的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MongoDB访问控制的副本集如何部署文章都会有所收获,下面我们一起来看看吧。版本及环境 MongoDB4....
    99+
    2023-06-29
  • 部署MongoDB复制集(主从复制、读写分离、高可用)
    MongoDB 复制集 复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余备份并提高了数据的可用性,通过复制集可以对硬件故障和中断的服务进行恢复。 Mon...
    99+
    2024-04-02
  • MongoDB复制选举原理以及复制集的管理
    MongoDB复制集的节点是通过选举产生主节点的。复制的原理:复制是基于操作日志oplog,相当于MySQL的二进制日志,只记录发生改变的记录。复制将主节点的oplog日志同步并应用到其他从节点的过程选举的...
    99+
    2024-04-02
  • 如何使用 Docker 部署和管理 MongoDB?
    简介 MongoDB 是一种流行的开源 NoSQL 数据库,旨在存储和管理非结构化数据。它为现代应用程序提供高性能、可扩展性和灵活性。 另一方面,Docker 是一个容器化平台,使开发人员能够将其应用程序和依赖项打包到可在不同环境中一致运行...
    99+
    2023-10-22
  • MongoDB复制集的选举原理详解以及复制集管理简介
    前言介绍复制的原理:复制操作是基于oplog,类似mysql中的bin-log,只记录发生改变的记录。选举的原理:节点分为:标准节点、被动节点和仲裁节点。标准节点(priority值高):只有标准节点才可成...
    99+
    2024-04-02
  • mongodb replica set 副本集 安装部署(三)
    1.节点类型         简单的说副本集(replica set)就是有自动故障恢复功能的主从集群,主从集群和副本集最为明...
    99+
    2024-04-02
  • MongoDB为何要部署单机副本集
    部署单机副本集最终目的:以后扩展的时候也好进行扩展。在不用停机的情况下,进行添加节点。添加用户组groupadd -g 355 mongodb     &n...
    99+
    2024-04-02
  • 聊聊MongoDB 带访问控制的副本集部署问题
    目录一、下载MongoDBServer及MongoDBShell二、副本集初始化三、增加访问控制  当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简...
    99+
    2024-04-02
  • MongoDB 副本集原理及管理
    MongoDB副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主节点(primary)和多个备节点(Secondary)组成。通过Repication,将数据的更新由primary...
    99+
    2024-04-02
  • 集群服务器怎么部署和管理
    集群服务器的部署和管理需要以下步骤:1. 选择合适的集群管理软件:如Hadoop、Kubernetes、OpenStack等。2. ...
    99+
    2023-06-11
    集群服务器 服务器
  • MongoDB中怎么管理副本集
    这期内容当中小编将会给大家带来有关MongoDB中怎么管理副本集,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1)诊断副本集中的机器,可以...
    99+
    2024-04-02
  • [MongoDB] 复制策略 - Replica Set 副本集
    ...
    99+
    2024-04-02
  • 如何部署MySQL复制拓扑管理工具Orchestrator
    这期内容当中小编将会给大家带来有关如何部署MySQL复制拓扑管理工具Orchestrator,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。今天主要介绍一下如何部署MySQ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作