This section describes how to configure the MySQL backup schedule in the Galera database backup Jenkins pipeline.
To configure the backup schedule for a MySQL database:
Verify that you have enabled the schedule as described in Enable a backup schedule for a MySQL database.
Verify that cron for the innobackupex-runner script is
disabled:
Log in to the Salt Master node.
Verify that the value of the cron parameter is defined in the pillar
data. The parameter should be set to false.
salt -C 'I@xtrabackup:client' pillar.data xtrabackup:client:cron
salt -C 'I@xtrabackup:server' pillar.data xtrabackup:server:cron
If the parameter is not defined or set to true, manually change the
value to false in the infra/backup/client_mysql.yml on the
cluster Reclass level.
If the schedule was configured before, remove the old schedule
configuration by removing the backup_times pillar block from the
cluster/infra/config/init.yml and
cluster/openstack/database/init.yml files if it is present in
parameters:xtrabackup:client.
Apply the xtrabackup state:
salt -C 'I@xtrabackup:client or I@xtrabackup:server' state.sls xtrabackup
On the dbs01 node, verify that crontab is working
and the Xtrabackup job is disabled:
crontab -l
# Lines below here are managed by Salt, do not edit
# SALT_CRON_IDENTIFIER:/usr/local/bin/innobackupex-runner.sh
# DISABLED 0 */12 * * * /usr/local/bin/innobackupex-runner.sh
Verify the system response of the following command:
salt -C I@xtrabackup:client pillar.get _param
The system response should include the following parameters for the Jenkins trigger but the values may vary:
parameters:
_param:
backup_min: "0"
backup_hour: "*/12"
backup_day_of_month: "*"
backup_month: "*"
backup_day_of_week: "*"
If the above parameters are not defined, set them up in
infra/init.yml on the cluster Reclass level.
Configure the Galera database backup pipeline as required:
Open the cluster Reclass level of your deployment.
Move the include of the infra.backup.client_mysql level from
openstack/database/master.yml to openstack/database/init.yml.
Refresh the grains to be able to get correct IP addresses for
/.ssh/authorized_keys.
salt -C I@xtrabackup:client state.sls salt
salt -C I@xtrabackup:client mine.update
salt -C I@xtrabackup:client saltutil.sync_all
Apply the xtrabackup state to configure access for new nodes:
salt -C I@xtrabackup:server state.sls xtrabackup
In cicd/control/leader.yml, add the following class:
classes:
- system.jenkins.client.job.deploy.galera_database_backup
Re-apply the jenkins state on the cid01 node:
salt -C I@jenkins:client state.sls jenkins
Optional. To define a custom backup time, override the backup
paramateters in the infra/init.yml file:
parameters:
_param:
backup_min: "0"
backup_hour: "*/12"
backup_day_of_month: "*"
backup_month: "*"
backup_day_of_week: "*"
| Parameter name | Description | Possible values |
|---|---|---|
backup_min |
Value in minutes when the backup should run | 0-59, * |
backup_hour |
Value in hours when the backup should run | 0-23, * |
backup_day_of_month |
Value in days of month when the backup should run | 1-31, * |
backup_month |
Value in months when the backup should run | 0-23, * |
backup_day_of_week |
Value in days of week when the backup should run | 0-6, * |
All parameters can also use / to mark the iteration.
For example, the */12 value for the backup_hour parameter
means that the backup will start every twelfth hour.
See Jenkins cron syntax
in the official Jenkins documentation for the details.