|
1 | | -# WSC Backup Cronjob with Shell-Script |
2 | | -# using: Toolbox Image from https://github.com/Tob1as/docker-tools |
3 | | -# Requirements: kubectl, jq, tar, gzip, mariadb-client/mysql-client |
4 | | - |
5 | | - |
6 | | -# DO NOT USE - DATABASE BACKUP is NOT ready !!!!!!!!!!!!! |
7 | | - |
8 | | - |
9 | | -# DO NOT USE - DATABASE BACKUP is NOT ready !!!!!!!!!!!!! |
10 | | - |
11 | | - |
12 | | -# DO NOT USE - DATABASE BACKUP is NOT ready !!!!!!!!!!!!! |
| 1 | +# WSC Backup Cronjob for Database and Files with simple Shell-Script |
| 2 | +# |
| 3 | +# Docker Image: Toolbox from https://github.com/Tob1as/docker-tools |
| 4 | +# Requirements: kubectl, jq, tar, gzip, mariadb-connector-c, mariadb-client (mysql-client) |
| 5 | +# |
| 6 | +# Docs (WSC Backup): |
| 7 | +# * https://manual.woltlab.com/en/backup/ |
| 8 | +# * https://manual.woltlab.com/de/backup/ |
| 9 | +# |
| 10 | +# NOTE: |
| 11 | +# * The script below is just an example. Adapt it to your requirements and TEST backup and recovery!! |
| 12 | +# * NO guarantee! |
| 13 | +# * This script does NOT make remote backups! (via SSH/SFTP, ...) |
| 14 | +# |
13 | 15 |
|
14 | 16 | --- |
15 | 17 |
|
@@ -61,7 +63,7 @@ roleRef: |
61 | 63 |
|
62 | 64 | --- |
63 | 65 |
|
64 | | ---- |
| 66 | +# Recommended: After the initial installation, comment PVC out to protect it (and backups) from deletion by mistake. |
65 | 67 |
|
66 | 68 | apiVersion: v1 |
67 | 69 | kind: PersistentVolumeClaim |
@@ -128,13 +130,13 @@ spec: |
128 | 130 | - /bin/sh |
129 | 131 | - -c |
130 | 132 | - "sleep 5; exit 0" |
131 | | - envFrom: |
132 | | - - configMapRef: |
133 | | - name: wsc-backup-env-config |
134 | | - optional: true |
135 | | - - secretRef: |
136 | | - name: wsc-backup-env-secret |
137 | | - optional: true |
| 133 | + #envFrom: |
| 134 | + #- configMapRef: |
| 135 | + # name: wsc-backup-env-config |
| 136 | + # optional: true |
| 137 | + #- secretRef: |
| 138 | + # name: wsc-backup-env-secret |
| 139 | + # optional: true |
138 | 140 | env: |
139 | 141 | - name: TZ |
140 | 142 | value: "Europe/Berlin" |
@@ -197,7 +199,7 @@ data: |
197 | 199 | backup-script.sh: |- |
198 | 200 | #!/bin/sh |
199 | 201 | |
200 | | - # Requirements: kubectl, jq, tar, gzip, mariadb-client (mysql-client) |
| 202 | + # Requirements: kubectl, jq, tar, gzip, mariadb-connector-c, mariadb-client (mysql-client) |
201 | 203 | |
202 | 204 | set -eu |
203 | 205 | |
@@ -263,20 +265,20 @@ data: |
263 | 265 | # BACKUPS |
264 | 266 | echo ">> Backup process is started ..." |
265 | 267 | if [ -n "$DB_DEPLOYMENT_NAME" -a -n "$DB_HOST" -a -n "$DB_PORT" -a -n "$DB_USERNAME" -a -n "$DB_PASSWORD" -a -n "$DB_DATABASE" ]; then |
266 | | - echo ">> Database Backup process is started ..." |
267 | | - DB_DUMP_OPTIONS="--skip-ssl-verify-server-cert" # --skip-ssl |
| 268 | + echo ">> [$(date '+%H:%M:%S')] Database Backup process is started ..." |
| 269 | + DB_DUMP_OPTIONS="--single-transaction --skip-lock-tables --net_buffer_length 16384 --no-tablespaces --skip-ssl-verify-server-cert" # --skip-ssl-verify-server-cert or --skip-ssl |
268 | 270 | mariadb-dump --host=${DB_HOST} --port=${DB_PORT} --user=${DB_USERNAME} --password=${DB_PASSWORD} ${DB_DUMP_OPTIONS} --databases ${DB_DATABASE} | gzip -9 > ${BACKUP_PATH_LOCAL}/wsc_backup_${BACKUP_DATE}_db.sql.gz |
269 | 271 | #mariadb-dump --host=${DB_HOST} --port=${DB_PORT} --user=${DB_USERNAME} --password=${DB_PASSWORD} ${DB_DUMP_OPTIONS} --databases ${DB_DATABASE} > ${BACKUP_PATH_LOCAL}/wsc_backup_${BACKUP_DATE}_db.sql |
270 | | - echo ">> Database Backup process is complete!" |
| 272 | + echo ">> [$(date '+%H:%M:%S')] Database Backup process is complete!" |
271 | 273 | else |
272 | 274 | echo ">> WARNING: Database Backup process is skipped!" |
273 | 275 | fi |
274 | 276 | if [ -n "$WEB_DEPLOYMENT_NAME" -a -n "$WEB_CONTAINER_HELPER_NAME" -a -n "$WEB_CONTAINER_HELPER_BACKUP_PATH" ]; then |
275 | | - echo ">> Files (Web) Backup process is started ..." |
| 277 | + echo ">> [$(date '+%H:%M:%S')] Files (Web) Backup process is started ..." |
276 | 278 | kubectl ${CONTEXT} -n ${NAMESPACE} exec "${WEB_POD_NAME}" -c "${WEB_CONTAINER_HELPER_NAME}" -- tar cvpzf ${WEB_CONTAINER_HELPER_BACKUP_PATH}/wsc_backup_${BACKUP_DATE}_files.tar.gz -C /var/www/html . |
277 | 279 | kubectl ${CONTEXT} -n ${NAMESPACE} -c "${WEB_CONTAINER_HELPER_NAME}" cp "${WEB_POD_NAME}:${WEB_CONTAINER_HELPER_BACKUP_PATH}/wsc_backup_${BACKUP_DATE}_files.tar.gz" ${BACKUP_PATH_LOCAL}/wsc_backup_${BACKUP_DATE}_files.tar.gz |
278 | 280 | kubectl ${CONTEXT} -n ${NAMESPACE} exec "${WEB_POD_NAME}" -c "${WEB_CONTAINER_HELPER_NAME}" -- sh -c "rm ${WEB_CONTAINER_HELPER_BACKUP_PATH}/wsc_backup_${BACKUP_DATE}_files.tar.gz" |
279 | | - echo ">> Files Backup process is complete!" |
| 281 | + echo ">> [$(date '+%H:%M:%S')] Files Backup process is complete!" |
280 | 282 | else |
281 | 283 | echo ">> WARNING: Files Backup process is skipped!" |
282 | 284 | fi |
|
0 commit comments