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()