mongorestore is a tool that reads mongodump binary exports and restores the data to a MongoDB deployment. Use mongorestore to restore a sharded cluster from a mongodump backup.
Antes de começar
Ensure you have a mongodump backup of your source cluster. To create one, see Back Up a Self-Managed Sharded Cluster with a Database Dump. If you have file system snapshots, see Restore a Self-Managed Sharded Cluster from Snapshots.
Passos
Pare o balanceador.
Para evitar que as migrações de partes atrapalhem a restauração, conecte-se a mongos e interrompa o balanceador:
sh.stopBalancer()
Para verificar se você parou o balanceador, execute:
use config while( sh.isBalancerRunning().mode != "off" ) { print( "Waiting for Balancer to stop..." ); sleep( 1000 ); }
Coleções pré-shard no cluster de destino.
Para cada coleção fragmentada no cluster de origem, crie a coleção no cluster de destino e shard-a usando a mesma chave de shard com hash antes de restaurar os dados.
Para encontrar a chave de shard com hash para cada coleção, query o cluster de origem ativo:
use config db.collections.find()
Alternatively, you can use bsondump to inspect the config/collections.bson file from your dump directory:
bsondump /path/to/dump/config/collections.bson
{ "_id": "<database>.<collection>", ... "key": { "<shardKeyField>": "<key>" }, ... }
Observação
Os valores válidos da chave de shard são 1 ou "hashed".
Para cada coleção fragmentada, shard a coleção no cluster de destino usando a mesma chave de shard com hash:
sh.shardCollection( "<database-name>.<collection-name>", { <shardKeyField>: <key> } )
Restaurar o cluster.
Use mongorestore to connect to mongos and restore the cluster. Exclude the config database to preserve the destination cluster's existing configuration:
mongorestore \ --host <host> \ --port 27017 \ --username <username> \ --password "<password>" \ --authenticationDatabase admin \ --nsExclude='config.*' \ /path/to/backup
Importante
The --drop option drops the collection before restoring. If you use --drop after pre-sharding collections, mongorestore removes the sharding configuration.
Validar acessibilidade do cluster.
Conecte-se a mongos e execute sh.status() para verificar o status geral do cluster:
sh.status()
Para confirmar que todos os shards estão acessíveis e comunicando, insira um documento de teste em uma coleção temporária:
db.testRestore.insertOne({ test: 1 })
Em seguida, conecte-se a cada primário de shard e execute db.collection.find() para confirmar que o documento está presente:
db.testRestore.find()