Recurrent Backups

MySQL operator provides effortless recurrent backups while keeping the cluster highly available.

In the Backups section we take backups on demand. However, a cluster can be configured to take recurrent backups. Also, a cluster can be initialized from an existing backup.

To be able to store backups, the secret defined under backupSecretName must contain the credentials needed to access the storage provider(e.g GCS, AWS, etc.)

Setup recurrent backups for a MySQL cluster

You need to set the backupBucketURL in the cluster spec as an URL like s3://BUCKET_NAME, and the secret with storage credentials (backupSecretName).

See the example below to configure a cluster that has recurrent backups that runs once per day at midnight. To schedule a backup set backupSchedule field that is under crontab format. For more details about CRON format can be found here . Keep in mind this CRON format takes a 6th argument for seconds.

apiVersion: mysql.presslabs.org/v1alpha1
kind: MysqlCluster
metadata:
  name: my-cluster
spec:
  secretName: the-secret

  backupSchedule: "0 0 0 * * *" # daily
  backupURL: gs://bucket_name/path/
  backupSecretName: backup-secret
  backupRemoteDeletePolicy: retain|delete

Crontab takes 6 arguments from the traditional 5. The additional argument is a seconds field. Some crontab examples and their predefined schedulers:

Entry Equivalent To Description
15 0 0 1 1 * @yearly (or @annually) Run once a year, midnight, Jan. 1st, 15th second
0 0 0 1 * * @monthly Run once a month, midnight, first of month, 0 second
0 0 0 * * 0 @weekly Run once a week, midnight between Sat/Sun, 0 second
0 0 0 * * * @daily (or @midnight) Run once a day, midnight, 0 second, 0 second
0 0 * * * * @hourly Run once an hour, beginning of hour, 0 second

Disable recurrent backups for MySQL cluster

apiVersion: mysql.presslabs.org/v1alpha1
kind: MysqlCluster
metadata:
  name: my-cluster
spec:
  secretName: the-secret
  
  backupSchedule: ""  # set to empty string will disables recurrent backups
  backupURL: gs://bucket_name/path/
  backupSecretName: backup-secret
  backupRemoteDeletePolicy: retain|delete