Add mysqlbackup
This commit is contained in:
parent
a0c8a0f2d9
commit
257c00fe0c
16
mysqlbackup/backup-script.sh
Normal file
16
mysqlbackup/backup-script.sh
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Set backup directory and file name format
|
||||
BACKUP_DIR=/backup
|
||||
DATE=$(date +"%Y-%m-%d-%H-%M-%S")
|
||||
BACKUP_RETENTION_DAYS=7
|
||||
|
||||
# Get list of databases
|
||||
DATABASES=$(mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -h $MYSQL_HOST -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)")
|
||||
|
||||
# Loop through databases and dump them to separate files
|
||||
for DB in $DATABASES; do
|
||||
mysqldump --single-transaction --quick -u $MYSQL_USER -p$MYSQL_PASSWORD -h $MYSQL_HOST $DB | gzip >$BACKUP_DIR/$DB-$DATE.sql.gz
|
||||
done
|
||||
# Remove backups older than 7 days
|
||||
find $BACKUP_DIR -name "*.gz" -type f -mtime +$BACKUP_RETENTION_DAYS -delete
|
39
mysqlbackup/cronjob.yml
Normal file
39
mysqlbackup/cronjob.yml
Normal file
@ -0,0 +1,39 @@
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: mysql-backup
|
||||
spec:
|
||||
schedule: "0 0 * * *"
|
||||
jobTemplate:
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: mysql-backup
|
||||
image: mariadb:latest
|
||||
command: ["sh", "/backup-script.sh"]
|
||||
env:
|
||||
- name: MYSQL_HOST
|
||||
value: galera-mariadb-galera
|
||||
- name: MYSQL_USER
|
||||
value: backupuser
|
||||
- name: MYSQL_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: backupscrets
|
||||
key: backupsecret
|
||||
volumeMounts:
|
||||
- name: backup-volume
|
||||
mountPath: /backup
|
||||
- name: backup-script
|
||||
mountPath: /backup-script.sh
|
||||
subPath: backup-script.sh
|
||||
readOnly: true
|
||||
restartPolicy: OnFailure
|
||||
volumes:
|
||||
- name: backup-volume
|
||||
persistentVolumeClaim:
|
||||
claimName: backup-pvc
|
||||
- name: backup-script
|
||||
configMap:
|
||||
name: backup-script
|
39
mysqlbackup/job.yml
Normal file
39
mysqlbackup/job.yml
Normal file
@ -0,0 +1,39 @@
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: mysql-backup
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: mysql-backup
|
||||
image: mariadb:latest
|
||||
command: [ "/bin/sh" ]
|
||||
args: [ "-c", "sleep 3600" ]
|
||||
env:
|
||||
- name: MYSQL_HOST
|
||||
value: galera-mariadb-galera
|
||||
- name: MYSQL_USER
|
||||
value: backupuser
|
||||
- name: MYSQL_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: backupscrets
|
||||
key: backupsecret
|
||||
volumeMounts:
|
||||
- name: backup-volume
|
||||
mountPath: /backup
|
||||
- name: backup-script
|
||||
mountPath: /backup-script.sh
|
||||
subPath: backup-script.sh
|
||||
readOnly: true
|
||||
restartPolicy: OnFailure
|
||||
volumes:
|
||||
- name: backup-volume
|
||||
persistentVolumeClaim:
|
||||
claimName: backup-pvc
|
||||
- name: backup-script
|
||||
configMap:
|
||||
name: backup-script
|
||||
backoffLimit: 1
|
||||
|
11
mysqlbackup/pvc.yaml
Normal file
11
mysqlbackup/pvc.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: backup-pvc
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
storageClassName: "longhorn"
|
||||
resources:
|
||||
requests:
|
||||
storage: 5Gi
|
Loading…
Reference in New Issue
Block a user