改变 Oplog 的大小

WARNING

在 MongoDB 3.4 及更早版本中,oplog 通过删除和重新创建local.oplog.rs集合来调整大小。

在 MongoDB 3.6 及更高版本中,使用 replSetResizeOplog命令调整 oplog 的大小,如本教程所示。

从 MongoDB 4.0 开始,MongoDB 禁止删除 local.oplog.rs集合。有关此限制的更多信息,请参阅Oplog Collection Behavior 。

此过程使用命令更改副本集每个节点上的 oplog [ 1 ]replSetResizeOplog的大小,从从节点开始,然后再继续到 主节点。

首先对每个辅助副本集成员 执行这些步骤。更改所有次要成员的 oplog 大小后,对主要成员执行这些步骤

A.连接到副本集节点

使用连接到副本集节点'mongosh`:

mongosh --host <hostname>:<port>

NOTE

如果副本集强制执行身份验证,则必须以具有修改数据库权限的用户身份进行身份验证 local,例如clusterManagerclusterAdmin角色。

B.(可选)验证oplog的当前大小

要查看 oplog 的当前大小,请切换到local 数据库并db.collection.stats()针对 oplog.rs集合运行。stats()将 oplog 大小显示为maxSize.

use local
db.oplog.rs.stats().maxSize

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

C. 改变副本集节点的oplog大小

使用命令调整 oplog 的大小replSetResizeOplog。是双精度 size值,必须大于990兆字节。size显式地投射 oplogmongosh, 使用 Double()构造函数。

以下操作将副本集节点的 oplog 大小更改为 16 GB,即 16000 MB。

db.adminCommand({replSetResizeOplog: 1, size: Double(16000)})
[ 1 ] oplog 可以增长到超过其配置的大小限制以避免删除majority commit point.

D.(可选)压缩oplog.rs以回收磁盘空间

减小 oplog 的大小不会自动回收分配给原始 oplog 大小的磁盘空间。您必须 compact针对数据库中的oplog.rs集合 运行local以回收磁盘空间。增加 oplog 大小后compact在集合上运行没有任何好处。oplog.rs

IMPORTANT

从 MongoDB v4.4 开始,副本集成员可以在compact操作进行时复制 oplog 条目。以前,oplog 复制会在压缩期间暂停。因此,建议仅在维护窗口期间执行 oplog 压缩,此时可以最小化或停止写入。在 MongoDB 4.4 及更高版本中,不再需要将 oplog 上的压缩操作限制在维护窗口,因为 oplog 复制可以在压缩期间正常继续。

不要针对主要副本集节点运行。**compactmongoshell 直接连接到主节点(而不是副本集)并运行rs.stepDown(). 如果成功,则主要步骤会下降。在mongoshell 中,compact在现在的从节点上运行命令。

以下操作compact针对 oplog.rs集合运行命令:

use local
db.runCommand({ "compact" : "oplog.rs" } )

对于强制执行身份验证的集群,以对数据库和集合具有compact特权操作的用户身份进行身份验证。有关身份验证要求的完整文档,请参阅Required Privileges local``oplog.rscompactcompact

副本集维护教程对副本集成员执行维护

原文链接 - https://docs.mongodb.com/manual/tutorial/change-oplog-size/

译者:陆文龙

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""