Files
lpt-infra/prod/mysql-backup-cronjob.yaml
T

44 lines
1.3 KiB
YAML

apiVersion: batch/v1
kind: CronJob
metadata:
name: mysql-backup
namespace: lpt-prod
spec:
schedule: "0 3 * * *"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 7
failedJobsHistoryLimit: 3
jobTemplate:
spec:
backoffLimit: 2
template:
spec:
restartPolicy: OnFailure
containers:
- name: mysqldump
image: mysql:8.0
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -ec
- |
set -euo pipefail
TS=$(date +%Y%m%d-%H%M%S)
mysqldump --host=mysql --port=3306 --user=root --password="$MYSQL_ROOT_PASSWORD" \
--all-databases --single-transaction --routines --events --triggers \
> "/backup/lpt-prod-${TS}.sql"
find /backup -type f -name 'lpt-prod-*.sql' -mtime +14 -delete
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: lpt-secrets
key: mysql-root-password
volumeMounts:
- name: backup
mountPath: /backup
volumes:
- name: backup
persistentVolumeClaim:
claimName: mysql-backup