mirror of
https://github.com/tiredofit/docker-db-backup.git
synced 2025-12-22 21:53:42 +01:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be619fb707 | ||
|
|
cccc088b35 | ||
|
|
4579f4057c | ||
|
|
cd683648d0 | ||
|
|
11f55f3d82 |
31
CHANGELOG.md
31
CHANGELOG.md
@@ -1,3 +1,34 @@
|
||||
## 4.0.24 2023-11-28 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Fix issue with cron parsing and 0 being a value getting clobbered by sort command
|
||||
|
||||
|
||||
## 4.0.23 2023-11-28 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Resolve issue with custom notification scripts not executing
|
||||
|
||||
|
||||
## 4.0.22 2023-11-25 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Move cleanup_old_data routines to happen within backup_ function to properly accomodate for globals, and ALL DB_NAME use cases
|
||||
|
||||
|
||||
## 4.0.21 2023-11-22 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Fix for SQLite backups not being cleaned up properly due to a malformed base
|
||||
|
||||
|
||||
## 4.0.20 2023-11-21 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Update base image to support S6 Overlay 3.1.6.2 to solve shutdown issues specifically with MODE=MANUAL and MANUAL_RUN_FOREVER=TRUE
|
||||
- Add some safety nets for Manual scheduling
|
||||
|
||||
|
||||
## 4.0.19 2023-11-20 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -16,7 +16,7 @@ fi
|
||||
|
||||
trap ctrl_c INT
|
||||
|
||||
if [[ "${MODE,,}" =~ "standalone" ]] || [ "${1,,}" = "manual" ] || [ "${1,,}" = "now" ]; then
|
||||
if [[ "${MODE,,}" =~ "standalone" ]] || [ "${MODE,,}" = "manual" ] || [ "${1,,}" = "manual" ] || [ "${1,,}" = "now" ]; then
|
||||
print_debug "Detected Manual Mode"
|
||||
persist=false
|
||||
backup_job_backup_begin=+0
|
||||
@@ -90,7 +90,6 @@ while true; do
|
||||
fi
|
||||
|
||||
symlink_log
|
||||
cleanup_old_data
|
||||
|
||||
if var_false "${persist}" ; then
|
||||
print_debug "Exiting due to manual mode"
|
||||
|
||||
@@ -482,6 +482,7 @@ backup_couch() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup ${backup_job_db_name}
|
||||
cleanup_old_data
|
||||
}
|
||||
|
||||
backup_influx() {
|
||||
@@ -522,6 +523,7 @@ backup_influx() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename_dir}"
|
||||
post_dbbackup "${db}"
|
||||
cleanup_old_data
|
||||
done
|
||||
;;
|
||||
2 )
|
||||
@@ -550,6 +552,7 @@ backup_influx() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename_dir}"
|
||||
post_dbbackup "${db}"
|
||||
cleanup_old_data
|
||||
done
|
||||
;;
|
||||
esac
|
||||
@@ -586,6 +589,7 @@ backup_mongo() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup "${backup_job_db_name}"
|
||||
cleanup_old_data
|
||||
if var_true "${DEBUG_BACKUP_MONGO}" ; then debug off; fi
|
||||
}
|
||||
|
||||
@@ -614,6 +618,7 @@ backup_mssql() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup "${backup_job_db_name}"
|
||||
cleanup_old_data
|
||||
;;
|
||||
trn|transaction )
|
||||
prepare_dbbackup
|
||||
@@ -636,6 +641,7 @@ backup_mssql() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup "${backup_job_db_name}"
|
||||
cleanup_old_data
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -687,6 +693,7 @@ backup_mysql() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup "${db}"
|
||||
cleanup_old_data
|
||||
done
|
||||
else
|
||||
write_log debug "Not splitting database dumps into their own files"
|
||||
@@ -707,6 +714,7 @@ backup_mysql() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup all
|
||||
cleanup_old_data
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -728,6 +736,7 @@ backup_pgsql() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup "globals"
|
||||
cleanup_old_data
|
||||
}
|
||||
|
||||
if var_true "${DEBUG_BACKUP_PGSQL}" ; then debug on; fi
|
||||
@@ -776,6 +785,7 @@ backup_pgsql() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup "${db}"
|
||||
cleanup_old_data
|
||||
done
|
||||
if var_true "${_postgres_backup_globals}" ; then backup_pgsql_globals; fi
|
||||
else
|
||||
@@ -805,6 +815,7 @@ backup_pgsql() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup all
|
||||
cleanup_old_data
|
||||
if var_true "${_postgres_backup_globals}" ; then backup_pgsql_globals; fi
|
||||
fi
|
||||
}
|
||||
@@ -844,6 +855,7 @@ backup_redis() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup all
|
||||
cleanup_old_data
|
||||
}
|
||||
|
||||
backup_sqlite3() {
|
||||
@@ -851,7 +863,7 @@ backup_sqlite3() {
|
||||
db=$(basename "${backup_job_db_host}")
|
||||
db="${db%.*}"
|
||||
backup_job_filename=sqlite3_${db}_${now}.sqlite3
|
||||
backup_job_filename_base=sqlite3_${db}.sqlite3
|
||||
backup_job_filename_base=sqlite3_${db}
|
||||
pre_dbbackup "${db}"
|
||||
write_log notice "Dumping sqlite3 database: '${backup_job_db_host}' ${compression_string}"
|
||||
if var_true "${DEBUG_BACKUP_SQLITE3}" ; then debug on; fi
|
||||
@@ -872,6 +884,7 @@ backup_sqlite3() {
|
||||
move_dbbackup
|
||||
check_exit_code move "${backup_job_filename}"
|
||||
post_dbbackup "${db}"
|
||||
cleanup_old_data
|
||||
}
|
||||
|
||||
check_availability() {
|
||||
@@ -1160,13 +1173,14 @@ create_schedulers() {
|
||||
instance=$(printf "%02d" $instance)
|
||||
cp -R /assets/dbbackup/template-dbbackup /etc/services.available/dbbackup-"${instance}"
|
||||
sed -i "s|{{BACKUP_NUMBER}}|${instance}|g" /etc/services.available/dbbackup-"${instance}"/run
|
||||
|
||||
if [ "${MODE,,}" = "manual" ] ; then service_stop dbbackup-"${instance}" ; fi
|
||||
cat <<EOF >> /usr/bin/backup"${instance}"-now
|
||||
#!/bin/bash
|
||||
source /assets/functions/00-container
|
||||
PROCESS_NAME=db-backup${instance}
|
||||
print_info "Starting Manual Backup for db-backup${instance}"
|
||||
/var/run/s6/legacy-services/dbbackup-${instance}/run now
|
||||
#/var/run/s6/legacy-services/dbbackup-${instance}/run now
|
||||
/etc/services.available/dbbackup-${instance}/run now
|
||||
|
||||
EOF
|
||||
chmod +x /usr/bin/backup"${instance}"-now
|
||||
@@ -1176,11 +1190,11 @@ EOF
|
||||
cat <<EOF > /usr/bin/backup-now
|
||||
#!/bin/bash
|
||||
|
||||
/usr/bin/backup${instance}-now
|
||||
/usr/bin/backup${instance}-now now
|
||||
|
||||
EOF
|
||||
else
|
||||
echo "/usr/bin/backup${instance}-now" >> /usr/bin/backup-now
|
||||
echo "/usr/bin/backup${instance}-now now" >> /usr/bin/backup-now
|
||||
fi
|
||||
|
||||
instance=$(echo "${instance} +1" | bc)
|
||||
@@ -1337,20 +1351,20 @@ EOF
|
||||
notify() {
|
||||
if var_true "${DEBUG_NOTIFY}" ; then debug on; fi
|
||||
notification_custom() {
|
||||
if [ -n "${NOTIFICATION_SCRIPT}" ] ; then
|
||||
if var_true "${NOTIFICATION_SCRIPT_SKIP_X_VERIFY}" ; then
|
||||
eval "${NOTIFICATION_SCRIPT}" "${1}" "${2}" "${3}" "${4}" "${5}"
|
||||
if [ -n "${NOTIFICATION_CUSTOM_SCRIPT}" ] ; then
|
||||
if var_true "${NOTIFICATION_CUSTOM_SCRIPT_SKIP_X_VERIFY}" ; then
|
||||
eval "${NOTIFICATION_CUSTOM_SCRIPT}" "${1}" "${2}" "${3}" "${4}" "${5}"
|
||||
else
|
||||
if [ -x "${NOTIFICATION_SCRIPT}" ] ; then
|
||||
write_log notice "Found NOTIFICATION_SCRIPT environment variable. Executing '${NOTIFICATION_SCRIPT}"
|
||||
if [ -x "${NOTIFICATION_CUSTOM_SCRIPT}" ] ; then
|
||||
write_log notice "Found NOTIFICATION_CUSTOM_SCRIPT environment variable. Executing '${NOTIFICATION_CUSTOM_SCRIPT}"
|
||||
# script timestamp logfile errorcode subject body
|
||||
eval "${NOTIFICATION_SCRIPT}" "${1}" "${2}" "${3}" "${4}" "${5}"
|
||||
eval "${NOTIFICATION_CUSTOM_SCRIPT}" "${1}" "${2}" "${3}" "${4}" "${5}"
|
||||
else
|
||||
write_log error "Can't execute NOTIFICATION_SCRIPT environment variable '${NOTIFICATION_SCRIPT}' as its filesystem bit is not executible!"
|
||||
write_log error "Can't execute NOTIFICATION_CUSTOM_SCRIPT environment variable '${NOTIFICATION_CUSTOM_SCRIPT}' as its filesystem bit is not executible!"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
print_error "[notifications] No NOTIFICATION_SCRIPT variable set - Skipping sending Custom notifications"
|
||||
print_error "[notifications] No NOTIFICATION_CUSTOM_SCRIPT variable set - Skipping sending Custom notifications"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -1452,7 +1466,7 @@ EOF
|
||||
# $4 body
|
||||
|
||||
if var_true "${ENABLE_NOTIFICATIONS}" ; then
|
||||
notification_types=$(echo "${NOTIIFICATION_TYPE}" | tr "," "\n")
|
||||
notification_types=$(echo "${NOTIFICATION_TYPE}" | tr "," "\n")
|
||||
for notification_type in $notification_types ; do
|
||||
case "${notification_type,,}" in
|
||||
"custom" )
|
||||
@@ -1851,7 +1865,7 @@ timer() {
|
||||
fi
|
||||
done
|
||||
|
||||
validate_all=$(echo "${validate_all}" | tr ' ' '\n' | sort -n -u | tr '\n' ' ')
|
||||
validate_all=$(echo "${validate_all}" | tr ' ' '\n' | sort -g -u | tr '\n' ' ')
|
||||
for entry in $validate_all; do
|
||||
if [ ${entry} -ge ${3} ]; then
|
||||
echo "${entry}"
|
||||
|
||||
Reference in New Issue
Block a user