Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

db.fsyncLock()

項目一覧

  • 定義
  • 互換性
  • 動作
db.fsyncLock()

ストレージ層からディスクへのすべての保留中の書込みをフラッシュし、サーバーをロックしてロックが解放されるまで追加の書込みを防ぎます。

MongoDB 5.0.22以降では、 db.fsyncLock()メソッドと db.fsyncUnlock()メソッドをmongosで実行して、シャーディングされたクラスターをロックおよびロック解除します。

重要

mongosh メソッド

このページでは、mongosh メソッドについて説明します。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、fsync コマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

サーバーは fsync ロック カウントを維持します。 fsyncLock()メソッドはロック数を増加させ、 fsyncUnlock()メソッドはロック数を減算します。 サーバーまたはクラスターへの書込みをロックするには、ロック数が 0 になるまでfsyncUnlock()メソッドを呼び出します。

db.fsyncLock() の構文は次のとおりです。

db.fsyncLock()

この操作は、次のフィールドを含むドキュメントを返します。

フィールド
説明
info
操作のステータスに関する情報。
lockCount
インスタンスで現在実行されているロックの数。
seeAlso
fsyncコマンドのドキュメントへのリンク
ok
ステータス コード。

db.fsyncLock()は管理コマンドです。 このメソッドを使用して、バックアップ操作の前にサーバーまたはクラスターをロックします。

このメソッドは、次の環境でホストされている配置で使用できます。

重要

このコマンドは、 MongoDB Atlasクラスターではサポートされていません。 すべてのコマンドの Atlas サポートの詳細については、「 サポートされていないコマンド 」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

db.fsyncLock()は、 cpscptarなどの低レベルのバックアップ ユーティリティを使用してデータファイルを安全にコピーすることを保証します。 コピーされたファイルを使用して開始されたmongodには、ロックされたmongodのユーザーが記述したデータと区別できないユーザーが記述したデータが含まれています。

ロックされたmongodのデータファイルは、ジャーナリング同期WiredTiger スナップショットなどの操作によって変更される可能性があります。 これは論理データ(例: クライアントがアクセスするデータ)では、一部のバックアップ ユーティリティがこれらの変更を検出して警告を発したり、エラーで失敗したりすることがあります。 MongoDB が推奨するバックアップ ユーティリティと手順の詳細については、「自己管理型配置のバックアップ メソッド 」を参照してください。

Fsync ロックは、レプリカセットまたはシャーディングされたクラスター内のプライマリで実行されます。

ネットワークの問題によりプライマリがダウンしたり、アクセスできなくなった場合、クラスターは使用可能なセカンダリから新しいプライマリを選択します。 fsync ロックを持つプライマリがダウンした場合、新しいプライマリは fsync ロックを保持せ、書込み操作を処理できます。 バックアップ操作中に選挙が行われると、結果のバックアップが一貫性を失うか、使用できない可能性があります。

プライマリがダウンした状態から回復するには、次の手順に従います。

  1. ロック数が 0 になるまでdb.fsyncUnlock()メソッドを実行して、すべてのノードのロックを解放します。

  2. db.fsyncLock()コマンドを発行して、クラスター上の fsync ロックを再確立します。

  3. バックアップを再起動します。

さらに、 fsync ロックは永続的です。 古いプライマリが再度オンラインになったら、ノードのロックを解放するためにdb.fsyncUnlock()コマンドを実行する必要があります。

次の操作ではdb.fsyncLock()が実行されます。

db.fsyncLock()

この操作では、 lockCountを含む次のステータス ドキュメントが返されます。

{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"lockCount" : NumberLong(1),
"seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
"ok" : 1
}

db.fsyncLock()を再度実行すると、その操作によりlockCountが増加します。

{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"lockCount" : NumberLong(2),
"seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
"ok" : 1
}

インスタンスの書き込みロックを解除するには、 db.fsyncUnlock()を 2 回実行してlockCountを 0 に減らす必要があります。

戻る

db.dropDatabase