MongoDB 副本集成员


MongoDB 的副本集是一组提供冗余和高可用性的 mongod 进程。一个副本集的成员有:

  • 主节点

    主节点接受所有的写操作

  • 从节点

    从节点通过复制主节点的操作来维护一个相同的数据集。从节点为特殊用途的配置文件提供了额外的配置项。例如,从节点可配置成无投票权 或 0 优先级

副本集的最小推荐配置是一个包含三个数据承载成员的三成员副本集:一个主节点 和两个从节点。在某些情况下(例如你有一个主节点和一个从节点,但由于成本约束无法添加另一个从节点),你可以选择使用一个仲裁节点。仲裁节点参与选举但不持有数据(即不提供数据冗余)

一个副本集最多可以有50个成员,但仅能有7个可投票成员

在这里插入图片描述

主节点

副本集的主节点是唯一一个可以接受写操作的成员。MongoDB在主节点 上应用写操作,然后将这些操作记录到主节点的 oplog 中。从节点成员复制这个日志然后应用到它们的数据集中
在下图的三成员副本集中,主节点接受所有写操作。然后从节点复制oplog应用至它们的数据集中。
在这里插入图片描述

副本集所有的成员都可以接受读操作。但是,默认情况下,应用程序会将其读操作定向至主节点

从节点

一个从节点维护了主节点数据集的一个副本。为了复制数据,从节点通过异步的方式将主节点oplog 应用至自己的数据集中。一个副本集可以有一个或多个从节点
虽然客户端不能将数据写入到从节点,但客户端可以由从节点读取数据
您可以出于特殊目的来配置从节点成员。您可以配置一个从节点用于:

  • 阻止它在选举中成为主节点,适用于将该节点部署在备用数据中心或者充当一个冷备节点。请查考0优先级副本集成员
  • 防止应用程序从它读取数据,适用于在该节点上运行需要与正常流量分离的应用程序。请参考隐藏副本集成员
  • 保持一个运行的“历史”快照,以便在从某些错误(如无意中删除的数据库)恢复时使用。请参考延迟副本集成员

从4.2版本开始(从4.0.6也支持),副本集的副本成员会记录oplog中应用时间超过慢操作阈值的慢操作条目。这些慢 oplog 信息被记录在从节点的诊断日志 中,其路径位于REPL 组件的文本 applied op: took ms中。这些慢日志条目仅仅依赖于慢操作阈值。它们不依赖于日志级别(无论是系统还是组件级别)、过滤级别,或者慢操作采样比例。过滤器不会捕获慢日志条目

仲裁节点

在某些情况下(例如有一个主节点和一个从节点,但由于成本约束无法添加另一个从节点),你可以在副本集中添加一个仲裁节点。仲裁节点没有数据集的副本,并且不能成为主节点。然而,仲裁节点可以参与主节点选举。一个仲裁节点只有 1 票选举权。
3.6版本的变化:从MongoDB 3.6版本开始,仲裁节点优先级为0。当您升级一个副本集至3.6版本时,如果当前配置中有一个优先级为1的仲裁节点,则MongoDB 3.6会将仲裁节点的优先级重新配置为0。
注意
不要在同时承载副本集的主节点或副本成员的系统上运行仲裁节点。

关于仲裁节点

仲裁节点本身就是 mongod 实例,只不过不维护数据集,作用就是通过响应其他副本集成员的心跳和选举请求来维护副本集中的仲裁,因为不维护数据集,其资源成本比具有数据集的全功能副本成员更便宜,也更轻量。
如果你的副本集是偶数个成员,就可以添加仲裁节点,使选举过程中,投票不会出现平局的情况,仲裁节点永远是仲裁节点,而主节点可能变为次要节点,次要节点也可能会变为主节点
如果你的副本+主节点的个数是奇数,可以不加仲裁节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值