Add support of performance settings like 'SET GLOBAL max_allowed_packet=1073741824'.
This commit is contained in:
181
borg2-backup.sh
181
borg2-backup.sh
@ -210,7 +210,9 @@ DEFAULT_KEEP_MONTHLY=6
|
||||
DEFAULT_KEEP_YEARLY=1
|
||||
|
||||
DEFAULT_DB_TYPE="None"
|
||||
|
||||
DEFAULT_MYSQL_CREDENTIALS="-u root -S /run/mysqld/mysqld.sock"
|
||||
DEFAULT_MYSQL_PERFORMANCE_SETTINGS=false
|
||||
|
||||
DEFAULT_PSQL_SYSTEM_USER="postgres"
|
||||
|
||||
@ -314,7 +316,7 @@ fi
|
||||
|
||||
declare -a db_type_arr=()
|
||||
|
||||
for _db_type in ${DB_TYPE}; do
|
||||
for _db_type in ${DB_TYPE}; do
|
||||
if [[ "${DB_TYPE,,}" = "psql" ]] || [[ "${DB_TYPE,,}" = "postgresql" ]] || [[ "${DB_TYPE,,}" = "postgres" ]] ; then
|
||||
db_type_arr+=("postgresql")
|
||||
else
|
||||
@ -324,6 +326,7 @@ done
|
||||
|
||||
if containsElement "mysql" "${db_type_arr[@]}" ; then
|
||||
[[ -z "${MYSQL_CREDENTIALS}" ]] && MYSQL_CREDENTIALS="${DEFAULT_MYSQL_CREDENTIALS}"
|
||||
[[ -z "${MYSQL_PERFORMANCE_SETTINGS}" ]] && MYSQL_PERFORMANCE_SETTINGS=${DEFAULT_MYSQL_PERFORMANCE_SETTINGS}
|
||||
fi
|
||||
|
||||
if containsElement "postgresql" "${db_type_arr[@]}" ; then
|
||||
@ -389,7 +392,7 @@ if $terminal ; then
|
||||
echo -e " DB_TYPE(s)...............: \033[33m${DB_TYPE}\033[m"
|
||||
echo ""
|
||||
|
||||
|
||||
|
||||
declare -i index=0
|
||||
for _dir in ${BACKUP_DIRECTORIES} ; do
|
||||
if [[ $index -lt 1 ]] ; then
|
||||
@ -439,7 +442,7 @@ fi
|
||||
echo "# ----------" >> ${BORG_LOG_FILE}
|
||||
echo -e "# Running script '${script_name}' on $(date +%Y.%m.%d) at $(date +%H:%M) h .." >> ${BORG_LOG_FILE}
|
||||
echo "# ----------" >> ${BORG_LOG_FILE}
|
||||
|
||||
|
||||
|
||||
echo "" >> ${BORG_LOG_FILE}
|
||||
echo "# Script parameter settings:" >> ${BORG_LOG_FILE}
|
||||
@ -518,6 +521,122 @@ EOF
|
||||
echo_ok
|
||||
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
|
||||
|
||||
|
||||
for _db in ${mysql_database_arr[@]} ; do
|
||||
|
||||
echononl " Dump MySQL Database '${_db}'.."
|
||||
@ -543,6 +662,62 @@ EOF
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
blank_line
|
||||
|
||||
if ${MYSQL_PERFORMANCE_SETTINGS} ; then
|
||||
echononl "Set Autocommit to $CUR_AUTOCOMMIT"
|
||||
${mysql_command} $DATABASE_CREDENTIALS_ARGS -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_command} $DATABASE_CREDENTIALS_ARGS -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_command} $DATABASE_CREDENTIALS_ARGS -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_command} $DATABASE_CREDENTIALS_ARGS -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_command} $DATABASE_CREDENTIALS_ARGS -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
|
||||
fi
|
||||
|
||||
if containsElement "postgresql" "${db_type_arr[@]}" ; then
|
||||
|
Reference in New Issue
Block a user