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> } )
クラスターを復元します。
mongorestoremongosを使用して に接続し、クラスターを復元します。宛先クラスターの既存の構成を保持するには、 データベースを除外します。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()