restore-website-from-backup.sh: some changes to the script output.
This commit is contained in:
parent
976f2ebb5c
commit
282b79f682
@ -1,5 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CUR_IFS="$IFS"
|
||||
|
||||
script_name="$(basename $(realpath $0))"
|
||||
working_dir="$(dirname $(realpath $0))"
|
||||
|
||||
@ -93,6 +95,19 @@ clean_up() {
|
||||
|
||||
fi
|
||||
|
||||
if [[ -n "$CUR_AUTOCOMMIT" ]] ; then
|
||||
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e "SET GLOBAL autocommit='$CUR_AUTOCOMMIT'" > /dev/null 2>&1
|
||||
fi
|
||||
if [[ -n "$CUR_FOREIGN_KEY_CHECKS" ]] ; then
|
||||
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e "SET GLOBAL autocommit='$CUR_FOREIGN_KEY_CHECKS'" > /dev/null 2>&1
|
||||
fi
|
||||
if [[ -n "$CUR_UNIQUE_CHECKS" ]] ; then
|
||||
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e "SET GLOBAL autocommit='$CUR_UNIQUE_CHECKS'" > /dev/null 2>&1
|
||||
fi
|
||||
if [[ -n "$CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT" ]] ; then
|
||||
mysql $MYSQL_CREDENTIAL_ARGS -N -s -e "SET GLOBAL autocommit='$CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT'" > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
# Perform program exit housekeeping
|
||||
rm -f $log_file
|
||||
blank_line
|
||||
@ -205,17 +220,30 @@ time_duration () {
|
||||
local __t_s=`expr $__t_rest_h - $__t_m \\* 60`
|
||||
|
||||
if [[ $__t_h -gt 0 ]]; then
|
||||
|
||||
if [[ $__t_h -lt 10 ]] ; then
|
||||
echo " $__t_h h : $__t_m min : $__t_s sec"
|
||||
else
|
||||
echo "$__t_h h : $__t_m min : $__t_s sec"
|
||||
__t_h=" $__t_h"
|
||||
fi
|
||||
elif [[ $__t_m -gt 0 ]]; then
|
||||
if [[ $__t_m -lt 10 ]] ; then
|
||||
echo " $__t_m min : $__t_s sec"
|
||||
else
|
||||
echo "$__t_m min : $__t_s sec"
|
||||
__t_m=" $__t_m"
|
||||
fi
|
||||
if [[ $__t_s -lt 10 ]] ; then
|
||||
__t_s=" $__t_s"
|
||||
fi
|
||||
|
||||
echo "$__t_h h : $__t_m min : $__t_s sec"
|
||||
|
||||
elif [[ $__t_m -gt 0 ]]; then
|
||||
|
||||
if [[ $__t_m -lt 10 ]] ; then
|
||||
__t_m=" $__t_m"
|
||||
fi
|
||||
if [[ $__t_s -lt 10 ]] ; then
|
||||
__t_s=" $__t_s"
|
||||
fi
|
||||
|
||||
echo "$__t_m min : $__t_s sec"
|
||||
|
||||
else
|
||||
if [[ $__t_s -lt 10 ]] ; then
|
||||
echo " $__t_s sec"
|
||||
@ -243,6 +271,62 @@ echo_duration () {
|
||||
|
||||
}
|
||||
|
||||
detect_mysql_version () {
|
||||
|
||||
_MYSQLD_VERSION="$(mysqld -V 2>/dev/null)"
|
||||
|
||||
if [[ -z "$_MYSQLD_VERSION" ]]; then
|
||||
fatal "No installed MySQL server or distribution found!"
|
||||
elif [[ -d "/usr/local/mysql" ]] && [[ "$(basename "$(realpath "/usr/local/mysql")")" =~ percona- ]]; then
|
||||
MYSQL_CUR_DISTRIBUTION="Percona"
|
||||
elif [[ "$_MYSQLD_VERSION" =~ MariaDB ]]; then
|
||||
MYSQL_CUR_DISTRIBUTION="MariaDB"
|
||||
elif [[ "$_MYSQLD_VERSION" =~ MySQL ]]; then
|
||||
MYSQL_CUR_DISTRIBUTION="MySQL"
|
||||
elif [[ -d "/usr/local/mysql" ]] && [[ "$(basename "$(realpath "/usr/local/mysql")")" =~ mysql- ]]; then
|
||||
MYSQL_CUR_DISTRIBUTION="MySQL"
|
||||
elif [[ -d "/usr/local/mysql" ]] && [[ "$(basename "$(realpath "/usr/local/mysql")")" =~ mariadb- ]]; then
|
||||
MYSQL_CUR_DISTRIBUTION="MariaDB"
|
||||
else
|
||||
error "MySQL Instalation found, but cannot determin the distribution!"
|
||||
|
||||
MYSQL_CUR_DISTRIBUTION=
|
||||
echo ""
|
||||
echo " Select the MySQL distribution to install."
|
||||
echo ""
|
||||
echo " [1] MySQL (the original community edition)"
|
||||
echo " [2] Percona Server for MySQL"
|
||||
echo " [3] MariaDB"
|
||||
echo ""
|
||||
echononl " Eingabe [1/2/3]: "
|
||||
|
||||
while [ "$MYSQL_CUR_DISTRIBUTION" != "MySQL" -a "$MYSQL_CUR_DISTRIBUTION" != "MariaDB" -a "$MYSQL_CUR_DISTRIBUTION" != "Percona" ];do
|
||||
read OPTION
|
||||
case $OPTION in
|
||||
1) MYSQL_CUR_DISTRIBUTION="MySQL"
|
||||
;;
|
||||
2) MYSQL_CUR_DISTRIBUTION="Percona"
|
||||
;;
|
||||
3) MYSQL_CUR_DISTRIBUTION="MariaDB"
|
||||
;;
|
||||
*) echo ""
|
||||
echo -e "\tFalsche Eingabe ! [ 1 = MySQL ; 2 = Percona ; 3 = MariaDB ]"
|
||||
echo ""
|
||||
echononl " Eingabe:"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
MYSQL_VERSION="$(echo $_MYSQLD_VERSION | grep -o -E "[0-9]+\.[0-9]+\.[0-9]+(-[0-9]+)?" | head -n 1)"
|
||||
MYSQL_MAJOR_VERSION="$(echo $MYSQL_VERSION | cut -d '.' -f1)"
|
||||
MYSQL_MINOR_VERSION="$(echo $MYSQL_VERSION | cut -d '.' -f2)"
|
||||
MYSQL_PATCH_LEVEL="$(echo $MYSQL_VERSION | cut -d '.' -f3)"
|
||||
MYSQL_MAIN_VERSION="$(echo $MYSQL_VERSION | cut -d '.' -f1,2)"
|
||||
|
||||
}
|
||||
|
||||
|
||||
## - Check if a given array (parameter 2) contains a given string (parameter 1)
|
||||
## -
|
||||
containsElement () {
|
||||
@ -319,7 +403,7 @@ IS_NEXTCLOUD=false
|
||||
DEFAULT_BACKUP_BASE_DIR="/backup"
|
||||
|
||||
DEFAULT_DATABASE_TYPE="mysql"
|
||||
DEFAULT_MYSQL_CREDENTIALS="--defaults-file=/usr/local/mysql/sys-maint.cnf"
|
||||
DEFAULT_MYSQL_CREDENTIAL_ARGS="--defaults-file=/usr/local/mysql/sys-maint.cnf"
|
||||
|
||||
# Note:
|
||||
# HTTP_USER/HTTP_GROUP from this backup machine!
|
||||
@ -366,7 +450,45 @@ while getopts bd:hs:t:w: opt ; do
|
||||
done
|
||||
|
||||
[[ -z "$DATABASE_TYPE" ]] && DATABASE_TYPE="$DEFAULT_DATABASE_TYPE"
|
||||
[[ -z "$MYSQL_CREDENTIALS" ]] && MYSQL_CREDENTIALS="$DEFAULT_MYSQL_CREDENTIALS"
|
||||
#[[ -z "$MYSQL_CREDENTIAL_ARGS" ]] && MYSQL_CREDENTIAL_ARGS="$DEFAULT_MYSQL_CREDENTIAL_ARGS"
|
||||
|
||||
if [[ -z "$MYSQL_CREDENTIAL_ARGS" ]] ; then
|
||||
|
||||
detect_mysql_version
|
||||
|
||||
MAJOR_VERSION="$MYSQL_MAJOR_VERSION"
|
||||
MINOR_VERSION="$MYSQL_MINOR_VERSION"
|
||||
PATCH_LEVEL="$MYSQL_PATCH_LEVEL"
|
||||
|
||||
if [[ "$MYSQL_CUR_DISTRIBUTION" = "MariaDB" ]] && ([[ $MAJOR_VERSION -gt 10 ]] \
|
||||
|| ( [[ $MAJOR_VERSION -eq 10 ]] && [[ $MINOR_VERSION -gt 3 ]] )) ; then
|
||||
if [[ -S "/tmp/mysql.sock" ]]; then
|
||||
MYSQL_CREDENTIAL_ARGS="-u root -S /tmp/mysql.sock"
|
||||
elif [[ -S "/run/mysqld/mysqld.sock" ]]; then
|
||||
MYSQL_CREDENTIAL_ARGS="-u root -S /run/mysqld/mysqld.sock"
|
||||
elif [[ -S "/var/run/mysqld/mysqld.sock" ]]; then
|
||||
MYSQL_CREDENTIAL_ARGS="-u root -S /var/run/mysqld/mysqld.sock"
|
||||
else
|
||||
fatal "Parameter 'MYSQL_CREDENTIAL_ARGS' cannot be determined automated.
|
||||
|
||||
Use configuration file "$conf_file" to set
|
||||
parameter manually."
|
||||
fi
|
||||
else
|
||||
if $(mysql --login-path=local -e ";" > /dev/null 2>&1) ; then
|
||||
MYSQL_CREDENTIAL_ARGS="--login-path=local"
|
||||
elif [[ -f "/usr/local/mysql/sys-maint.cnf" ]] ; then
|
||||
MYSQL_CREDENTIAL_ARGS="--defaults-file=/usr/local/mysql/sys-maint.cnf"
|
||||
elif [[ -f "/etc/mysql/debian.cnf" ]] ; then
|
||||
MYSQL_CREDENTIAL_ARGS="--defaults-file=/etc/mysql/debian.cnf"
|
||||
else
|
||||
fatal "Parameter 'MYSQL_CREDENTIAL_ARGS' cannot be determined automated.
|
||||
|
||||
Use configuration file "$conf_file" to set
|
||||
parameter manually."
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ -z "$BACKUP_BASE_DIR" ]] && BACKUP_BASE_DIR="$DEFAULT_BACKUP_BASE_DIR"
|
||||
if [[ ! -d "$BACKUP_BASE_DIR" ]] ; then
|
||||
@ -482,6 +604,7 @@ if $terminal && ! $BATCH_MODE ; then
|
||||
# - Sort array
|
||||
# -
|
||||
IFS=$'\n' server_arr=($(sort <<<"${unsorted_server_arr[*]}"))
|
||||
IFS="$CUR_IFS"
|
||||
|
||||
SERVER=
|
||||
_OK=false
|
||||
@ -525,6 +648,7 @@ if $terminal && ! $BATCH_MODE ; then
|
||||
# - Sort array
|
||||
# -
|
||||
IFS=$'\n' version_arr=($(sort <<<"${unsorted_version_arr[*]}"))
|
||||
IFS="$CUR_IFS"
|
||||
|
||||
|
||||
RESTORE_DIR=""
|
||||
@ -623,6 +747,7 @@ if $terminal && ! $BATCH_MODE ; then
|
||||
# - Sort array
|
||||
# -
|
||||
IFS=$'\n' website_arr=($(sort <<<"${unsorted_website_arr[*]}"))
|
||||
IFS="$CUR_IFS"
|
||||
|
||||
WEBSITE=
|
||||
_OK=false
|
||||
@ -698,6 +823,7 @@ else
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# =============
|
||||
# --- Some final checks
|
||||
# =============
|
||||
@ -753,7 +879,7 @@ if $terminal ; then
|
||||
echo ""
|
||||
fi
|
||||
if [[ "$DATABASE_TYPE" = "mysql" ]] ; then
|
||||
echo -e " Mysql Credentials..........................: $MYSQL_CREDENTIALS"
|
||||
echo -e " Mysql Credentials..........................: $MYSQL_CREDENTIAL_ARGS"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
@ -840,6 +966,89 @@ else
|
||||
echo_skipped
|
||||
fi
|
||||
|
||||
blank_line
|
||||
# - GET current (global) Autocommit value
|
||||
# -
|
||||
echononl " GET current (global) value \033[1mautocommit\033[m"
|
||||
CUR_AUTOCOMMIT="$(mysql $MYSQL_CREDENTIAL_ARGS -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_CREDENTIAL_ARGS -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_CREDENTIAL_ARGS -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_CREDENTIAL_ARGS -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
|
||||
|
||||
blank_line
|
||||
|
||||
echononl " Set Autocommit to OFF"
|
||||
mysql $MYSQL_CREDENTIAL_ARGS -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_CREDENTIAL_ARGS -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_CREDENTIAL_ARGS -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_CREDENTIAL_ARGS -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
|
||||
|
||||
|
||||
# -----
|
||||
# - Main Part of Script
|
||||
@ -870,6 +1079,47 @@ else
|
||||
echo_skipped
|
||||
fi
|
||||
|
||||
blank_line
|
||||
|
||||
echononl " Set Autocommit to OFF"
|
||||
mysql $MYSQL_CREDENTIAL_ARGS -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_CREDENTIAL_ARGS -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_CREDENTIAL_ARGS -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_CREDENTIAL_ARGS -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
|
||||
|
||||
|
||||
blank_line
|
||||
|
||||
echononl " Restore Database '${DATABASE_NAME}'.."
|
||||
b_timestamp=$(date +"%s")
|
||||
mysql $MYSQL_CREDENTIAL_ARGS $DATABASE_NAME < $SQL_FILE > $log_file 2>&1
|
||||
@ -883,6 +1133,8 @@ else
|
||||
fatal "$(cat $log_file)"
|
||||
fi
|
||||
|
||||
blank_line
|
||||
|
||||
echononl " Sync Webspace - site '${WEBSITE}'.."
|
||||
|
||||
# Begin timestamp
|
||||
@ -970,6 +1222,48 @@ if $terminal ; then
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echononl " Set Autocommit to $CUR_AUTOCOMMIT"
|
||||
mysql $MYSQL_CREDENTIAL_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 $MYSQL_CREDENTIAL_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 $MYSQL_CREDENTIAL_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 $MYSQL_CREDENTIAL_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
|
||||
|
||||
blank_line
|
||||
|
||||
echononl " Restart PHP engine.."
|
||||
if [[ "$PHP_ENGINE" = "FPM" ]] && [[ -n "$PHP_VERSION" ]]; then
|
||||
if $SYSTEMD_EXISTS ; then
|
||||
@ -1058,5 +1352,4 @@ fi
|
||||
|
||||
blank_line
|
||||
|
||||
|
||||
clean_up 1
|
||||
clean_up 0
|
||||
|
Loading…
Reference in New Issue
Block a user