Add support of performance settings like 'SET GLOBAL max_allowed_packet=1073741824'.
This commit is contained in:
@ -210,6 +210,9 @@ DEFAULT_BORG_RSH='ssh -i /root/.ssh/id_ed25519-borg-backup'
|
||||
|
||||
DEFAULT_NC_DB_BACKUP_DIR="/data/backup/sql"
|
||||
|
||||
DEFAULT_MYSQL_CREDENTIALS="-u root -S /run/mysqld/mysqld.sock"
|
||||
DEFAULT_MYSQL_PERFORMANCE_SETTINGS=false
|
||||
|
||||
DEFAULT_BACKUP_OTHER_DIRECTORIES="/etc /home /root /var/spool/cron"
|
||||
|
||||
DEFAULT_KEEP_DAILY=10
|
||||
@ -233,15 +236,17 @@ else
|
||||
fatal "No configuration file '$conf_file' present!"
|
||||
fi
|
||||
|
||||
[[ -z "${ADMIN_EMAIL}" ]] && ADMIN_EMAIL="${DEFAULT_ADMIN_EMAIL}"
|
||||
[[ -z "${COMPANY}" ]] && COMPANY="${DEFAULT_COMPANY}"
|
||||
[[ -z "${FROM_ADDRESS}" ]] && FROM_ADDRESS="${DEFAULT_FROM_ADDRESS}"
|
||||
|
||||
[[ -z "${MYSQL_CREDENTIALS}" ]] && MYSQL_CREDENTIALS="${DEFAULT_MYSQL_CREDENTIALS}"
|
||||
[[ -z "${MYSQL_PERFORMANCE_SETTINGS}" ]] && MYSQL_PERFORMANCE_SETTINGS=${DEFAULT_MYSQL_PERFORMANCE_SETTINGS}
|
||||
|
||||
# -------------
|
||||
# - Job is already running?
|
||||
# -------------
|
||||
|
||||
[[ -z "${ADMIN_EMAIL}" ]] && ADMIN_EMAIL="${DEFAULT_ADMIN_EMAIL}"
|
||||
[[ -z "${COMPANY}" ]] && COMPANY="${DEFAULT_COMPANY}"
|
||||
[[ -z "${FROM_ADDRESS}" ]] && FROM_ADDRESS="${DEFAULT_FROM_ADDRESS}"
|
||||
|
||||
# - If job already runs, stop execution..
|
||||
# -
|
||||
if mkdir "$LOCK_DIR" 2> /dev/null ; then
|
||||
@ -541,49 +546,143 @@ fi
|
||||
blank_line
|
||||
|
||||
|
||||
if ${MYSQL_PERFORMANCE_SETTINGS}; then
|
||||
|
||||
# - GET current (global) Autocommit value
|
||||
# -
|
||||
echononl "GET current (global) value \033[1mautocommit\033[m"
|
||||
CUR_AUTOCOMMIT="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'autocommit'" \
|
||||
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
# - GET current (global) value for 'foreign_key_checks'
|
||||
# -
|
||||
echononl "GET current (global) value \033[1mforeign_key_checks\033[m"
|
||||
CUR_FOREIGN_KEY_CHECKS="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'foreign_key_checks'" \
|
||||
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
# - GET current (global) value for 'unique_checks'
|
||||
# -
|
||||
echononl "GET current (global) value \033[1munique_checks\033[m"
|
||||
CUR_UNIQUE_CHECKS="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'unique_checks'" \
|
||||
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
# - GET current (global) value for 'innodb_flush_log_at_trx_commit'
|
||||
# -
|
||||
echononl "GET current (global) value \033[1minnodb_flush_log_at_trx_commit\033[m"
|
||||
CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log_at_trx_commit'" \
|
||||
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
# - GET current (global) value for 'max_allowed_packet'
|
||||
# -
|
||||
echononl "GET current (global) value \033[1mmax_allowed_packet\033[m"
|
||||
CUR_MAX_ALLOWED_PACKET="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet'" \
|
||||
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
blank_line
|
||||
|
||||
echononl "Set Autocommit to OFF"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL autocommit='OFF'" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
echononl "Set foreign_key_checks to OFF"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL foreign_key_checks='OFF'" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
echononl "Set unique_checks to OFF"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL unique_checks='OFF'" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
echononl "Set innodb_flush_log_at_trx_commit to 2"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL innodb_flush_log_at_trx_commit=2" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
echononl "Set max_allowed_packet to 1G"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL max_allowed_packet=1073741824" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
blank_line
|
||||
|
||||
fi
|
||||
|
||||
|
||||
# Create database backup
|
||||
#
|
||||
echononl "Create database backup .."
|
||||
|
||||
mysql_max_allowed_packet="512M"
|
||||
cat << EOF >> ${BORG_LOG_FILE}
|
||||
mysqldump \\
|
||||
--protocol=SOCKET \\
|
||||
mysqldump ${MYSQL_CREDENTIALS} \\
|
||||
--single-transaction \\
|
||||
--max-allowed-packet=${mysql_max_allowed_packet} \\
|
||||
--skip-opt \\
|
||||
--add-drop-table \\
|
||||
--add-locks \\
|
||||
--create-options \\
|
||||
--quick \\
|
||||
--compress \\
|
||||
--set-charset \\
|
||||
--disable-keys \\
|
||||
--lock-tables \\
|
||||
--routines \\
|
||||
-h localhost \\
|
||||
-u${NC_DB_USER} \\
|
||||
-p${NC_DB_PASS} \\
|
||||
-e ${NC_DB} > ${NC_DB_BACKUP_DIR}/${NC_DB}-${backup_date}.sql
|
||||
EOF
|
||||
|
||||
mysqldump \
|
||||
--protocol=SOCKET \
|
||||
mysqldump ${MYSQL_CREDENTIALS} \
|
||||
--single-transaction \
|
||||
--max-allowed-packet=${mysql_max_allowed_packet} \
|
||||
--skip-opt \
|
||||
--add-drop-table \
|
||||
--add-locks \
|
||||
--create-options \
|
||||
--quick \
|
||||
--compress \
|
||||
--set-charset \
|
||||
--disable-keys \
|
||||
--lock-tables \
|
||||
--routines \
|
||||
-h localhost \
|
||||
-u${NC_DB_USER} \
|
||||
-p${NC_DB_PASS} \
|
||||
-e ${NC_DB} > ${NC_DB_BACKUP_DIR}/${NC_DB}-${backup_date}.sql 2> ${log_file}
|
||||
|
||||
|
||||
if [[ $? -gt 0 ]] ; then
|
||||
echo_failed
|
||||
error "$(cat "${log_file}")"
|
||||
@ -591,6 +690,65 @@ else
|
||||
echo_ok
|
||||
fi
|
||||
|
||||
blank_line
|
||||
|
||||
|
||||
if ${MYSQL_PERFORMANCE_SETTINGS}; then
|
||||
|
||||
echononl "Set Autocommit to $CUR_AUTOCOMMIT"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL autocommit='$CUR_AUTOCOMMIT'" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
CUR_AUTOCOMMIT=""
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
echononl "Set foreign_key_checks to $CUR_FOREIGN_KEY_CHECKS"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL foreign_key_checks='$CUR_FOREIGN_KEY_CHECKS'" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
CUR_FOREIGN_KEY_CHECKS=""
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
echononl "Set unique_checks to $CUR_UNIQUE_CHECKS"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL unique_checks='$CUR_UNIQUE_CHECKS'" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
CUR_UNIQUE_CHECKS=""
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
echononl "Set innodb_flush_log_at_trx_commit to $CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL innodb_flush_log_at_trx_commit=$CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT=""
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
echononl "Set max_allowed_packet to $CUR_MAX_ALLOWED_PACKET"
|
||||
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL max_allowed_packet=$CUR_MAX_ALLOWED_PACKET" >> ${log_file} 2>&1
|
||||
if [[ $? -eq 0 ]];then
|
||||
echo_ok
|
||||
CUR_MAX_ALLOWED_PACKET=""
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat ${log_file})"
|
||||
fi
|
||||
|
||||
blank_line
|
||||
|
||||
fi
|
||||
|
||||
|
||||
echononl "Create borg backup.."
|
||||
|
||||
|
Reference in New Issue
Block a user