Back up MongoDB on Kubernetes
You can use the instructions on this page to create pre and post backup rules with Portworx Backup, which take application-consistent backups for MongoDB on Kubernetes in production.
MongoDB stores data files in a location called dbPath. dbPath is most often configured to use /var/lib/mongo. Some container images may also configure this path differently, so it is important to pay attention to dbPath.
When deployed with more than a single node, MongoDB has an additional component called Oplog that should be considered during backup. The MongoDB Oplog is a special capped collection that keeps a rolling record of all operations that modify the data stored in your databases. The Oplog can also be used for database recovery. Because the Oplog recovery can take a very long time, MongoDB usually is combined with regular database snapshots.
Installation
Prerequisites
- MongoDB pods should use the label app=mongofor this example.
- If MongoDB is using oplog, you will need a persistent location to dump oplog. The location /data/oplogis used in this example.
Create rules for MongoDB
Create rules for MongoDB that will run both before and after the backup operation runs:
Create a pre-exec backup rule for MongoDB
Portworx Backup should flush writes to disk and lock the database to ensure a consistent backup. This is done using the db.fsyncLock() method.
- 
From the home page, navigate to Settings >Rules > Add New. 
- 
In the Add Rule window, provide the following details: - 
Rule name: add a name for your backup rule 
- 
Pod Selector: add the following app label app=mongo
- 
Container: ignore this field 
- 
Action: add the following action mongo --eval "printjson(db.fsyncLock())"
- 
Add the second action: If you are using Oplog, this will dump Oplog and can be used for alternate database recovery. mongodump -d local -c oplog.rs -o /data/oplog
   
- 
Create a post-exec backup rule for MongoDB
Create a post-backup action that will administratively reduce the lock on the database following your pre-backup db.fsyncLock() operation.
- 
From the home page, navigate to Settings > Rules > Add New. 
- 
In the Add Rule window, provide the following details: - 
Rule name: add a name for your backup rule 
- 
Pod Selector: add the following app label app=mongo
- 
Container: ignore this field 
- 
Action: add the following action mongo --eval "printjson(db.fsyncUnlock())"
 
- 
 
Use the rules during backup of MongoDB
- 
During the backup creation process, select the rules in the pre-exec and post-exec drop-down lists:   
- 
Once you have populated all the fields of Create Backup window, click Create. 
Demo
Watch this short demo of the above information.