mongorestore は、mongodump バイナリエクスポートを読み取り、データを MongoDB 配置に復元するツールです。mongorestoreを使用して、mongodump バックアップからシャーディングされたクラスターを復元します。
始める前に
ソースクラスターの mongodump バックアップがあることを確認してください。作成するには、データベース ダンプを使用して自己管理型クラスターをバックアップする を参照してください。ファイル システム スナップショットがある場合は、スナップショットから自己管理型クラスターを復元する。 を参照してください。
手順
バランサーを停止します。
チャンクの移行によって復元が中断されないようにするには、 mongos に接続してバランサーを停止します。
sh.stopBalancer()
バランサーが停止したことを確認するには、次のコマンドを実行します。
use config while( sh.isBalancerRunning().mode != "off" ) { print( "Waiting for Balancer to stop..." ); sleep( 1000 ); }
宛先クラスターでコレクションを事前シャードします。
ソースクラスター内の各シャーディングされたコレクションについては、データを復元する前に対象クラスター上にコレクションを作成し、同じシャードキーを使用してシャードします。
各コレクションのシャードキーを見つけるには、ライブソースクラスターをクエリします。
use config db.collections.find()
または、bsondump を使用してダンプ ディレクトリから config/collections.bson ファイルを検査できます。
bsondump /path/to/dump/config/collections.bson
{ "_id": "<database>.<collection>", ... "key": { "<shardKeyField>": "<key>" }, ... }
注意
有効なシャードキー値は 1 または "hashed" です。
シャーディングされたコレクションごとに、同じシャードキーを使用して対象クラスターでコレクションをシャードします。
sh.shardCollection( "<database-name>.<collection-name>", { <shardKeyField>: <key> } )
クラスターを復元します。
mongorestore を使用して mongos に接続し、クラスターを復元します。config データベースを除外して、宛先クラスターの既存の構成を維持します。
mongorestore \ --host <host> \ --port 27017 \ --username <username> \ --password "<password>" \ --authenticationDatabase admin \ --nsExclude='config.*' \ /path/to/backup
重要
--dropオプションは、復元する前にコレクションを削除します。コレクションのプレシャーディング後に--dropを使用すると、mongorestoreはシャーディング構成を除きます。
クラスターのアクセス可能性を検証します。
mongos に接続し、sh.status() を実行してクラスター全体のステータスを確認します。
sh.status()
すべてのシャードがアクセス可能であり、通信していることを確認するため、一時的なコレクションにテスト ドキュメントを挿入します。
db.testRestore.insertOne({ test: 1 })
次に、各シャード プライマリに接続し、db.collection.find() を実行してドキュメントが存在することを確認します。
db.testRestore.find()