Backup a Sharded Cluster with Filesystem Snapshots¶
This document describes a procedure for taking a backup of all components of a sharded cluster. This procedure uses file system snapshots to capture a copy of the mongod instance. An alternate procedure uses mongodump to create binary database dumps when file-system snapshots are not available. See Backup a Sharded Cluster with Database Dumps for the alternate procedure.
To capture a point-in-time backup from a sharded cluster you must stop all writes to the cluster. On a running production system, you can only capture an approximation of point-in-time snapshot.
In this procedure, you will stop the cluster balancer and take a backup up of the config database, and then take backups of each shard in the cluster using a file-system snapshot tool. If you need an exact moment-in-time snapshot of the system, you will need to stop all application writes before taking the filesystem snapshots; otherwise the snapshot will only approximate a moment in time.
For approximate point-in-time snapshots, you can improve the quality of the backup while minimizing impact on the cluster by taking the backup from a secondary member of the replica set that provides each shard.
use config sh.stopBalancer()
For more information, see the Disable the Balancer procedure.
It is essential that you stop the balancer before creating backups. If the balancer remains active, your resulting backups could have duplicate data or miss some data, as chunks may migrate while recording backups.
Lock one secondary member of each replica set in each shard so that your backups reflect the state of your database at the nearest possible approximation of a single moment in time. Lock these mongod instances in as short of an interval as possible.
Back up one of the config servers. Backing up a config server backs up the sharded cluster’s metadata. You need back up only one config server, as they all hold the same data
Do one of the following to back up one of the config servers:
Create a file-system snapshot of the config server. Use the procedure in Backup and Restore with Filesystem Snapshots.
If you are running MongoDB 2.4 or later with the --configsvr option, then include the --oplog option when running mongodump to ensure that the dump includes a partial oplog containing operations from the duration of the mongodump operation. For example:
mongodump --oplog --db config
Back up the replica set members of the shards that you locked. You may back up the shards in parallel. For each shard, create a snapshot. Use the procedure in Backup and Restore with Filesystem Snapshots.
Re-enable the balancer with the sh.setBalancerState() method.
use config sh.setBalancerState(true)