diff options
author | Seppo Jaakola <seppo.jaakola@codership.com> | 2013-02-05 15:48:54 +0200 |
---|---|---|
committer | Seppo Jaakola <seppo.jaakola@codership.com> | 2013-02-05 15:48:54 +0200 |
commit | e0c6a87b997509f9eb282988cfb097e30b4c9749 (patch) | |
tree | 0475741cb7626ab2e4a0dc799fe2f53dab516669 /scripts | |
parent | db7495822940b5c95f10ff5b1e6273701e868436 (diff) | |
download | mariadb-git-e0c6a87b997509f9eb282988cfb097e30b4c9749.tar.gz |
re-merging wsrep files from lp:codership-mysql
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/wsrep_sst_common.sh | 106 | ||||
-rw-r--r-- | scripts/wsrep_sst_mysqldump.sh | 121 | ||||
-rw-r--r-- | scripts/wsrep_sst_rsync.sh | 210 | ||||
-rw-r--r-- | scripts/wsrep_sst_xtrabackup.sh | 222 |
4 files changed, 0 insertions, 659 deletions
diff --git a/scripts/wsrep_sst_common.sh b/scripts/wsrep_sst_common.sh deleted file mode 100644 index 5c292465ecc..00000000000 --- a/scripts/wsrep_sst_common.sh +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright (C) 2010 Codership Oy -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to the -# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston -# MA 02110-1301 USA. - -# This is a common command line parser to be sourced by other SST scripts - -set -u - -WSREP_SST_OPT_BYPASS=0 - -while [ $# -gt 0 ]; do -case "$1" in - '--address') - readonly WSREP_SST_OPT_ADDR="$2" - shift - ;; - '--auth') - readonly WSREP_SST_OPT_AUTH="$2" - shift - ;; - '--bypass') - WSREP_SST_OPT_BYPASS=1 - ;; - '--datadir') - readonly WSREP_SST_OPT_DATA="$2" - shift - ;; - '--defaults-file') - readonly WSREP_SST_OPT_CONF="$2" - shift - ;; - '--host') - readonly WSREP_SST_OPT_HOST="$2" - shift - ;; - '--local-port') - readonly WSREP_SST_OPT_LPORT="$2" - shift - ;; - '--parent') - readonly WSREP_SST_OPT_PARENT="$2" - shift - ;; - '--password') - readonly WSREP_SST_OPT_PSWD="$2" - shift - ;; - '--port') - readonly WSREP_SST_OPT_PORT="$2" - shift - ;; - '--role') - readonly WSREP_SST_OPT_ROLE="$2" - shift - ;; - '--socket') - readonly WSREP_SST_OPT_SOCKET="$2" - shift - ;; - '--user') - readonly WSREP_SST_OPT_USER="$2" - shift - ;; - '--gtid') - readonly WSREP_SST_OPT_GTID="$2" - shift - ;; - *) # must be command - # usage - # exit 1 - ;; -esac -shift -done -readonly WSREP_SST_OPT_BYPASS - -wsrep_log() -{ - # echo everything to stderr so that it gets into common error log - # deliberately made to look different from the rest of the log - local readonly tst="$(date +%Y%m%d\ %H:%M:%S.%N | cut -b -21)" - echo "WSREP_SST: $* ($tst)" >>/dev/stderr -} - -wsrep_log_error() -{ - wsrep_log "[ERROR] $*" -} - -wsrep_log_info() -{ - wsrep_log "[INFO] $*" -} - diff --git a/scripts/wsrep_sst_mysqldump.sh b/scripts/wsrep_sst_mysqldump.sh deleted file mode 100644 index 120533edc4e..00000000000 --- a/scripts/wsrep_sst_mysqldump.sh +++ /dev/null @@ -1,121 +0,0 @@ -#!/bin/sh -e -# Copyright (C) 2009 Codership Oy -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to the -# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston -# MA 02110-1301 USA. - -# This is a reference script for mysqldump-based state snapshot tansfer - -. $(dirname $0)/wsrep_sst_common - -EINVAL=22 - -local_ip() -{ - PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin - - [ "$1" = "127.0.0.1" ] && return 0 - [ "$1" = "localhost" ] && return 0 - [ "$1" = "$(hostname -s)" ] && return 0 - [ "$1" = "$(hostname -f)" ] && return 0 - [ "$1" = "$(hostname -d)" ] && return 0 - - # Now if ip program is not found in the path, we can't return 0 since - # it would block any address. Thankfully grep should fail in this case - ip route get "$1" | grep local >/dev/null && return 0 - - return 1 -} - -if test -z "$WSREP_SST_OPT_USER"; then err "USER cannot be nil"; exit $EINVAL; fi -if test -z "$WSREP_SST_OPT_HOST"; then err "HOST cannot be nil"; exit $EINVAL; fi -if test -z "$WSREP_SST_OPT_PORT"; then err "PORT cannot be nil"; exit $EINVAL; fi -if test -z "$WSREP_SST_OPT_LPORT"; then err "LPORT cannot be nil"; exit $EINVAL; fi -if test -z "$WSREP_SST_OPT_SOCKET";then err "SOCKET cannot be nil";exit $EINVAL; fi -if test -z "$WSREP_SST_OPT_GTID"; then err "GTID cannot be nil"; exit $EINVAL; fi - -if local_ip $WSREP_SST_OPT_HOST && \ - [ "$WSREP_SST_OPT_PORT" = "$WSREP_SST_OPT_LPORT" ] -then - wsrep_log_error \ - "destination address '$WSREP_SST_OPT_HOST:$WSREP_SST_OPT_PORT' matches source address." - exit $EINVAL -fi - -# Check client version -if ! mysql --version | grep 'Distrib 5.5' >/dev/null -then - mysql --version >&2 - err "this operation requires MySQL client version 5.5.x" - exit $EINVAL -fi - -AUTH="-u$WSREP_SST_OPT_USER" -if test -n "$WSREP_SST_OPT_PSWD"; then AUTH="$AUTH -p$WSREP_SST_OPT_PSWD"; fi - -STOP_WSREP="SET wsrep_on=OFF;" - -# NOTE: we don't use --routines here because we're dumping mysql.proc table -MYSQLDUMP="mysqldump $AUTH -S$WSREP_SST_OPT_SOCKET \ ---add-drop-database --add-drop-table --skip-add-locks --create-options \ ---disable-keys --extended-insert --skip-lock-tables --quick --set-charset \ ---skip-comments --flush-privileges --all-databases" - -# mysqldump cannot restore CSV tables, fix this issue -CSV_TABLES_FIX=" -set sql_mode=''; - -USE mysql; - -SET @str = IF (@@have_csv = 'YES', 'CREATE TABLE IF NOT EXISTS general_log (event_time TIMESTAMP NOT NULL, user_host MEDIUMTEXT NOT NULL, thread_id INTEGER NOT NULL, server_id INTEGER UNSIGNED NOT NULL, command_type VARCHAR(64) NOT NULL,argument MEDIUMTEXT NOT NULL) engine=CSV CHARACTER SET utf8 comment=\"General log\"', 'SET @dummy = 0'); - -PREPARE stmt FROM @str; -EXECUTE stmt; -DROP PREPARE stmt; - -SET @str = IF (@@have_csv = 'YES', 'CREATE TABLE IF NOT EXISTS slow_log (start_time TIMESTAMP NOT NULL, user_host MEDIUMTEXT NOT NULL, query_time TIME NOT NULL, lock_time TIME NOT NULL, rows_sent INTEGER NOT NULL, rows_examined INTEGER NOT NULL, db VARCHAR(512) NOT NULL, last_insert_id INTEGER NOT NULL, insert_id INTEGER NOT NULL, server_id INTEGER UNSIGNED NOT NULL, sql_text MEDIUMTEXT NOT NULL) engine=CSV CHARACTER SET utf8 comment=\"Slow log\"', 'SET @dummy = 0'); - -PREPARE stmt FROM @str; -EXECUTE stmt; -DROP PREPARE stmt;" - -SET_START_POSITION="SET GLOBAL wsrep_start_position='$WSREP_SST_OPT_GTID';" - -MYSQL="mysql $AUTH -h$WSREP_SST_OPT_HOST -P$WSREP_SST_OPT_PORT "\ -"--disable-reconnect --connect_timeout=10" - -# need to disable logging when loading the dump -# reason is that dump contains ALTER TABLE for log tables, and -# this causes an error if logging is enabled -GENERAL_LOG_OPT=`$MYSQL --skip-column-names -e"$STOP_WSREP SELECT @@GENERAL_LOG"` -SLOW_LOG_OPT=`$MYSQL --skip-column-names -e"$STOP_WSREP SELECT @@SLOW_QUERY_LOG"` -$MYSQL -e"$STOP_WSREP SET GLOBAL GENERAL_LOG=OFF" -$MYSQL -e"$STOP_WSREP SET GLOBAL SLOW_QUERY_LOG=OFF" - -# commands to restore log settings -RESTORE_GENERAL_LOG="SET GLOBAL GENERAL_LOG=$GENERAL_LOG_OPT;" -RESTORE_SLOW_QUERY_LOG="SET GLOBAL SLOW_QUERY_LOG=$SLOW_LOG_OPT;" - -if [ $WSREP_SST_OPT_BYPASS -eq 0 ] -then - (echo $STOP_WSREP && $MYSQLDUMP && echo $CSV_TABLES_FIX \ - && echo $RESTORE_GENERAL_LOG && echo $RESTORE_SLOW_QUERY_LOG \ - && echo $SET_START_POSITION \ - || echo "SST failed to complete;") | $MYSQL -else - wsrep_log_info "Bypassing state dump." - echo $SET_START_POSITION | $MYSQL -fi - -# diff --git a/scripts/wsrep_sst_rsync.sh b/scripts/wsrep_sst_rsync.sh deleted file mode 100644 index d510477535c..00000000000 --- a/scripts/wsrep_sst_rsync.sh +++ /dev/null @@ -1,210 +0,0 @@ -#!/bin/bash -ue - -# Copyright (C) 2010 Codership Oy -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to the -# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston -# MA 02110-1301 USA. - -# This is a reference script for rsync-based state snapshot tansfer - -RSYNC_PID= -RSYNC_CONF= - -. $(dirname $0)/wsrep_sst_common - -cleanup_joiner() -{ - wsrep_log_info "Joiner cleanup." - local PID=$(cat "$RSYNC_PID" 2>/dev/null || echo 0) - [ "0" != "$PID" ] && kill $PID && sleep 0.5 && kill -9 $PID >/dev/null 2>&1 \ - || : - rm -rf "$RSYNC_CONF" - rm -rf "$MAGIC_FILE" - rm -rf "$RSYNC_PID" - echo " done." >&2 -} - -check_pid() -{ - local pid_file=$1 - [ -r "$pid_file" ] && ps -p $(cat $pid_file) >/dev/null 2>&1 -} - -check_pid_and_port() -{ - local pid_file=$1 - local rsync_pid=$(cat $pid_file) - local rsync_port=$2 - - check_pid $pid_file && \ - netstat -anpt 2>/dev/null | \ - grep LISTEN | grep \:$rsync_port | grep $rsync_pid/rsync >/dev/null -} - -MAGIC_FILE="$WSREP_SST_OPT_DATA/rsync_sst_complete" -rm -rf "$MAGIC_FILE" - -if [ "$WSREP_SST_OPT_ROLE" = "donor" ] -then - - if [ $WSREP_SST_OPT_BYPASS -eq 0 ] - then - - FLUSHED="$WSREP_SST_OPT_DATA/tables_flushed" - rm -rf "$FLUSHED" - - # Use deltaxfer only for WAN - inv=$(basename $0) - [ "$inv" = "wsrep_sst_rsync_wan" ] && WHOLE_FILE_OPT="" \ - || WHOLE_FILE_OPT="--whole-file" - - echo "flush tables" - - # wait for tables flushed and state ID written to the file - while [ ! -r "$FLUSHED" ] && ! grep -q ':' "$FLUSHED" >/dev/null 2>&1 - do - sleep 0.2 - done - - STATE="$(cat $FLUSHED)" - rm -rf "$FLUSHED" - - sync - - # Old filter - include everything except selected - # FILTER=(--exclude '*.err' --exclude '*.pid' --exclude '*.sock' \ - # --exclude '*.conf' --exclude core --exclude 'galera.*' \ - # --exclude grastate.txt --exclude '*.pem' \ - # --exclude '*.[0-9][0-9][0-9][0-9][0-9][0-9]' --exclude '*.index') - - # New filter - exclude everything except dirs (schemas) and innodb files - FILTER=(-f '+ /ibdata*' -f '+ /ib_logfile*' -f '+ */' -f '-! */*') - - RC=0 - rsync --archive --no-times --ignore-times --inplace --delete --quiet \ - $WHOLE_FILE_OPT "${FILTER[@]}" "$WSREP_SST_OPT_DATA" \ - rsync://$WSREP_SST_OPT_ADDR || RC=$? - - [ $RC -ne 0 ] && echo "rsync returned code $RC:" >> /dev/stderr - - case $RC in - 0) RC=0 # Success - ;; - 12) RC=71 # EPROTO - wsrep_log_error \ - "rsync server on the other end has incompatible protocol. " \ - "Make sure you have the same version of rsync on all nodes." - ;; - 22) RC=12 # ENOMEM - ;; - *) RC=255 # unknown error - ;; - esac - - [ $RC -ne 0 ] && exit $RC - - else # BYPASS - wsrep_log_info "Bypassing state dump." - STATE="$WSREP_SST_OPT_GTID" - fi - - echo "continue" # now server can resume updating data - - echo "$STATE" > "$MAGIC_FILE" - rsync -aqc "$MAGIC_FILE" rsync://$WSREP_SST_OPT_ADDR - - echo "done $STATE" - -elif [ "$WSREP_SST_OPT_ROLE" = "joiner" ] -then - MYSQLD_PID=$WSREP_SST_OPT_PARENT - - MODULE="rsync_sst" - - RSYNC_PID="$WSREP_SST_OPT_DATA/$MODULE.pid" - - if check_pid $RSYNC_PID - then - echo "rsync daemon already running." - exit 114 # EALREADY - fi - rm -rf "$RSYNC_PID" - - ADDR=$WSREP_SST_OPT_ADDR - RSYNC_PORT=$(echo $ADDR | awk -F ':' '{ print $2 }') - if [ -z "$RSYNC_PORT" ] - then - RSYNC_PORT=4444 - ADDR="$(echo $ADDR | awk -F ':' '{ print $1 }'):$RSYNC_PORT" - fi - - trap "exit 32" HUP PIPE - trap "exit 3" INT TERM - trap cleanup_joiner EXIT - - MYUID=$(id -u) - MYGID=$(id -g) - RSYNC_CONF="$WSREP_SST_OPT_DATA/$MODULE.conf" - -cat << EOF > "$RSYNC_CONF" -pid file = $RSYNC_PID -use chroot = no -[$MODULE] - path = $WSREP_SST_OPT_DATA - read only = no - timeout = 300 - uid = $MYUID - gid = $MYGID -EOF - -# rm -rf "$DATA"/ib_logfile* # we don't want old logs around - - # listen at all interfaces (for firewalled setups) - rsync --daemon --port $RSYNC_PORT --config "$RSYNC_CONF" - - until check_pid_and_port $RSYNC_PID $RSYNC_PORT - do - sleep 0.2 - done - - echo "ready $ADDR/$MODULE" - - # wait for SST to complete by monitoring magic file - while [ ! -r "$MAGIC_FILE" ] && check_pid "$RSYNC_PID" && \ - ps -p $MYSQLD_PID >/dev/null - do - sleep 1 - done - - if ! ps -p $MYSQLD_PID >/dev/null - then - echo "Parent mysqld process (PID:$MYSQLD_PID) terminated unexpectedly." >&2 - exit 32 - fi - - if [ -r "$MAGIC_FILE" ] - then - cat "$MAGIC_FILE" # output UUID:seqno - else - # this message should cause joiner to abort - echo "rsync process ended without creating '$MAGIC_FILE'" - fi - -# cleanup_joiner -else - echo "Unrecognized role: '$WSREP_SST_OPT_ROLE'" - exit 22 # EINVAL -fi - -exit 0 diff --git a/scripts/wsrep_sst_xtrabackup.sh b/scripts/wsrep_sst_xtrabackup.sh deleted file mode 100644 index 08552f50a44..00000000000 --- a/scripts/wsrep_sst_xtrabackup.sh +++ /dev/null @@ -1,222 +0,0 @@ -#!/bin/bash -ue - -# Copyright (C) 2011 Percona Inc -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to the -# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston -# MA 02110-1301 USA. - -# This is a reference script for Percona XtraBackup-based state snapshot tansfer - -TMPDIR="/tmp" - -. $(dirname $0)/wsrep_sst_common - -cleanup_joiner() -{ -#set -x - local PID=$(ps -aef |grep nc| grep $NC_PORT | awk '{ print $2 }') - wsrep_log_info "Killing nc pid $PID" - [ -n "$PID" -a "0" != "$PID" ] && kill $PID && (kill $PID && kill -9 $PID) || : - rm -f "$MAGIC_FILE" -#set +x -} - -check_pid() -{ - local pid_file="$1" - [ -r "$pid_file" ] && ps -p $(cat "$pid_file") >/dev/null 2>&1 -} - -kill_xtrabackup() -{ -#set -x - local PID=$(cat $XTRABACKUP_PID) - [ -n "$PID" -a "0" != "$PID" ] && kill $PID && (kill $PID && kill -9 $PID) || : - rm -f "$XTRABACKUP_PID" -#set +x -} - -# waits ~10 seconds for nc to open the port and then reports ready -# (regardless of timeout) -wait_for_nc() -{ - local PORT=$1 - local ADDR=$2 - local MODULE=$3 - for i in $(seq 1 50) - do - netstat -nptl 2>/dev/null | grep '/nc\s*$' | awk '{ print $4 }' | \ - sed 's/.*://' | grep \^${PORT}\$ >/dev/null && break - sleep 0.2 - done - echo "ready ${ADDR}/${MODULE}" -} - -INNOBACKUPEX_BIN=innobackupex -INNOBACKUPEX_ARGS="" -NC_BIN=nc - -for TOOL_BIN in INNOBACKUPEX_BIN NC_BIN ; do - if ! which ${!TOOL_BIN} > /dev/null 2>&1 - then - echo "Can't find ${!TOOL_BIN} in the path" - exit 22 # EINVAL - fi -done - -#ROLE=$1 -#ADDR=$2 -readonly AUTH=(${WSREP_SST_OPT_AUTH//:/ }) -readonly DATA="${WSREP_SST_OPT_DATA}" -#CONF=$5 - -INFO_FILE="xtrabackup_galera_info" -IST_FILE="xtrabackup_ist" - -MAGIC_FILE="${DATA}/${INFO_FILE}" -rm -f "${MAGIC_FILE}" - -if [ "$WSREP_SST_OPT_ROLE" = "donor" ] -then - -# UUID=$6 -# SEQNO=$7 -# BYPASS=$8 - - NC_PORT=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $2 }') - REMOTEIP=$(echo $WSREP_SST_OPT_ADDR | awk -F ':' '{ print $1 }') - - if [ $WSREP_SST_OPT_BYPASS -eq 0 ] - then - - INNOBACKUPEX_ARGS="--galera-info --tmpdir=${TMPDIR} --stream=tar - --defaults-file=${WSREP_SST_OPT_CONF} - --socket=${WSREP_SST_OPT_SOCKET}" - - if [ "${AUTH[0]}" != "(null)" ]; then - INNOBACKUPEX_ARGS="${INNOBACKUPEX_ARGS} --user=${AUTH[0]}" - fi - - if [ ${#AUTH[*]} -eq 2 ]; then - INNOBACKUPEX_ARGS="${INNOBACKUPEX_ARGS} --password=${AUTH[1]}" - fi - - set +e - - # This file and variable seems to have no effect and probably should be deleted - XTRABACKUP_PID=$(mktemp --tmpdir wsrep_sst_xtrabackupXXXX.pid) - - ${INNOBACKUPEX_BIN} ${INNOBACKUPEX_ARGS} ${TMPDIR} \ - 2> ${DATA}/innobackup.backup.log | \ - ${NC_BIN} ${REMOTEIP} ${NC_PORT} - - RC=( "${PIPESTATUS[@]}" ) - set -e - - if [ ${RC[0]} -ne 0 ]; then - wsrep_log_error "${INNOBACKUPEX_BIN} finished with error: ${RC[0]}. " \ - "Check ${DATA}/innobackup.backup.log" - exit 22 - elif [ ${RC[1]} -ne 0 ]; then - wsrep_log_error "${NC_BIN} finished with error: ${RC[1]}" - exit 22 - fi - - if check_pid "${XTRABACKUP_PID}" - then - wsrep_log_error "xtrabackup process is still running. Killing... " - kill_xtrabackup - exit 22 - fi - - rm -f "${XTRABACKUP_PID}" - - else # BYPASS - STATE="${WSREP_SST_OPT_GTID}" - echo "continue" # now server can resume updating data - echo "${STATE}" > "${MAGIC_FILE}" - echo "1" > "${DATA}/${IST_FILE}" - (cd ${DATA}; tar cf - ${INFO_FILE} ${IST_FILE}) | ${NC_BIN} ${REMOTEIP} ${NC_PORT} - rm -f ${DATA}/${IST_FILE} - fi - - echo "done ${WSREP_SST_OPT_GTID}" - -elif [ "${WSREP_SST_OPT_ROLE}" = "joiner" ] -then - MODULE="xtrabackup_sst" - - rm -f ${DATA}/xtrabackup_* - - ADDR=${WSREP_SST_OPT_ADDR} - NC_PORT=$(echo ${ADDR} | awk -F ':' '{ print $2 }') - if [ -z "${NC_PORT}" ] - then - NC_PORT=4444 - ADDR="$(echo ${ADDR} | awk -F ':' '{ print $1 }'):${NC_PORT}" - fi - - wait_for_nc ${NC_PORT} ${ADDR} ${MODULE} & - -# trap "exit 32" HUP PIPE -# trap "exit 3" INT TERM - trap cleanup_joiner HUP PIPE INT TERM - - set +e - ${NC_BIN} -dl ${NC_PORT} | tar xfi - -C ${DATA} 1>&2 - RC=( "${PIPESTATUS[@]}" ) - set -e - - wait %% # join wait_for_nc thread - - if [ ${RC[0]} -ne 0 -o ${RC[1]} -ne 0 ]; - then - wsrep_log_error "Error while getting st data from donor node: " \ - "${RC[0]}, ${RC[1]}" - exit 32 - fi - - if [ ! -r "${MAGIC_FILE}" ] - then - # this message should cause joiner to abort - wsrep_log_error "xtrabackup process ended without creating '${MAGIC_FILE}'" - exit 32 - fi - - if ! ps -p ${WSREP_SST_OPT_PARENT} >/dev/null - then - wsrep_log_error "Parent mysqld process (PID:${WSREP_SST_OPT_PARENT}) terminated unexpectedly." >&2 - exit 32 - fi - - if [ ! -r "${IST_FILE}" ] - then - rm -f ${DATA}/ib_logfile* - ${INNOBACKUPEX_BIN} --defaults-file=${WSREP_SST_OPT_CONF} --apply-log \ - --ibbackup=xtrabackup ${DATA} 1>&2 2> ${DATA}/innobackup.prepare.log - if [ $? -ne 0 ]; - then - wsrep_log_error "${INNOBACKUPEX_BIN} finished with errors. Check ${DATA}/innobackup.prepare.log" >&2 - exit 22 - fi - fi - - cat "${MAGIC_FILE}" # output UUID:seqno - -else - wsrep_log_error "Unrecognized role: ${WSREP_SST_OPT_ROLE}" - exit 22 # EINVAL -fi - -exit 0 |