资讯专栏INFORMATION COLUMN

MongoDB副本集配置

MartinHan / 2405人阅读

摘要:我们可以在添加节点时指定优先级,如下也可以为已有的节点设置优先级好了,中副本集的配置我们就先说到这里,小伙伴们有问题欢迎留言讨论。

上篇文章我们搭建了MongoDB副本集的环境,验证了数据已经可以成功的复制,本文我们就来看看MongoDB副本集的其他操作。

本文是MongoDB系列的第十六篇文章,了解前面的文章有助于更好的理解本文:


1.Linux上安装MongoDB
2.MongoDB基本操作
3.MongoDB数据类型
4.MongoDB文档更新操作
5.MongoDB文档查询操作(一)
6.MongoDB文档查询操作(二)
7.MongoDB文档查询操作(三)
8.MongoDB查看执行计划
9.初识MongoDB中的索引
10.MongoDB中各种类型的索引
11.MongoDB固定集合
12.MongoDB管道操作符(一)
13.MongoDB管道操作符(二)
14.MongoDB中MapReduce使用
15.MongoDB副本集搭建


环境准备

三台服务器,地址分别是:

192.168.248.128
192.168.248.135
192.168.248.136

按照上文介绍的步骤搭建副本集环境,这里不再赘述。

副本集成员添加删除

在副本集环境搭建好之后,我们可以利用如下命令删除一个副本集成员:

rs.remove("192.168.248.128:27017")

上面的命令执行完成后,我们可以通过rs.status()命令来查看是否删除成功,也可以通过如下命令来为副本集添加一个成员:

rs.add("192.168.248.128:27017")

当然,副本集也是可以更新的,使用reconfig命令即可,如下:

首先定义config,如下:

config={_id:"rs",members:[{_id:3,host:"192.168.248.128"},{_id:1,host:"192.168.248.135"}]}

然后执行更新操作:

rs.reconfig(config)

我们也可以利用config=rs.config()获取原始的config文件,然后进行修改,修改之后再执行 rs.reconfig(config),如下:

config=rs.config()
config.members[0].host="192.168.248.136"
rs.reconfig(config)
选举仲裁者

在上文中给小伙伴们演示了主节点挂掉后的情况,和其他的(如Redis)数据库主从复制不同,MongoDB中主节点挂掉之后会自动从备份节点中选出一个新的主节点出来,这是一个选举的过程,投票选举,但是如果备份节点数为偶数的话,可能会出现两台服务器票数相等的情况,为了避免这种问题的出现,我们一般有两种解决方案:

1.数据节点为奇数个,这样就会避免上面描述的问题出现。
2.使用选举仲裁者,这是一种特殊的成员,仲裁者不保存数据,也不为客户端提供服务,只是在选举投票出现僵持时出来投个票,一个副本集中最多只能有一个仲裁者。

选举仲裁者占用的系统资源很小,因此对部署的服务器性能没多大要求,向副本集中添加仲裁者的方式如下:

rs.addArb("192.168.248.128:27017")

也可以利用我们之前说的reconfig来操作:

config=rs.config()
config.members[2]={_id:2,host:"192.168.248.128",arbiterOnly:true}
rs.reconfig(config)

添加完成之后,我们可以通过rs.status()命令来查看是否添加成功,如果看到如下内容,表示添加成功:

{
"_id" : 2,
"name" : "192.168.248.128:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 2,
"lastHeartbeat" : ISODate("2017-11-03T08:56:12.406Z"),
"lastHeartbeatRecv" : ISODate("2017-11-03T08:56:08.417Z"),
"pingMs" : NumberLong(1),
"configVersion" : 8
}

仲裁者的移除和普通节点的移除是一样的,这里不再赘述。

优先级问题

优先级用来描述一个备份节点成为主节点的优先性问题,优先级的取值范围为[0-100],默认为1,数字越大优先级越高,越有可能成为主节点,0表示该节点永远不能成为主节点。
我们可以在添加节点时指定优先级,如下:

rs.add({_id:0,host:"192.168.248.128:27017",priority:2})

也可以为已有的节点设置优先级:

config=rs.config()
config.members[0].priority=99
rs.reconfig(config)

好了,MongoDB中副本集的配置我们就先说到这里,小伙伴们有问题欢迎留言讨论。

参考资料:

1.《MongoDB权威指南第2版》

更多资料请关注公众号:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19146.html

相关文章

  • 【云数据库 MySQL UDB】什么是UDB?产品功能,规格版本和使用限制

    摘要:版本目前支持和,用户可以根据需求选择相应的云数据库版本。硬盘云数据库的硬盘大小。云数据库提供自动备份和手动备份两种方式,防止数据丢失,避免误操作带来的风险。日志日志是用于记录云数据库操作事件的记录文件。什么是云数据库MongoDB?云数据库简介: 云数据库MongoDB是基于成熟云计算技术的高可用、高性能的数据库服务,完全兼容MongoDB 协议,支持灵活部署,除副本集实例架构外,云数据库...

    Tecode 评论0 收藏0
  • MongoDB副本搭建

    摘要:下一小节我会和大家分享如何在真实的生产环境中创建副本集。好了,中副本集的搭建我们就先说到这里,小伙伴们有问题欢迎留言讨论。 我们之前的案例都是在单个节点上实现的,在生产环境中这种做法是有风险的,如果服务宕机、崩溃或者硬盘坏了都会对公司业务造成损失,因此我们需要数据备份。在MongoDB中我们可以通过副本集来实现这一需求,MongoDB副本集(Replica Set)是有自动故障恢复功能...

    RayKr 评论0 收藏0
  • 搭建 MongoDB分片(sharding) / 分区 / 群环境

    摘要:搭建分片分区集群环境安装三台机器关闭防火墙主节点副节点仲裁仲裁主节点副节点副节点仲裁主节点端口分配下载并且安装所有版本二进制文件自行下载改名分别在每台机器建立六个目录,因为不存储数据,只需要建立日志文件目录即可。 搭建 MongoDB分片(sharding) / 分区 / 集群环境 1. 安装 MongoDB 三台机器 关闭防火墙 systemctl stop firewalld.se...

    KunMinX 评论0 收藏0
  • 深入浅出MongoDB 复制

    摘要:申明本文由笔者首发于深入浅出复制中文社区深入浅出复制由于自己开了,所以将之前比较好的文章挪过来便于大家浏览。新增由于网络问题导致失败重试机制。 申明 本文由笔者首发于InfoQ:《深入浅出MongoDB复制》MongoDB中文社区:《深入浅出MongoDB复制》 由于自己开了blog,所以将之前比较好的文章挪过来便于大家浏览。 综述 笔者最近在生产环境中遇到许多复制相关问题,查阅网上资...

    Jacendfeng 评论0 收藏0
  • MongDB 数据库副本配置

    摘要:登陆丛机此时,丛机已经在副本集群中了,进行最后一个操作这样在主机上的操作就会同步到从机上了。 本文目的 为了在各个MongDB之间实现多节点之间的数据自动备份,提高容灾性能。MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。mongodb的复制至少需要两个节点。其中一个是主节点,负责处理...

    jubincn 评论0 收藏0

发表评论

0条评论

MartinHan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<