MongoDB の oplog ファイルサイズ を変更する 方法

0 件のコメント

今回は「MongoDB の oplog ファイルサイズ を変更する 方法」についてまとめます。

概要

oplogファイルサイズの変更は replSetResizeOplog コマンドで変更できます。

基本的には現状確認、検討、変更、データ再同期の手順です。 実施する際はセカンダリサーバーから実施するようにします。 データ再同期はサイズ縮小する場合だけですが、サーバー停止を伴うので実施には要注意です。

それでは以下で詳しい手順を見ていきます。

変更手順

現在のサイズを確認

現在の設定を確認してどの程度に変更するかを考えます。

  1. レプリカセットのセカンダリサーバーへ接続

    1
    mongo --host 127.0.0.1:8002
  2. rs.printReplicationInfo()コマンドでoplogサイズ確認

    レプリケーションに関する情報を取得、oplogサイズを確認します。

    1
    SECONDARY> rs.printReplicationInfo()

    以下のような応答が返ってきますので、 oplog size を確認します。

    1
    2
    3
    4
    5
    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サイズ変更

  1. レプリカセットのセカンダリサーバーへ接続

    1
    mongo --host 127.0.0.1:8002
  2. replSetResizeOplogコマンドでoplogサイズ変更

    サイズはメガバイトで指定します。 以下のサンプルコードでは16G (= 16000MB) に設定しています。

    1
    SECONDARY> db.adminCommand({ replSetResizeOplog: 1, size: 16000 })
  3. 上記を繰り返しすべてのサーバーのoplogサイズを変更

データ再同期

oplogサイズを小さくする場合、データ不整合が発生する可能性があるためデータ再同期させる必要があります。

  1. データ再同期したい稼働中のサーバーを停止

    mongoシェル コマンド で以下を実行することで安全に停止させます。

    1
    2
    SECONDARY> use admin
    SECONDARY> db.shutdownServer()
  2. dbPath配下のフォルダ・ファイルをすべて削除

    コマンドプロンプト上で以下のコマンドを実行し、dbPath配下のファイルやフォルダをすべて削除します。

    1
    2
    3
    set DBPATH=C:\mongodb\server2\data
    del "%DBPATH%" /f /s /q
    for /d %a in (%DBPATH%\*) do (rmdir /s /q "%a")
  3. mongod を起動

    1
    mongo --config "C:\mongodb\server2\mongod.server2.cfg"

今回は「MongoDB の oplog ファイルサイズ を変更する 方法」についてまとめました。 ポイントは以下の通りです。

  • oplogファイルサイズ変更は db.adminCommand({ replSetResizeOplog: 1, size: 16000 }) で実行可能。
  • セカンダリサーバーから順に変更する。
  • oplogファイルサイズを小さくする場合はデータ再同期が必要。

参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!

参考記事

最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!