予期しないシャットダウン後の自己管理型スタンドアロンの回復
警告
次の手順は、スタンドアロンの mongod
インスタンス バージョン8.0に適用されます。 その他の MongoDB のバージョンについては、対応するバージョンのマニュアルを参照してください。
レプリカセットのメンバーを復元する目的でこのチュートリアルを使用しないでください。 代わりに、「 自己管理型レプリカセットのノードの 再同期 」で説明されているように、 バックアップ から復元するか、セットの別ノードから再同期する必要があります。
Tip
ジャーナリングを有効にして実行している場合、サーバーはジャーナル ファイルを使用してデータファイルを自動的にクリーンな状態に復元できるため、修復を実行する必要はほとんどありません。ただし、ディスク レベルのデータ破損から回復する必要がある場合は、修復を実行する必要があるかもしれません。
ディスクレベルのデータ破損またはデータファイルの欠落により、mongod
インスタンスが起動できなくなる可能性があり、ジャーナル ファイルが不十分で自動的に回復できない可能性があります。
2018-10-24T18:05:18.248-04:00 W STORAGE [initandlisten] Detected unclean shutdown - mongod.lock is not empty. ... 2018-10-24T17:24:53.122-04:00 E STORAGE [initandlisten] Failed to get the cursor for uri: table:collection-2-6854866147293273505 2018-10-24T17:24:53.122-04:00 E STORAGE [initandlisten] This may be due to missing data files. ... ... ***aborting after fassert() failure
このような場合、dbPath
には空でない mongod.lock
ファイルが含まれます。
次の手順では、mongod --repair
を使用してこれらのケースから回復します。
警告
他に選択肢がない場合にのみ mongod --repair
を使用してください。この操作により、修復プロセス中に破損したデータは削除され、保存はされません。
WiredTiger ストレージ エンジンの場合、 mongod --repair
:
1 つ以上の不整合なインデックスを持つコレクションのすべてのインデックスを再構築します。
破損したデータを破棄します。
欠落しているデータ ファイルまたはメタデータ ファイルに対して空のファイルまたはスタブ ファイルを作成します。
手順
重要
MongoDB データファイルの権限が変更されないようにするために、通常 mongod
プロセスを実行するのと同じユーザーとして修復操作を実行します。
データファイルのバックアップを作成します。
--dbpath
内のデータファイルのバックアップコピーを作成します。
を指定してmongod
<a class=\" \" href=\"--repair
\"> を開始します。<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
データファイルを修復するには、--repair
オプションを使用して mongod
インスタンスを起動します。
スタンドアロンで、次のようなコマンドを発行します。
mongod --dbpath /data/db --repair
完了すると、dbpath
には修復されたデータファイルと空の mongod.lock
ファイルが含まれます。[1]
注意
何らかの理由で修復が完了しなかった場合は、--repair
オプションを使用してインスタンスを再起動することで修復を完了する必要があります。
[1] | 通常、手動で mongod.lock ファイルを削除しないでください。代わりに、上記の手順でデータベースを回復してください。状況が深刻な場合は、ファイルを削除し、破損している可能性のあるファイルを使用してデータベースを起動し、データベースからデータの回復を試行することができます。しかし、このような状況でデータベースの状態を予測することは不可能です。 |