- Administration >
- MongoDB Backup Methods >
- Backup and Restore Sharded Clusters >
- Restore a Sharded Cluster
Restore a Sharded Cluster¶
On this page
Overview¶
Important
In version 3.4, MongoDB removes support for SCCC config servers. To upgrade your config servers from SCCC to CSRS, see Upgrade Config Servers to Replica Set.
The following procedure applies to 3.4 config servers.
You can restore a sharded cluster either from snapshots or from BSON
database dumps created by the
mongodump
tool. This document describes procedures to
Procedures¶
Changed in version 3.4.
For MongoDB 3.4 sharded clusters, mongod
instances for
the shards must explicitly specify its role as a shardsvr
,
either via the configuration file setting
sharding.clusterRole
or via the command line option
--shardsvr
.
Note
Default port for mongod
instances with the shardsvr
role is 27018
. To use a different port, specify
net.port
setting or --port
option.
The following procedures assume shard mongod
instances
include the --shardsvr
and --port
options (or corresponding
settings in the configuration file).
Restore a Sharded Cluster with Filesystem Snapshots¶
The following procedure outlines the steps to restore a sharded cluster from filesystem snapshots. To create filesystem snapshots of sharded clusters, see Back Up a Sharded Cluster with File System Snapshots.
Restore the data files.¶
On each server, extract the data files to the location where the
mongod
instance will access them and restore the following:
Data files for each server in each shard.
For each shard replica set, restore all the members of the replica set. See Restore a Replica Set from MongoDB Backups.
Data files for each config server.
To restore to the config server replica set (CSRS), see Restore a Replica Set from MongoDB Backups.
See also
Restart the config servers.¶
Restart each member of the CSRS.
mongod --configsvr --replSet <CSRS name> --dbpath <config dbpath> --port 27019
Start one mongos
instance.¶
Start mongos
with the --configdb
option set to
the name of the config server replica set and seed list of the
members started in the step Restart the config servers.
If shard hostnames have changed, update the config database.¶
If shard hostnames have changed, connect a mongo
shell to
the mongos
instance and update the shards
collection in the Config Database to reflect the new
hostnames.
Clear per-shard sharding recovery information.¶
If the backup data was from a deployment using CSRS, clear out the no longer applicable recovery information on each shard. For each shard:
Restart the replica set members for the shard with the
recoverShardingState
parameter set tofalse
. Include additional options as required for your specific configuration.mongod --setParameter=recoverShardingState=false --replSet <replSetName> --shardsvr --port <port>
Connect
mongo
shell to the primary of the replica set and delete from theadmin.system.version
collection the document where_id
equalsminOpTimeRecovery
id. Use write concern"majority"
.use admin db.system.version.remove( { _id: "minOpTimeRecovery" }, { writeConcern: { w: "majority" } } )
Shut down the replica set members for the shard.
Restart all the shard mongod
instances.¶
Do not include the recoverShardingState
parameter.
Changed in version 3.4: Include the --shardsvr
option and, if appropriate, the
--port
option.
Restart the other mongos
instances.¶
Specify for --configdb
the
config server replica set name and a seed list of the CSRS started
in the step Restart the config servers.
Verify that the cluster is operational.¶
Connect to a mongos
instance from a mongo
shell
and use the db.printShardingStatus()
method to ensure that
the cluster is operational.
db.printShardingStatus()
show collections
Restore a Sharded Cluster with Database Dumps¶
The following procedure outlines the steps to restore a sharded cluster
from the BSON database dumps created by mongodump
. For
information on using mongodump
to backup sharded clusters,
see Back Up a Sharded Cluster with Database Dumps.
Changed in version 3.0: mongorestore
requires a running MongoDB instances.
Earlier versions of mongorestore
did not require a
running MongoDB instances and instead used the --dbpath
option.
For instructions specific to your version of
mongorestore
, refer to the appropriate version of the
manual.
Deploy a new replica set for each shard.¶
For each shard, deploy a new replica set:
- Start a new
mongod
for each member of the replica set. Include the--shardsvr
and the--port
options. Include any other configuration as appropriate. - Connect a
mongo
to one of themongod
instances. In themongo
shell:- Run
rs.initiate()
. - Use
rs.add()
to add the other members of the replica set.
- Run
For detailed instructions on deploying a replica set, see Deploy a Replica Set.
Deploy new config servers.¶
Start the mongos
instances.¶
Start the mongos
instances, specifying the name of the
config server replica set and a seed list of members in the
--configdb
. Include any other configuration as appropriate.
For detailed instructions, see Connect a mongos to the Sharded Cluster.
Add shards to the cluster.¶
Connect a mongo
shell to a mongos
instance.
Use sh.addShard()
to add each replica sets as a shard.
For detailed instructions in adding shards to the cluster, see Add Shards to the Cluster.
Restore the shard data.¶
For each shard, use mongorestore
to restore the data dump
to the primary’s data directory. Include the --drop
option to
drop the collections before restoring and, because the backup
procedure
included the --oplog
option, include the
--oplogReplay
option for mongorestore
.
For example, on the primary for ShardA, run the
mongorestore
. Specify any other configuration as
appropriate.
mongorestore --drop --oplogReplay /data/dump/shardA --port <port>
After you have finished restoring all the shards, shut down all shard instances.
Restore the config server data.¶
mongorestore --drop --oplogReplay /data/dump/configData
Start one mongos
instance.¶
Start mongos
with the --configdb
option set to
the name of the config server replica set and seed list of the
members started in the step Deploy new config servers.
If shard hostnames have changed, update the config database.¶
If shard hostnames have changed, connect a mongo
shell to
the mongos
instance and update the shards
collection in the Config Database to reflect the new
hostnames.
Restart all the shard mongod
instances.¶
Do not include the recoverShardingState
parameter.
Changed in version 3.4: Include the --shardsvr
option and, if appropriate, the
--port
option.
Restart the other mongos
instances.¶
Specify for --configdb
the
config server replica set name and a seed list of the CSRS started
in the step Deploy new config servers.
Verify that the cluster is operational.¶
Connect to a mongos
instance from a mongo
shell
and use the db.printShardingStatus()
method to ensure that
the cluster is operational.
db.printShardingStatus()
show collections