今回は「MongoDB の oplog ファイルサイズ を変更する 方法」についてまとめます。
概要
oplogファイルサイズの変更は replSetResizeOplog
コマンドで変更できます。
基本的には現状確認、検討、変更、データ再同期の手順です。 実施する際はセカンダリサーバーから実施するようにします。 データ再同期はサイズ縮小する場合だけですが、サーバー停止を伴うので実施には要注意です。
それでは以下で詳しい手順を見ていきます。
変更手順
現在のサイズを確認
現在の設定を確認してどの程度に変更するかを考えます。
-
レプリカセットのセカンダリサーバーへ接続
mongo --host 127.0.0.1:8002
-
rs.printReplicationInfo()コマンドでoplogサイズ確認
レプリケーションに関する情報を取得、oplogサイズを確認します。
SECONDARY> rs.printReplicationInfo()
以下のような応答が返ってきますので、 oplog size を確認します。
configured oplog size: 2244.146240234375MB log length start to end: 9152215secs (2542.28hrs) oplog first event time: Sat Mar 03 2018 23:42:09 GMT+0900 oplog last event time: Sun Jun 17 2018 21:59:04 GMT+0900 now: Sun Jun 17 2018 21:59:11 GMT+0900
oplogサイズ変更
-
レプリカセットのセカンダリサーバーへ接続
mongo --host 127.0.0.1:8002
-
replSetResizeOplogコマンドでoplogサイズ変更
サイズはメガバイトで指定します。 以下のサンプルコードでは16G (= 16000MB) に設定しています。
SECONDARY> db.adminCommand({ replSetResizeOplog: 1, size: 16000 })
-
上記を繰り返しすべてのサーバーのoplogサイズを変更
データ再同期
oplogサイズを小さくする場合、データ不整合が発生する可能性があるためデータ再同期させる必要があります。
-
データ再同期したい稼働中のサーバーを停止
mongoシェル コマンド で以下を実行することで安全に停止させます。
SECONDARY> use admin SECONDARY> db.shutdownServer()
-
dbPath配下のフォルダ・ファイルをすべて削除
コマンドプロンプト上で以下のコマンドを実行し、dbPath配下のファイルやフォルダをすべて削除します。
set DBPATH=C:\mongodb\server2\data del "%DBPATH%" /f /s /q for /d %a in (%DBPATH%\*) do (rmdir /s /q "%a")
-
mongod を起動
mongo --config "C:\mongodb\server2\mongod.server2.cfg"
今回は「MongoDB の oplog ファイルサイズ を変更する 方法」についてまとめました。 ポイントは以下の通りです。
- oplogファイルサイズ変更は db.adminCommand({ replSetResizeOplog: 1, size: 16000 }) で実行可能。
- セカンダリサーバーから順に変更する。
- oplogファイルサイズを小さくする場合はデータ再同期が必要。
参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
参考記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!