summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Goryavsky <julius.goryavsky@mariadb.com>2022-06-29 05:23:49 +0200
committerJulius Goryavsky <julius.goryavsky@mariadb.com>2022-06-29 06:02:02 +0200
commit6d1176767b28314fdda7c0e93778dd86b0690b8f (patch)
tree44c48e109ab60f244dd5ce268a12833f0f523994
parentbf6782c3f45c19dd7f3f9469d765adc49cf849e2 (diff)
downloadmariadb-git-6d1176767b28314fdda7c0e93778dd86b0690b8f.tar.gz
MDEV-28968: scripts fixes
-rw-r--r--scripts/wsrep_sst_backup.sh2
-rw-r--r--scripts/wsrep_sst_common.sh18
-rw-r--r--scripts/wsrep_sst_mariabackup.sh10
-rw-r--r--scripts/wsrep_sst_rsync.sh23
4 files changed, 49 insertions, 4 deletions
diff --git a/scripts/wsrep_sst_backup.sh b/scripts/wsrep_sst_backup.sh
index 4f98ad41dd5..6f8c658135a 100644
--- a/scripts/wsrep_sst_backup.sh
+++ b/scripts/wsrep_sst_backup.sh
@@ -71,7 +71,7 @@ then
# (b) Cluster state ID & wsrep_gtid_domain_id to be written to the file, OR
# (c) ERROR file, in case flush tables operation failed.
- while [ ! -r "$FLUSHED" ] && \
+ while [ ! -r "$FLUSHED" ] || \
! grep -q -F ':' -- "$FLUSHED"
do
# Check whether ERROR file exists.
diff --git a/scripts/wsrep_sst_common.sh b/scripts/wsrep_sst_common.sh
index 2fc8c9019e6..d98a336d3a8 100644
--- a/scripts/wsrep_sst_common.sh
+++ b/scripts/wsrep_sst_common.sh
@@ -104,6 +104,7 @@ WSREP_SST_OPT_HOST_UNESCAPED=""
INNODB_DATA_HOME_DIR=$(trim_dir "${INNODB_DATA_HOME_DIR:-}")
INNODB_LOG_GROUP_HOME=$(trim_dir "${INNODB_LOG_GROUP_HOME:-}")
INNODB_UNDO_DIR=$(trim_dir "${INNODB_UNDO_DIR:-}")
+INNODB_BUFFER_POOL=""
INNODB_FORCE_RECOVERY=""
INNOEXTRA=""
@@ -212,6 +213,10 @@ case "$1" in
readonly INNODB_UNDO_DIR=$(trim_dir "$2")
shift
;;
+ '--innodb-buffer-pool-filename')
+ readonly INNODB_BUFFER_POOL=$(trim_string "$2")
+ shift
+ ;;
'--defaults-file')
readonly WSREP_SST_OPT_DEFAULT="$1=$2"
readonly WSREP_SST_OPT_DEFAULTS="$1='$2'"
@@ -471,6 +476,12 @@ case "$1" in
fi
skip_mysqld_arg=1
;;
+ '--innodb-buffer-pool-filename')
+ if [ -z "$INNODB_BUFFER_POOL" ]; then
+ MYSQLD_OPT_INNODB_BUFFER_POOL=$(trim_string "$value")
+ fi
+ skip_mysqld_arg=1
+ ;;
'--innodb-force-recovery')
if [ -n "$value" -a "$value" != "0" ]; then
INNODB_FORCE_RECOVERY=$(trim_string "$value")
@@ -552,6 +563,10 @@ if [ -n "${MYSQLD_OPT_INNODB_UNDO_DIR:-}" -a \
-z "$INNODB_UNDO_DIR" ]; then
readonly INNODB_UNDO_DIR="$MYSQLD_OPT_INNODB_UNDO_DIR"
fi
+if [ -n "${MYSQLD_OPT_INNODB_BUFFER_POOL:-}" -a \
+ -z "$INNODB_BUFFER_POOL" ]; then
+ readonly INNODB_BUFFER_POOL="$MYSQLD_OPT_INNODB_BUFFER_POOL"
+fi
if [ -n "${MYSQLD_OPT_LOG_BIN:-}" -a \
-z "$WSREP_SST_OPT_BINLOG" ]; then
readonly WSREP_SST_OPT_BINLOG="$MYSQLD_OPT_LOG_BIN"
@@ -602,6 +617,9 @@ fi
if [ -n "$INNODB_UNDO_DIR" ]; then
INNOEXTRA="$INNOEXTRA --innodb-undo-directory='$INNODB_UNDO_DIR'"
fi
+if [ -n "$INNODB_BUFFER_POOL" ]; then
+ INNOEXTRA="$INNOEXTRA --innodb-buffer-pool-filename='$INNODB_BUFFER_POOL'"
+fi
if [ -n "$WSREP_SST_OPT_BINLOG" ]; then
INNOEXTRA="$INNOEXTRA --log-bin='$WSREP_SST_OPT_BINLOG'"
if [ -n "$WSREP_SST_OPT_BINLOG_INDEX" ]; then
diff --git a/scripts/wsrep_sst_mariabackup.sh b/scripts/wsrep_sst_mariabackup.sh
index 5521dd51098..d38ed97e49e 100644
--- a/scripts/wsrep_sst_mariabackup.sh
+++ b/scripts/wsrep_sst_mariabackup.sh
@@ -664,6 +664,9 @@ cleanup_at_exit()
local estatus=$?
if [ $estatus -ne 0 ]; then
wsrep_log_error "Cleanup after exit with status: $estatus"
+ elif [ -z "${coords:-}" -a "$WSREP_SST_OPT_ROLE" = 'joiner' ]; then
+ estatus=32
+ wsrep_log_error "Failed to get current position"
fi
[ "$(pwd)" != "$OLD_PWD" ] && cd "$OLD_PWD"
@@ -934,6 +937,11 @@ if [ $ssyslog -eq 1 ]; then
logger -p daemon.err -t ${ssystag}wsrep-sst-$WSREP_SST_OPT_ROLE "$@"
}
+ wsrep_log_warning()
+ {
+ logger -p daemon.warning -t ${ssystag}wsrep-sst-$WSREP_SST_OPT_ROLE "$@"
+ }
+
wsrep_log_info()
{
logger -p daemon.info -t ${ssystag}wsrep-sst-$WSREP_SST_OPT_ROLE "$@"
@@ -1015,7 +1023,7 @@ setup_commands()
recovery=" --innodb-force-recovery=$INNODB_FORCE_RECOVERY"
fi
INNOAPPLY="$BACKUP_BIN --prepare$disver$recovery${iapts:+ }$iapts$INNOEXTRA --target-dir='$DATA' --datadir='$DATA'$mysqld_args $INNOAPPLY"
- INNOMOVE="$BACKUP_BIN$WSREP_SST_OPT_CONF --move-back$disver${impts:+ }$impts$INNOEXTRA --force-non-empty-directories --target-dir='$DATA' --datadir='${TDATA:-$DATA}' $INNOMOVE"
+ INNOMOVE="$BACKUP_BIN$WSREP_SST_OPT_CONF --move-back$disver${impts:+ }$impts$INNOEXTRA --galera-info --force-non-empty-directories --target-dir='$DATA' --datadir='${TDATA:-$DATA}' $INNOMOVE"
INNOBACKUP="$BACKUP_BIN$WSREP_SST_OPT_CONF --backup$disver${iopts:+ }$iopts$tmpopts$INNOEXTRA --galera-info --stream=$sfmt --target-dir='$itmpdir' --datadir='$DATA'$mysqld_args $INNOBACKUP"
}
diff --git a/scripts/wsrep_sst_rsync.sh b/scripts/wsrep_sst_rsync.sh
index 7096bb4b330..b234fa5e6f4 100644
--- a/scripts/wsrep_sst_rsync.sh
+++ b/scripts/wsrep_sst_rsync.sh
@@ -38,6 +38,9 @@ cleanup_joiner()
local estatus=$?
if [ $estatus -ne 0 ]; then
wsrep_log_error "Cleanup after exit with status: $estatus"
+ elif [ -z "${coords:-}" ]; then
+ estatus=32
+ wsrep_log_error "Failed to get current position"
fi
local failure=0
@@ -408,7 +411,7 @@ EOF
# (b) Cluster state ID & wsrep_gtid_domain_id to be written to the file, OR
# (c) ERROR file, in case flush tables operation failed.
- while [ ! -r "$FLUSHED" ] && \
+ while [ ! -r "$FLUSHED" ] || \
! grep -q -F ':' -- "$FLUSHED"
do
# Check whether ERROR file exists.
@@ -538,7 +541,7 @@ FILTER="-f '- /lost+found'
-f '+ /wsrep_sst_binlog.tar'
-f '- $ib_home_dir/ib_lru_dump'
-f '- $ib_home_dir/ibdata*'
- -f '+ $ib_undo_dir/undo*'
+ -f '- $ib_undo_dir/undo*'
-f '+ /*/'
-f '- /*'"
@@ -599,6 +602,20 @@ FILTER="-f '- /lost+found'
wsrep_log_info "Transfer of InnoDB and Aria log files done"
+ # third, we transfer InnoDB undo logs
+ rsync ${STUNNEL:+--rsh="$STUNNEL"} \
+ --owner --group --perms --links --specials \
+ --ignore-times --inplace --dirs --delete --quiet \
+ $WHOLE_FILE_OPT -f '+ /undo*' -f '- **' "$ib_undo_dir/" \
+ "rsync://$WSREP_SST_OPT_ADDR-undo_dir" >&2 || RC=$?
+
+ if [ $RC -ne 0 ]; then
+ wsrep_log_error "rsync innodb_log_group_home_dir returned code $RC:"
+ exit 255 # unknown error
+ fi
+
+ wsrep_log_info "Transfer of InnoDB undo logs done"
+
# then, we parallelize the transfer of database directories,
# use '.' so that path concatenation works:
@@ -704,6 +721,8 @@ $SILENT
path = $ib_log_dir
[$MODULE-data_dir]
path = $ib_home_dir
+[$MODULE-undo_dir]
+ path = $ib_undo_dir
EOF
# If the IP is local, listen only on it: