MongoDB Backup (Policy)
Performs regular backups of your MongoDB database based on a predefined schedule, ensuring your data is securely archived without manual intervention.
Key features include:
- Scheduled Backups: Configure the system to execute backups at specific times, reducing the risk of data loss while aligning with your maintenance windows.
- Multi-Cloud Support: Seamlessly store your backup files in cloud buckets from leading providers such as Azure, GCP, or AWS, offering you flexibility and enhanced resilience.
- Secure Data Transfer: Employ industry-standard encryption to ensure that your data remains confidential and tamper-proof during both transmission and storage.
Prerequisites
- MongoDB database asset
- MongoDB credentials
- Storage bucket asset
- Storage bucket asset credentials
Procedure from web console
- Navigate to the policy's page: Operations > Policies (or go directly to
/home/operations/policies) - Click on Create Policy button
- Select MongoDB backup
- Fill out the MongoDB backup policy form with the following information:
- Policy name: Enter a descriptive name for your backup policy
- The MongoDB asset to backup: Select the MongoDB instance from the dropdown
- The credential name to access MongoDB: Select the credential bound to the MongoDB asset from the dropdown
- The database name to backup: Specify the name of the database you want to backup
- The opts for MongoDB backup: Configure additional backup options (optional)
- The Bucket asset where backups will be saved: Choose the storage bucket from the dropdown
- The credential name to access Bucket: Select the credential bound to the Bucket from the dropdown
- The path inside the bucket where backup is saved: Define the storage path within the bucket
- The backup schedule in Cron format: Set the backup frequency using cron syntax (e.g.,
0 2 * * *for daily at 2 AM) - Enable GZIP compression: Check this option to compress backups
- Click Next to continue with the policy configuration
- Select the target cluster where you want to deploy the policy (optional - if not specified, the policy will be deployed to the default cluster)
- Review the policy configuration summary
- Click Create Policy to deploy the MongoDB backup policy
Procedure from CLI
Create a YAML file with the policy configuration:
apiVersion: operations.resiliency.io/v1alpha1
kind: Policy
metadata:
name: <policy-name>
namespace: resiliency-system
spec:
templateName: mongodb-backup
params:
- name: mongodb-asset
value: <mongodb-asset-id>
- name: mongodb-database
value: <database-name>
- name: bucket-asset
value: <bucket-asset-id>
- name: mongodb-opts
value: "<backup-options>"
- name: bucket-path
value: "<path-in-bucket>"
- name: schedule
value: "<cron-schedule>"
- name: use-gzip
value: <true|false>
- name: bucket-credential
value: <bucket-credential-name>
- name: mongodb-credential
value: <mongodb-credential-name>
placement:
clusterName: <target-cluster-id>
createNamespace: true
credentialName: <cluster-credential-name>
suspended: false
Apply the policy to the cluster:
kubectl apply -f mongodb-backup-policy.yaml
Policy Specification
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
metadata.name | string | Yes | Unique name for the policy | mongodb-backup-daily |
metadata.namespace | string | Yes | Namespace where policy is created | resiliency-system |
spec.templateName | string | Yes | Template to use for the policy | mongodb-backup |
spec.suspended | boolean | No | Whether the policy is suspended | false |
spec.params | array | Yes | Array of parameters for the template | See parameters table below |
spec.placement.clusterName | string | No | Target cluster ID | 5b2613a542a883618f0fe1da26396a721d063219 |
spec.placement.credentialName | string | No | Cluster credential name | cluster-admin |
spec.placement.createNamespace | boolean | No | Create namespace if it doesn't exist | true |
Parameters (MongoDB Backup)
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
mongodb-asset | string | Yes | ID of the MongoDB asset | 44bd1dd01554be8285626843082c5eaca28f6779 |
mongodb-database | string | Yes | Database name to backup | production |
mongodb-credential | string | Yes | Credential name for MongoDB access | mongodb-root |
bucket-asset | string | Yes | ID of the bucket asset | 01409a2b09f336c6533729d4c04866803ec8bf67 |
bucket-credential | string | Yes | Credential name for bucket access | aws-s3-backup |
bucket-path | string | Yes | Path within bucket for backups | /backups/mongodb |
schedule | string (cron) | Yes | Backup schedule in cron format | 0 2 * * * |
mongodb-opts | string | No | Additional mongodump options | --gzip --oplog |
use-gzip | boolean | No | Enable GZIP compression | true |