DBBackup - Simple database backup locally or to S3 or more
DBBackup - Simple database backup locally or to S3 or more
DBBackup is able to backup up CouchDB, InfluxDB, MySQL/MariaDB, Microsoft SQL, MongoDB, Postgres, Redis servers.
I currently use this for automated backups of my Databases (MariaDB and PostgreSQL) I don’t consider the homeassistant database that important so i have excluded this as it can get quite large
Kubernetes Manifest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: dbbackup
app.kubernetes.io/instance: dbbackup
app.kubernetes.io/name: dbbackup
name: dbbackup
namespace: backup
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: dbbackup
template:
metadata:
labels:
app: dbbackup
app.kubernetes.io/name: dbbackup
spec:
nodeSelector:
worker: "true"
containers:
- image: tiredofit/db-backup:latest
name: dbbackup
env:
- name: CONTAINER_ENABLE_MONITORING
value: "FALSE"
- name: DEFAULT_CREATE_LATEST_SYMLINK
value: "FALSE"
- name: DEFAULT_BACKUP_BEGIN
value: 0 1 * * 0
- name: DEFAULT_CLEANUP_TIME
value: "10080"
- name: TZ
value: Europe/London
- name: DB01_HOST
value: mariadb.mariadb
- name: DB01_NAME
value: ALL
- name: DB01_PASS
value: [REDACTED]
- name: DB01_TYPE
value: mysql
- name: DB01_USER
value: backup
- name: DB01_SPLIT_DB
value: "TRUE"
- name: DB02_HOST
value: postgresql.postgresql
- name: DB02_NAME
value: ALL
- name: DB02_PASS
value: [REDACTED]
- name: DB02_TYPE
value: pgsql
- name: DB02_USER
value: admin
- name: DB02_SPLIT_DB
value: "TRUE"
volumeMounts:
- mountPath: "/backup"
readOnly: false
name: smb
subPath: "database"
volumes:
- name: smb
persistentVolumeClaim:
claimName: pvc-dbbackup-smb
Docker Compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
version: '3.2'
services:
dbbackup:
image: tiredofit/db-backup:latest
hostname: dbbackup
networks:
- traefik-public
environment:
- TZ=Europe/London
- DEFAULT_BACKUP_BEGIN=0 1 * * 0
- DEFAULT_CLEANUP_TIME=10080
- CONTAINER_ENABLE_MONITORING=FALSE
# MySQL (MariaDB)
- DB01_TYPE=mysql
- DB01_HOST=mariadb
- DB01_NAME=ALL
- DB01_USER=[REDACTED]
- DB01_PASS=[REDACTED]
- DB01_NAME_EXCLUDE=homeassistant
# PostgreSQL
- DB02_TYPE=pgsql
- DB02_HOST=postgresql
- DB02_NAME=ALL
- DB02_USER=[REDACTED]
- DB02_PASS=[REDACTED]
volumes:
- type: bind
source: /srv/cephfs/docker/appdata/dbbackup
target: /backup
deploy:
mode: replicated
placement:
constraints: [node.role == manager]
networks:
traefik-public:
external: true
This post is licensed under CC BY 4.0 by the author.