mirror of
https://github.com/tiredofit/docker-db-backup.git
synced 2025-12-21 21:33:28 +01:00
Release 1.19.0 - See CHANGELOG.md
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
## 1.19.0 2020-04-22 <dave at tiredofit dot ca>
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Custom Script support to execute upon compleition of backup
|
||||||
|
|
||||||
|
|
||||||
## 1.18.2 2020-04-08 <hyun007 @ github>
|
## 1.18.2 2020-04-08 <hyun007 @ github>
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
29
README.md
29
README.md
@@ -21,6 +21,7 @@ Currently backs up CouchDB, InfluxDB, MySQL, MongoDB Postgres, Redis, Rethink se
|
|||||||
* connect to any container running on the same system
|
* connect to any container running on the same system
|
||||||
* select how often to run a dump
|
* select how often to run a dump
|
||||||
* select when to start the first dump, whether time of day or relative to container start time
|
* select when to start the first dump, whether time of day or relative to container start time
|
||||||
|
* Execute script after backup for monitoring/alerting purposes
|
||||||
|
|
||||||
* This Container uses a [customized Alpine Linux base](https://hub.docker.com/r/tiredofit/alpine) which includes [s6 overlay](https://github.com/just-containers/s6-overlay) enabled for PID 1 Init capabilities, [zabbix-agent](https://zabbix.org) for individual container monitoring, Cron also installed along with other tools (bash,curl, less, logrotate, nano, vim) for easier management. It also supports sending to external SMTP servers.
|
* This Container uses a [customized Alpine Linux base](https://hub.docker.com/r/tiredofit/alpine) which includes [s6 overlay](https://github.com/just-containers/s6-overlay) enabled for PID 1 Init capabilities, [zabbix-agent](https://zabbix.org) for individual container monitoring, Cron also installed along with other tools (bash,curl, less, logrotate, nano, vim) for easier management. It also supports sending to external SMTP servers.
|
||||||
|
|
||||||
@@ -42,6 +43,7 @@ Currently backs up CouchDB, InfluxDB, MySQL, MongoDB Postgres, Redis, Rethink se
|
|||||||
- [Environment Variables](#environmentvariables)
|
- [Environment Variables](#environmentvariables)
|
||||||
- [Maintenance](#maintenance)
|
- [Maintenance](#maintenance)
|
||||||
- [Shell Access](#shell-access)
|
- [Shell Access](#shell-access)
|
||||||
|
- [Custom Scripts](#custom-scripts)
|
||||||
|
|
||||||
# Prerequisites
|
# Prerequisites
|
||||||
|
|
||||||
@@ -76,6 +78,7 @@ The following directories are used for configuration and can be mapped for persi
|
|||||||
| Directory | Description |
|
| Directory | Description |
|
||||||
|-----------|-------------|
|
|-----------|-------------|
|
||||||
| `/backup` | Backups |
|
| `/backup` | Backups |
|
||||||
|
| `/assets/custom-scripts | *Optional* Put custom scripts in this directory to execute after backup operations`
|
||||||
|
|
||||||
|
|
||||||
## Environment Variables
|
## Environment Variables
|
||||||
@@ -107,6 +110,7 @@ Along with the Environment Variables from the [Base image](https://hub.docker.co
|
|||||||
|
|
||||||
Manual Backups can be perforemd by entering the container and typing `backup-now`
|
Manual Backups can be perforemd by entering the container and typing `backup-now`
|
||||||
|
|
||||||
|
|
||||||
#### Shell Access
|
#### Shell Access
|
||||||
|
|
||||||
For debugging and maintenance purposes you may want access the containers shell.
|
For debugging and maintenance purposes you may want access the containers shell.
|
||||||
@@ -115,3 +119,28 @@ For debugging and maintenance purposes you may want access the containers shell.
|
|||||||
docker exec -it (whatever your container name is e.g.) db-backup bash
|
docker exec -it (whatever your container name is e.g.) db-backup bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Custom Scripts
|
||||||
|
|
||||||
|
If you want to execute a custom script at the end of backup, you can drop bash scripts with the extension of `.sh` in this directory. See the following example to utilize:
|
||||||
|
|
||||||
|
````bash
|
||||||
|
$ cat post-script.sh
|
||||||
|
##!/bin/bash
|
||||||
|
|
||||||
|
## Example Post Script
|
||||||
|
## $1=DB_TYPE (Type of Backup)
|
||||||
|
## $2=DB_HOST (Backup Host)
|
||||||
|
## #3=DB_NAME (Name of Database backed up
|
||||||
|
## $4=DATE (Date of Backup)
|
||||||
|
## $5=TIME (Time of Backup)
|
||||||
|
## $6=BACKUP_FILENAME (Filename of Backup)
|
||||||
|
## $7=FILESIZE (Filesize of backup)
|
||||||
|
## $8=MD5_RESULT (MD5Sum if enabled)
|
||||||
|
|
||||||
|
echo "${1} Backup Completed on ${2} for ${3} on ${4} ${5}. Filename: ${5} Size: ${6} MD5: ${7}"
|
||||||
|
````
|
||||||
|
Outputs the following on the console:
|
||||||
|
|
||||||
|
`mysql Backup Completed on example-db for example on 2020-04-22 05:19:10. Filename: mysql_example_example-db_20200422-051910.sql.bz2 Size: 7795 bytes MD5: 952fbaafa30437494fdf3989a662cd40`
|
||||||
|
|
||||||
|
If you wish to change the size value from bytes to megabytes set environment variable `SIZE_VALUE=megabytes`
|
||||||
@@ -6,6 +6,7 @@ services:
|
|||||||
image: mariadb:latest
|
image: mariadb:latest
|
||||||
volumes:
|
volumes:
|
||||||
- ./db:/var/lib/mysql
|
- ./db:/var/lib/mysql
|
||||||
|
- ./post-script.sh:/assets/custom-scripts/post-script.sh
|
||||||
environment:
|
environment:
|
||||||
- MYSQL_ROOT_PASSWORD=examplerootpassword
|
- MYSQL_ROOT_PASSWORD=examplerootpassword
|
||||||
- MYSQL_DATABASE=example
|
- MYSQL_DATABASE=example
|
||||||
|
|||||||
13
examples/post-script.sh
Executable file
13
examples/post-script.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
##!/bin/bash
|
||||||
|
|
||||||
|
## Example Post Script
|
||||||
|
## $1=DB_TYPE (Type of Backup)
|
||||||
|
## $2=DB_HOST (Backup Host)
|
||||||
|
## #3=DB_NAME (Name of Database backed up
|
||||||
|
## $4=DATE (Date of Backup)
|
||||||
|
## $5=TIME (Time of Backup)
|
||||||
|
## $6=BACKUP_FILENAME (Filename of Backup)
|
||||||
|
## $7=FILESIZE (Filesize of backup)
|
||||||
|
## $8=MD5_RESULT (MD5Sum if enabled)
|
||||||
|
|
||||||
|
echo "${1} Backup Completed on ${2} for ${3} on ${4} ${5}. Filename: ${6} Size: ${7} bytes MD5: ${8}"
|
||||||
@@ -27,6 +27,7 @@ DBTYPE=${DB_TYPE}
|
|||||||
MD5=${MD5:-TRUE}
|
MD5=${MD5:-TRUE}
|
||||||
SPLIT_DB=${SPLIT_DB:-FALSE}
|
SPLIT_DB=${SPLIT_DB:-FALSE}
|
||||||
TMPDIR=/tmp/backups
|
TMPDIR=/tmp/backups
|
||||||
|
SIZE_VALUE=${SIZE_VALUE:-"bytes"}
|
||||||
|
|
||||||
if [ "$1" = "NOW" ]; then
|
if [ "$1" = "NOW" ]; then
|
||||||
DB_DUMP_BEGIN=+0
|
DB_DUMP_BEGIN=+0
|
||||||
@@ -279,6 +280,7 @@ function generate_md5() {
|
|||||||
if [ "$MD5" = "TRUE" ] || [ "$MD5" = "true" ] ; then
|
if [ "$MD5" = "TRUE" ] || [ "$MD5" = "true" ] ; then
|
||||||
cd $TMPDIR
|
cd $TMPDIR
|
||||||
md5sum ${TARGET} > ${TARGET}.md5
|
md5sum ${TARGET} > ${TARGET}.md5
|
||||||
|
MD5VALUE=$(md5sum ${TARGET} | awk '{ print $1}')
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,6 +288,22 @@ function move_backup() {
|
|||||||
mkdir -p ${DB_DUMP_TARGET}
|
mkdir -p ${DB_DUMP_TARGET}
|
||||||
mv ${TMPDIR}/*.md5 ${DB_DUMP_TARGET}/
|
mv ${TMPDIR}/*.md5 ${DB_DUMP_TARGET}/
|
||||||
mv ${TMPDIR}/${TARGET} ${DB_DUMP_TARGET}/${TARGET}
|
mv ${TMPDIR}/${TARGET} ${DB_DUMP_TARGET}/${TARGET}
|
||||||
|
case "$SIZE_VALUE" in
|
||||||
|
"b" | "bytes" )
|
||||||
|
SIZE_VALUE=1
|
||||||
|
;;
|
||||||
|
"[kK]" | "[kK][bB]" | "kilobytes" | "[mM]" | "[mM][bB]" | "megabytes" )
|
||||||
|
SIZE_VALUE="-h"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
SIZE_VALUE=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [ "$SIZE_VALUE" = "1" ] ; then
|
||||||
|
FILESIZE=$(stat -c%s "${DB_DUMP_TARGET}/${TARGET}")
|
||||||
|
else
|
||||||
|
FILESIZE=$(du -h "${DB_DUMP_TARGET}/${TARGET}" | awk '{ print $1}')
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -316,6 +334,8 @@ print_info "Initialized on `date`"
|
|||||||
|
|
||||||
### Define Target name
|
### Define Target name
|
||||||
now=$(date +"%Y%m%d-%H%M%S")
|
now=$(date +"%Y%m%d-%H%M%S")
|
||||||
|
now_time=$(date +"%H:%M:%S")
|
||||||
|
now_date=$(date +"%Y-%m-%d")
|
||||||
TARGET=${DBTYPE}_${DBNAME}_${DBHOST}_${now}.sql
|
TARGET=${DBTYPE}_${DBNAME}_${DBHOST}_${now}.sql
|
||||||
|
|
||||||
### Take a Dump
|
### Take a Dump
|
||||||
@@ -361,6 +381,17 @@ print_info "Initialized on `date`"
|
|||||||
find $DB_DUMP_TARGET/ -mmin +$DB_CLEANUP_TIME -iname "$DBTYPE_$DBNAME_*.*" -exec rm {} \;
|
find $DB_DUMP_TARGET/ -mmin +$DB_CLEANUP_TIME -iname "$DBTYPE_$DBNAME_*.*" -exec rm {} \;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
### Post Backup Custom Script Support
|
||||||
|
if [ -d /assets/custom-scripts/ ] ; then
|
||||||
|
print_info "Found Custom Scripts to Execute"
|
||||||
|
for f in $(find /assets/custom-scripts/ -name \*.sh -type f); do
|
||||||
|
print_info "Running Script ${f}"
|
||||||
|
## script DB_TYPE DB_HOST DB_NAME DATE BACKUP_FILENAME FILESIZE MD5_VALUE
|
||||||
|
chmod +x ${f}
|
||||||
|
${f} "${DBTYPE}" "${DBHOST}" "${DBNAME}" "${now_date}" "${now_time}" "${TARGET}" "${FILESIZE}" "${MD5VALUE}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
### Go back to Sleep until next Backup time
|
### Go back to Sleep until next Backup time
|
||||||
if [ "$MANUAL" = "TRUE" ]; then
|
if [ "$MANUAL" = "TRUE" ]; then
|
||||||
exit 1;
|
exit 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user