DB cronjob backup 3AM

This commit is contained in:
nomad 2025-06-03 21:56:08 +03:00
parent 5910b2dde5
commit a63e21db94
2 changed files with 146 additions and 49 deletions

View file

@ -0,0 +1,55 @@
apiVersion: batch/v1
kind: CronJob
metadata:
name: postgres-backup
spec:
schedule: "0 3 * * *"
jobTemplate:
spec:
ttlSecondsAfterFinished: 300
template:
spec:
containers:
- name: backup
image: postgres:15.2
command: ["/bin/bash", "/scripts/backup.sh"]
env:
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: database-secrets
key: postgres-password
volumeMounts:
- name: script
mountPath: /scripts
- name: backup-volume
mountPath: /backups
subPath: arrDB-Backups
restartPolicy: OnFailure
volumes:
- name: script
configMap:
name: postgres-backup-script
defaultMode: 0755
- name: backup-volume
persistentVolumeClaim:
claimName: postgres-backup-pvc
---
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-backup-script
data:
backup.sh: |
#!/bin/bash
set -e
echo "[INFO] $(date) - Starting PostgreSQL backup"
BACKUP_FILE="/backups/pg_$(date +%F).sql"
pg_dumpall -h arr-db -p 5433 -U postgres | tee "$BACKUP_FILE"
echo "[INFO] $(date) - Backup written to $BACKUP_FILE"
echo "[INFO] $(date) - Backup size:$(sleep 5) $(du -sh "$BACKUP_FILE" | cut -f1)"
echo "[INFO] $(date) - Cleaning backups older than 7 days"
find /backups -type f -name "pg_*.sql" -mtime +7 -print -delete
echo "[INFO] $(date) - Cleanup done"

View file

@ -1,67 +1,109 @@
# postgres-backup-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-ssd-configs
namespace: backups
name: postgres-backup-pv
spec:
capacity:
storage: 3Ti
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
csi:
driver: nfs.csi.k8s.io
volumeHandle: nfs-ssd
volumeAttributes:
server: 192.168.0.200
share: /SSD/media/configs
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-nas-git
namespace: backups
spec:
capacity:
storage: 3Ti
storage: 7Ti
accessModes:
- ReadWriteMany
mountOptions:
- rw
- sync
- hard
- nfsvers=4.1
- rsize=1048576
- wsize=1048576
- noatime
- vers=4.2
- nodiratime
- tcp
- intr
nfs:
path: /backups
server: 192.168.0.100
persistentVolumeReclaimPolicy: Retain
csi:
driver: nfs.csi.k8s.io
volumeHandle: nfs-nas-git
volumeAttributes:
server: 192.168.0.100
share: /git
volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolume
kind: PersistentVolumeClaim
metadata:
name: nfs-nas-backups
namespace: backups
name: postgres-backup-pvc
spec:
capacity:
storage: 3Ti
accessModes:
- ReadWriteMany
mountOptions:
- rw
- sync
- noatime
- vers=4.2
persistentVolumeReclaimPolicy: Retain
csi:
driver: nfs.csi.k8s.io
volumeHandle: nfs-nas-backups
volumeAttributes:
server: 192.168.0.100
share: /backups
resources:
requests:
storage: 7Ti
volumeName: postgres-backup-pv
storageClassName: ""
volumeMode: Filesystem
---
# apiVersion: v1
# kind: PersistentVolume
# metadata:
# name: nfs-ssd-configs
# namespace: backups
# spec:
# capacity:
# storage: 3Ti
# accessModes:
# - ReadWriteMany
# persistentVolumeReclaimPolicy: Retain
# csi:
# driver: nfs.csi.k8s.io
# volumeHandle: nfs-ssd
# volumeAttributes:
# server: 192.168.0.200
# share: /SSD/media/configs
#
# ---
# apiVersion: v1
# kind: PersistentVolume
# metadata:
# name: nfs-nas-git
# namespace: backups
# spec:
# capacity:
# storage: 3Ti
# accessModes:
# - ReadWriteMany
# mountOptions:
# - rw
# - sync
# - noatime
# - vers=4.2
# persistentVolumeReclaimPolicy: Retain
# csi:
# driver: nfs.csi.k8s.io
# volumeHandle: nfs-nas-git
# volumeAttributes:
# server: 192.168.0.100
# share: /git
#
# ---
# apiVersion: v1
# kind: PersistentVolume
# metadata:
# name: nfs-nas-backups
# namespace: backups
# spec:
# capacity:
# storage: 3Ti
# accessModes:
# - ReadWriteMany
# mountOptions:
# - rw
# - sync
# - noatime
# - vers=4.2
# persistentVolumeReclaimPolicy: Retain
# csi:
# driver: nfs.csi.k8s.io
# volumeHandle: nfs-nas-backups
# volumeAttributes:
# server: 192.168.0.100
# share: /backups
#