バックグラウンド
oplog是MongoDB数据库的操作日志,记录了MongoDB数据库的所有写操作,类似MySQL数据库的binlog日志。在MongoDB副本集中,oplog从主节点被复制到次级节点,通过次级节点对日志进行重做,实现次级节点与主节点数据一致。oplog日志保存在local.oplog.rs集合中。
フロントリンクに書き込む
摘自https://www.cnblogs.com/lijiaman/p/13215564.html
oplogのサイズを変更する
oplog大小修改根据数据库版本,有2种不同的方法:
MongoDB 3.4以前のバージョンでは、local.oplog.rsコレクションを直接削除して再構築し、操作ログのサイズを調整します。
MongoDB 3.6以降のバージョンでは、replSetResizeOplogコマンドを使用して操作ログのサイズを調整します。
从MongoDB 4.0开始,MongoDB禁止删除local.oplog.rs集合,所以只能用replSetResizeOplog来修改oplog的大小了。
これは、MongoDB 4.2バージョンでoplogのサイズを変更し、最初にセカンダリノードで操作ログのサイズを変更し、最後にホストポイントで変更するデモです。
具体的な手順は次のとおりです。
1.レプリカセットメンバーに接続します
mongo --authenticationDatabase admin -u replica -p replica
2. [オプション] oplogのサイズを確認します
use local
方式一:主上
db.oplog.rs.stats().maxSize
1038090240
方式二:
rs.printReplicationInfo()
configured oplog size: 990MB
3.レプリカセットノードのoplogのサイズを変更します。oplogは990MBより大きくなければなりません。ここでは、1000MBに変更されています。
从上:
db.adminCommand({replSetResizeOplog:1,size:1000})
{
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1608619857, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1608619857, 1)
}
rs0:SECONDARY> rs.printReplicationInfo()
configured oplog size: 1000MB
log length start to end: 14847147secs (4124.21hrs)
oplog first event time: Fri Jul 03 2020 10:38:40 GMT+0000 (UTC)
oplog last event time: Tue Dec 22 2020 06:51:07 GMT+0000 (UTC)
now: Tue Dec 22 2020 06:51:09 GMT+0000 (UTC)
主上:
db.adminCommand({replSetResizeOplog:1,size:1000})
4.(オプション)oplog.rsを圧縮して、ディスク領域を再利用します
减小oplog的大小不会回收已经分配的磁盘空间,必须压缩oplog.rs来回收磁盘空间。
use local
db.runCommand({
"compact" : "oplog.rs"})
注意:当执行压缩时,副本集成员无法复制oplog条目,可能会导致主节点的操作日志被覆盖,刺激节点无法同步数据而产生重新完全同步,建议在无业务的时间段内执行压缩操作。
この記事では、主な技術コンテンツは、インターネットテクノロジーの巨人の共有と、一部の自己処理(注釈の役割のみ)に由来することを説明しています。関連する質問がある場合は、確認後にメッセージを残してください。侵害の実装は削除されます