mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
galera SST scripts: unification of the previous SST completion check
This commit is contained in:
parent
7742cc9ff9
commit
46a5d2f1cf
5 changed files with 74 additions and 91 deletions
|
@ -22,14 +22,11 @@ set -ue
|
||||||
# This is a reference script for rsync-based state snapshot transfer
|
# This is a reference script for rsync-based state snapshot transfer
|
||||||
|
|
||||||
. $(dirname "$0")/wsrep_sst_common
|
. $(dirname "$0")/wsrep_sst_common
|
||||||
wsrep_check_datadir
|
|
||||||
|
|
||||||
DATA="$WSREP_SST_OPT_DATA"
|
|
||||||
|
|
||||||
create_data
|
|
||||||
|
|
||||||
MAGIC_FILE="$DATA/backup_sst_complete"
|
MAGIC_FILE="$DATA/backup_sst_complete"
|
||||||
|
|
||||||
|
wait_previous_sst
|
||||||
|
|
||||||
[ -f "$MAGIC_FILE" ] && rm -f "$MAGIC_FILE"
|
[ -f "$MAGIC_FILE" ] && rm -f "$MAGIC_FILE"
|
||||||
|
|
||||||
if [ "$WSREP_SST_OPT_ROLE" = 'donor' ]
|
if [ "$WSREP_SST_OPT_ROLE" = 'donor' ]
|
||||||
|
|
|
@ -1769,7 +1769,7 @@ simple_cleanup()
|
||||||
if [ $estatus -ne 0 ]; then
|
if [ $estatus -ne 0 ]; then
|
||||||
wsrep_log_error "Cleanup after exit with status: $estatus"
|
wsrep_log_error "Cleanup after exit with status: $estatus"
|
||||||
fi
|
fi
|
||||||
if [ -n "${SST_PID:-}" ]; then
|
if [ -n "$SST_PID" ]; then
|
||||||
[ "$(pwd)" != "$OLD_PWD" ] && cd "$OLD_PWD"
|
[ "$(pwd)" != "$OLD_PWD" ] && cd "$OLD_PWD"
|
||||||
[ -f "$SST_PID" ] && rm -f "$SST_PID" || :
|
[ -f "$SST_PID" ] && rm -f "$SST_PID" || :
|
||||||
fi
|
fi
|
||||||
|
@ -1869,4 +1869,29 @@ create_dirs()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wait_previous_sst()
|
||||||
|
{
|
||||||
|
# give some time for previous SST to complete:
|
||||||
|
check_round=0
|
||||||
|
while check_pid "$SST_PID" 1; do
|
||||||
|
wsrep_log_info "Previous SST is not completed, waiting for it to exit"
|
||||||
|
check_round=$(( check_round+1 ))
|
||||||
|
if [ $check_round -eq 30 ]; then
|
||||||
|
wsrep_log_error "previous SST script still running..."
|
||||||
|
exit 114 # EALREADY
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
trap simple_cleanup EXIT
|
||||||
|
echo $$ > "$SST_PID"
|
||||||
|
}
|
||||||
|
|
||||||
|
DATA="$WSREP_SST_OPT_DATA"
|
||||||
|
|
||||||
|
wsrep_check_datadir
|
||||||
|
create_data
|
||||||
|
|
||||||
|
SST_PID="$DATA/wsrep_sst.pid"
|
||||||
|
|
||||||
wsrep_log_info "$WSREP_METHOD $WSREP_TRANSFER_TYPE started on $WSREP_SST_OPT_ROLE"
|
wsrep_log_info "$WSREP_METHOD $WSREP_TRANSFER_TYPE started on $WSREP_SST_OPT_ROLE"
|
||||||
|
|
|
@ -24,7 +24,21 @@ set -ue
|
||||||
# Make sure to read that before proceeding!
|
# Make sure to read that before proceeding!
|
||||||
|
|
||||||
. $(dirname "$0")/wsrep_sst_common
|
. $(dirname "$0")/wsrep_sst_common
|
||||||
wsrep_check_datadir
|
|
||||||
|
BACKUP_BIN=$(commandex 'mariadb-backup')
|
||||||
|
if [ -z "$BACKUP_BIN" ]; then
|
||||||
|
wsrep_log_error 'mariadb-backup binary not found in path'
|
||||||
|
exit 42
|
||||||
|
fi
|
||||||
|
|
||||||
|
BACKUP_PID=""
|
||||||
|
|
||||||
|
INFO_FILE='xtrabackup_galera_info'
|
||||||
|
DONOR_INFO_FILE='donor_galera_info'
|
||||||
|
IST_FILE='xtrabackup_ist'
|
||||||
|
|
||||||
|
MAGIC_FILE="$DATA/$INFO_FILE"
|
||||||
|
DONOR_MAGIC_FILE="$DATA/$DONOR_INFO_FILE"
|
||||||
|
|
||||||
ealgo=""
|
ealgo=""
|
||||||
eformat=""
|
eformat=""
|
||||||
|
@ -33,7 +47,6 @@ ekeyfile=""
|
||||||
encrypt=0
|
encrypt=0
|
||||||
ssyslog=""
|
ssyslog=""
|
||||||
ssystag=""
|
ssystag=""
|
||||||
BACKUP_PID=""
|
|
||||||
tcert=""
|
tcert=""
|
||||||
tcap=""
|
tcap=""
|
||||||
tpem=""
|
tpem=""
|
||||||
|
@ -62,10 +75,10 @@ tcmd=""
|
||||||
payload=0
|
payload=0
|
||||||
pvformat="-F '%N => Rate:%r Avg:%a Elapsed:%t %e Bytes: %b %p'"
|
pvformat="-F '%N => Rate:%r Avg:%a Elapsed:%t %e Bytes: %b %p'"
|
||||||
pvopts="-f -i 10 -N $WSREP_SST_OPT_ROLE"
|
pvopts="-f -i 10 -N $WSREP_SST_OPT_ROLE"
|
||||||
STATDIR=""
|
|
||||||
uextra=0
|
uextra=0
|
||||||
disver=""
|
disver=""
|
||||||
|
|
||||||
|
STATDIR=""
|
||||||
tmpopts=""
|
tmpopts=""
|
||||||
itmpdir=""
|
itmpdir=""
|
||||||
xtmpdir=""
|
xtmpdir=""
|
||||||
|
@ -91,23 +104,6 @@ readonly TOTAL_TAG='total'
|
||||||
# For backup locks it is 1 sent by joiner
|
# For backup locks it is 1 sent by joiner
|
||||||
sst_ver=1
|
sst_ver=1
|
||||||
|
|
||||||
declare -a RC
|
|
||||||
|
|
||||||
BACKUP_BIN=$(commandex 'mariadb-backup')
|
|
||||||
if [ -z "$BACKUP_BIN" ]; then
|
|
||||||
wsrep_log_error 'mariadb-backup binary not found in path'
|
|
||||||
exit 42
|
|
||||||
fi
|
|
||||||
|
|
||||||
DATA="$WSREP_SST_OPT_DATA"
|
|
||||||
|
|
||||||
INFO_FILE='xtrabackup_galera_info'
|
|
||||||
DONOR_INFO_FILE='donor_galera_info'
|
|
||||||
IST_FILE='xtrabackup_ist'
|
|
||||||
|
|
||||||
MAGIC_FILE="$DATA/$INFO_FILE"
|
|
||||||
DONOR_MAGIC_FILE="$DATA/$DONOR_INFO_FILE"
|
|
||||||
|
|
||||||
INNOAPPLYLOG="$DATA/mariabackup.prepare.log"
|
INNOAPPLYLOG="$DATA/mariabackup.prepare.log"
|
||||||
INNOMOVELOG="$DATA/mariabackup.move.log"
|
INNOMOVELOG="$DATA/mariabackup.move.log"
|
||||||
INNOBACKUPLOG="$DATA/mariabackup.backup.log"
|
INNOBACKUPLOG="$DATA/mariabackup.backup.log"
|
||||||
|
@ -713,7 +709,7 @@ cleanup_at_exit()
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Final cleanup
|
# Final cleanup
|
||||||
pgid=$(ps -o 'pgid=' $$ 2>/dev/null | grep -o -E '[0-9]+' || :)
|
local pgid=$(ps -o 'pgid=' $$ 2>/dev/null | grep -o -E '[0-9]+' || :)
|
||||||
|
|
||||||
# This means no setsid done in mysqld.
|
# This means no setsid done in mysqld.
|
||||||
# We don't want to kill mysqld here otherwise.
|
# We don't want to kill mysqld here otherwise.
|
||||||
|
@ -727,7 +723,7 @@ cleanup_at_exit()
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${SST_PID:-}" ]; then
|
if [ -n "$SST_PID" ]; then
|
||||||
[ -f "$SST_PID" ] && rm -f "$SST_PID" || :
|
[ -f "$SST_PID" ] && rm -f "$SST_PID" || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -933,7 +929,17 @@ if "$BACKUP_BIN" --help 2>/dev/null | grep -qw -F -- '--version-check'; then
|
||||||
disver=' --no-version-check'
|
disver=' --no-version-check'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
create_data
|
get_stream
|
||||||
|
get_transfer
|
||||||
|
|
||||||
|
findopt='-L'
|
||||||
|
[ "$OS" = 'FreeBSD' ] && findopt="$findopt -E"
|
||||||
|
|
||||||
|
wait_previous_sst
|
||||||
|
|
||||||
|
[ -f "$MAGIC_FILE" ] && rm -f "$MAGIC_FILE"
|
||||||
|
[ -f "$DONOR_MAGIC_FILE" ] && rm -f "$DONOR_MAGIC_FILE"
|
||||||
|
[ -f "$DATA/$IST_FILE" ] && rm -f "$DATA/$IST_FILE"
|
||||||
|
|
||||||
if [ $ssyslog -eq 1 ]; then
|
if [ $ssyslog -eq 1 ]; then
|
||||||
if [ -n "$(commandex logger)" ]; then
|
if [ -n "$(commandex logger)" ]; then
|
||||||
|
@ -1053,30 +1059,6 @@ send_magic()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
get_stream
|
|
||||||
get_transfer
|
|
||||||
|
|
||||||
findopt='-L'
|
|
||||||
[ "$OS" = 'FreeBSD' ] && findopt="$findopt -E"
|
|
||||||
|
|
||||||
SST_PID="$DATA/wsrep_sst.pid"
|
|
||||||
|
|
||||||
# give some time for previous SST to complete:
|
|
||||||
check_round=0
|
|
||||||
while check_pid "$SST_PID"; do
|
|
||||||
wsrep_log_info "previous SST is not completed, waiting for it to exit"
|
|
||||||
check_round=$(( check_round+1 ))
|
|
||||||
if [ $check_round -eq 30 ]; then
|
|
||||||
wsrep_log_error "previous SST script still running."
|
|
||||||
exit 114 # EALREADY
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
[ -f "$MAGIC_FILE" ] && rm -f "$MAGIC_FILE"
|
|
||||||
[ -f "$DONOR_MAGIC_FILE" ] && rm -f "$DONOR_MAGIC_FILE"
|
|
||||||
[ -f "$DATA/$IST_FILE" ] && rm -f "$DATA/$IST_FILE"
|
|
||||||
|
|
||||||
if [ "$WSREP_SST_OPT_ROLE" = 'donor' ]; then
|
if [ "$WSREP_SST_OPT_ROLE" = 'donor' ]; then
|
||||||
|
|
||||||
trap cleanup_at_exit EXIT
|
trap cleanup_at_exit EXIT
|
||||||
|
@ -1249,9 +1231,6 @@ else # joiner
|
||||||
impts="--parallel=$backup_threads${impts:+ }$impts"
|
impts="--parallel=$backup_threads${impts:+ }$impts"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
trap simple_cleanup EXIT
|
|
||||||
echo $$ > "$SST_PID"
|
|
||||||
|
|
||||||
stagemsg='Joiner-Recv'
|
stagemsg='Joiner-Recv'
|
||||||
|
|
||||||
MODULE="${WSREP_SST_OPT_MODULE:-xtrabackup_sst}"
|
MODULE="${WSREP_SST_OPT_MODULE:-xtrabackup_sst}"
|
||||||
|
|
|
@ -23,6 +23,8 @@ set -ue
|
||||||
|
|
||||||
. $(dirname "$0")/wsrep_sst_common
|
. $(dirname "$0")/wsrep_sst_common
|
||||||
|
|
||||||
|
wait_previous_sst
|
||||||
|
|
||||||
EINVAL=22
|
EINVAL=22
|
||||||
|
|
||||||
if test -z "$WSREP_SST_OPT_HOST"; then wsrep_log_error "HOST cannot be nil"; exit $EINVAL; fi
|
if test -z "$WSREP_SST_OPT_HOST"; then wsrep_log_error "HOST cannot be nil"; exit $EINVAL; fi
|
||||||
|
|
|
@ -22,13 +22,22 @@ set -ue
|
||||||
# This is a reference script for rsync-based state snapshot transfer
|
# This is a reference script for rsync-based state snapshot transfer
|
||||||
|
|
||||||
. $(dirname "$0")/wsrep_sst_common
|
. $(dirname "$0")/wsrep_sst_common
|
||||||
wsrep_check_datadir
|
|
||||||
|
|
||||||
wsrep_check_programs rsync
|
wsrep_check_programs rsync
|
||||||
|
|
||||||
RSYNC_REAL_PID=0 # rsync process id
|
RSYNC_REAL_PID=0 # rsync process id
|
||||||
STUNNEL_REAL_PID=0 # stunnel process id
|
STUNNEL_REAL_PID=0 # stunnel process id
|
||||||
|
|
||||||
|
MODULE="${WSREP_SST_OPT_MODULE:-rsync_sst}"
|
||||||
|
|
||||||
|
RSYNC_PID="$DATA/$MODULE.pid"
|
||||||
|
RSYNC_CONF="$DATA/$MODULE.conf"
|
||||||
|
|
||||||
|
STUNNEL_CONF="$DATA/stunnel.conf"
|
||||||
|
STUNNEL_PID="$DATA/stunnel.pid"
|
||||||
|
|
||||||
|
MAGIC_FILE="$DATA/rsync_sst_complete"
|
||||||
|
|
||||||
cleanup_joiner()
|
cleanup_joiner()
|
||||||
{
|
{
|
||||||
# Since this is invoked just after exit NNN
|
# Since this is invoked just after exit NNN
|
||||||
|
@ -150,13 +159,6 @@ check_pid_and_port()
|
||||||
check_pid "$pid_file" && [ $CHECK_PID -eq $pid ]
|
check_pid "$pid_file" && [ $CHECK_PID -eq $pid ]
|
||||||
}
|
}
|
||||||
|
|
||||||
DATA="$WSREP_SST_OPT_DATA"
|
|
||||||
|
|
||||||
STUNNEL_CONF="$DATA/stunnel.conf"
|
|
||||||
STUNNEL_PID="$DATA/stunnel.pid"
|
|
||||||
|
|
||||||
MAGIC_FILE="$DATA/rsync_sst_complete"
|
|
||||||
|
|
||||||
get_binlog
|
get_binlog
|
||||||
|
|
||||||
if [ -n "$WSREP_SST_OPT_BINLOG" ]; then
|
if [ -n "$WSREP_SST_OPT_BINLOG" ]; then
|
||||||
|
@ -164,8 +166,6 @@ if [ -n "$WSREP_SST_OPT_BINLOG" ]; then
|
||||||
binlog_base=$(basename "$WSREP_SST_OPT_BINLOG")
|
binlog_base=$(basename "$WSREP_SST_OPT_BINLOG")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
create_data
|
|
||||||
|
|
||||||
BINLOG_TAR_FILE="$DATA_DIR/wsrep_sst_binlog.tar"
|
BINLOG_TAR_FILE="$DATA_DIR/wsrep_sst_binlog.tar"
|
||||||
|
|
||||||
ar_log_dir="$DATA_DIR"
|
ar_log_dir="$DATA_DIR"
|
||||||
|
@ -270,22 +270,7 @@ fi
|
||||||
readonly SECRET_TAG='secret'
|
readonly SECRET_TAG='secret'
|
||||||
readonly BYPASS_TAG='bypass'
|
readonly BYPASS_TAG='bypass'
|
||||||
|
|
||||||
SST_PID="$DATA/wsrep_sst.pid"
|
wait_previous_sst
|
||||||
|
|
||||||
# give some time for previous SST to complete:
|
|
||||||
check_round=0
|
|
||||||
while check_pid "$SST_PID"; do
|
|
||||||
wsrep_log_info "Previous SST is not completed, waiting for it to exit"
|
|
||||||
check_round=$(( check_round+1 ))
|
|
||||||
if [ $check_round -eq 20 ]; then
|
|
||||||
wsrep_log_error "previous SST script still running."
|
|
||||||
exit 114 # EALREADY
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
trap simple_cleanup EXIT
|
|
||||||
echo $$ > "$SST_PID"
|
|
||||||
|
|
||||||
# give some time for stunnel from the previous SST to complete:
|
# give some time for stunnel from the previous SST to complete:
|
||||||
check_round=0
|
check_round=0
|
||||||
|
@ -293,26 +278,21 @@ while check_pid "$STUNNEL_PID" 1 "$STUNNEL_CONF"; do
|
||||||
wsrep_log_info "Lingering stunnel daemon found at startup," \
|
wsrep_log_info "Lingering stunnel daemon found at startup," \
|
||||||
"waiting for it to exit"
|
"waiting for it to exit"
|
||||||
check_round=$(( check_round+1 ))
|
check_round=$(( check_round+1 ))
|
||||||
if [ $check_round -eq 10 ]; then
|
if [ $check_round -eq 30 ]; then
|
||||||
wsrep_log_error "stunnel daemon still running."
|
wsrep_log_error "stunnel daemon still running..."
|
||||||
exit 114 # EALREADY
|
exit 114 # EALREADY
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
MODULE="${WSREP_SST_OPT_MODULE:-rsync_sst}"
|
|
||||||
|
|
||||||
RSYNC_PID="$DATA/$MODULE.pid"
|
|
||||||
RSYNC_CONF="$DATA/$MODULE.conf"
|
|
||||||
|
|
||||||
# give some time for rsync from the previous SST to complete:
|
# give some time for rsync from the previous SST to complete:
|
||||||
check_round=0
|
check_round=0
|
||||||
while check_pid "$RSYNC_PID" 1 "$RSYNC_CONF"; do
|
while check_pid "$RSYNC_PID" 1 "$RSYNC_CONF"; do
|
||||||
wsrep_log_info "Lingering rsync daemon found at startup," \
|
wsrep_log_info "Lingering rsync daemon found at startup," \
|
||||||
"waiting for it to exit"
|
"waiting for it to exit"
|
||||||
check_round=$(( check_round+1 ))
|
check_round=$(( check_round+1 ))
|
||||||
if [ $check_round -eq 10 ]; then
|
if [ $check_round -eq 30 ]; then
|
||||||
wsrep_log_error "rsync daemon still running."
|
wsrep_log_error "rsync daemon still running..."
|
||||||
exit 114 # EALREADY
|
exit 114 # EALREADY
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
Loading…
Reference in a new issue