apiVersion: template.openshift.io/v1 kind: Template metadata: annotations: description: Template for a DB container backup job on OKD 4.10 tags: database name: mariadb-backup-template objects: - apiVersion: batch/v1 kind: CronJob metadata: name: mariadb-backup spec: concurrencyPolicy: Forbid jobTemplate: spec: template: spec: containers: - command: - bash - -eo - pipefail - -c - | trap "echo Backup failed; exit 0" ERR; FILENAME=backup-${DATABASE_NAME}-`date +%Y-%m-%d_%H%M%S`.sql.gz; time (find /database-backup -type f -name "backup-${DATABASE_NAME}-*" -exec ls -1tr "{}" + | head -n -${DATABASE_BACKUP_KEEP} | xargs rm -fr; mysqldump -u$DATABASE_USER -p$DATABASE_PASSWORD -h$DATABASE_HOST -P$DATABASE_PORT --skip-lock-tables --quick --add-drop-database --routines ${DATABASE_NAME} | gzip > /database-backup/$FILENAME); echo ""; echo "Backup successful"; du -h /database-backup/$FILENAME; echo "to restore the backup to the serviced host use: $ mysql -u$DATABASE_USER -p$DATABASE_PASSWORD -h$DATABASE_HOST < /database-backup/ (unpacked)" env: - name: DATABASE_BACKUP_KEEP value: ${DATABASE_BACKUP_KEEP} - name: DATABASE_USER value: ${DATABASE_USER} - name: DATABASE_PASSWORD value: ${DATABASE_PASSWORD} - name: DATABASE_HOST value: ${DATABASE_HOST} - name: DATABASE_PORT value: ${DATABASE_PORT} - name: DATABASE_NAME value: ${DATABASE_NAME} - name: TZ value: Europe/Zurich image: image-registry.openshift-image-registry.svc:5000/openshift/mariadb:10.3 name: database-backup volumeMounts: - mountPath: /database-backup name: database-backup restartPolicy: Never volumes: - name: database-backup persistentVolumeClaim: claimName: ${DATABASE_BACKUP_VOLUME_CLAIM} schedule: ${DATABASE_BACKUP_SCHEDULE} parameters: - description: Number of backups to keep name: DATABASE_BACKUP_KEEP value: "7" - description: Cron-like schedule expression name: DATABASE_BACKUP_SCHEDULE value: 55 1 * * * - description: database user name: DATABASE_USER required: true - description: database user password name: DATABASE_PASSWORD required: true - description: Hostname of DB server name: DATABASE_HOST required: true value: mariadb - description: DB Port name: DATABASE_PORT required: true value: "3306" - description: Database to backup name: DATABASE_NAME required: true - description: Name of the volume claim to be used as storage name: DATABASE_BACKUP_VOLUME_CLAIM required: true value: mariadb-backup