This section describes how to configure the MySQL backup schedule using the Xtrabackup script based on the crontab record.
Note
We recommend that you Configure a backup schedule in the Jenkins pipeline instead of using the Xtrabackup script directly.
By default, Xtrabackup stores three complete backups with their incremental backups. This section describes how to override the default configuration of the backup schedule for a MySQL database. To enable the backup schedule in your deployment, refer to Enable a backup schedule for a MySQL database.
To configure a backup schedule for a MySQL database:
Log in to the Salt Master node.
Select from the following options:
Override the default Xtrabackup configuration by setting
a custom time interval in cluster/infra/config/init.yml.
Set the following parameters as required:
hours_before_fullSets the full backup frequency. If set to 48, the full backup is
performed every two days. Within 48 hours, only incremental backups
are performed.
full_backups_to_keepSets the number of full backups to keep.
incr_before_fullSets the number of incremental backups to be performed between full
backups. If set to 3, three incremental backups will be performed
between full backups.
cronIf set to false, disables the automatic backup by removing
the cron job that triggers an automatic backup. Set cron: true
to enable the automatic backup.
Configuration example:
parameters:
xtrabackup:
server:
enabled: true
hours_before_full: 48
full_backups_to_keep: 5
incr_before_full: 3
cron: false
Verify that the hours_before_full parameter of the xtrabackup
client in cluster/openstack/database/init.yml matches
the same parameter of the xtrabackup server
in cluster/infra/config/init.yml.
Set the exact backup time for the Xtrabackup server role in
cluster/infra/config/init.yml and the Xtrabackup client role in
cluster/openstack/database/init.yml by configuring the
backup_times section.
The backup_times parameters include:
day_of_weekThe day of a week to perform backups. Specify 0 for Sunday, 1
for Monday, and so on. If not set, defaults to *.
day_of_monthThe day of a month to perform backups. For example, 20, 25, and
so on. If not set, defaults to *.
Note
Only day_of_week or day_of_month can be active at
the same time. If both are defined, day_of_week is
prioritized.
monthThe month to perform backups. Available values include 1 for January,
2 for February, and so on up to 12 for December.
hourThe hour to perform backups. Uses the 24-hour format.
If not defined, defaults to 1.
minuteThe minute to perform backups. For example, 5, 10, 59,
and so on. If not defined, defaults to 00.
Note
If any of the individual backup_times
parameters is not defined, the default * value will
be used. For example, if the minute parameter is *,
the backup will run every minute, which is usually not desired.
Caution
Only backup_times section or hours_before_full(incr)
can be active. If both are defined, the backup_times section will
be prioritized.
Configuration example for the Xtrabackup server role:
parameters:
xtrabackup:
server:
enabled: true
full_backups_to_keep: 3
incr_before_full: 3
backup_dir: /srv/backup
backup_times:
day_of_week: 0
hour: 4
minute: 52
key:
xtrabackup_pub_key:
enabled: true
key: key
Configuration example for the Xtrabackup client role:
parameters:
xtrabackup:
client:
enabled: true
full_backups_to_keep: 3
incr_before_full: 3
backup_times:
day_of_week: 0
hour: 4
minute: 52
compression: true
compression_threads: 2
database:
user: username
password: password
target:
host: cfg01
cron: true
The cron parameter, if set to false, disables the script that
automatically triggers the backup scripts. For the correct backup strategy,
set up cron to true or use the backup pipeline as described in
Configure a backup schedule in the Jenkins pipeline.
Apply changes by performing the steps 5-10 of the Enable a backup schedule for a MySQL database procedure.
See also