调整自管理副本集成员的 Oplog 大小

警告

不能删除 local.oplog.rs 集合。关于这一限制,详见“Oplog 集合行为”。

本流程使用 replSetResizeOplog 命令调整副本集各成员的 oplog 大小。应先处理从节点,再处理主节点。

首先,对每个从节点依次执行以下步骤。修改完所有从节点的 oplog 大小之后,再对主节点执行这些步骤。

使用 mongosh 连接副本集成员:

mongosh --host <hostname>:<port>

说明

如果副本集启用了身份验证,必须以具有修改 local 数据库权限的用户登录,例如具有 clusterManager 或 clusterAdmin 角色的用户。

若要查看当前 oplog 的大小,切换到 local 数据库,对 oplog.rs 集合运行 db.collection.stats()。stats() 输出中的 maxSize 表示 oplog 大小。

use localdb.oplog.rs.stats(maxSize

maxSize 字段以字节为单位显示集合大小。

使用 replSetResizeOplog 命令调整 oplog 大小。大小参数必须是 double,且大于 990 MB。在 mongosh 中,可以使用 Double() 构造函数显式转换该值。

以下操作将该副本集成员的 oplog 大小修改为 16 GB,也就是 16000 MB。

db.adminCommand(replSetResizeOplog: 1, size: Double(16000)})
[1]

为避免删除多数提交点,oplog 可能增长到超过配置的大小上限。

减小 oplog 的大小不会自动回收原 oplog 占用的磁盘空间。需要对 local 数据库中的 oplog.rs 集合运行 compact,才能回收空间。增大 oplog 之后,对 oplog.rs 运行 compact 没有收益。

重要

对 oplog.rs 执行 compact 时会阻止 oplog 同步,因此该副本集成员在操作期间无法复制 oplog 条目。必须在维护窗口内安排这项操作;在该窗口内无法进行 oplog 复制。

不要直接在主节点上执行 compact。应使用 mongo shell 直接连接主节点,而不是连接整个副本集,然后执行 rs.stepDown()。如果成功,主节点会降级为从节点。接着通过该 shell,在已经成为从节点的成员上执行 compact。

以下操作对 oplog.rs 集合执行 compact:

use localdb.runCommand("compact" "oplog.rs" } )

对于启用身份验证的集群,应以具有 local 数据库和 oplog.rs 集合的 compact 权限操作的用户登录。完整的身份验证要求见“compact 所需权限”。


原文:Change the Oplog Size of Self-Managed Replica Set Members。作者/来源:MongoDB 文档团队。本文依据所列原文整理为中文,代码、命令与配置示例保留原文。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容