From 89b0d5cb6e3db2736cdc5b66fd1f24e4455bc634 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 16 Oct 2017 17:49:52 +0200 Subject: MDEV-13968 sst fails with "WSREP_SST_OPT_PORT: readonly variable" Backport from 10.2: 4c2c057d404 and f7090df712d --- scripts/wsrep_sst_common.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/wsrep_sst_common.sh b/scripts/wsrep_sst_common.sh index a8f671de224..db0543a4d0f 100644 --- a/scripts/wsrep_sst_common.sh +++ b/scripts/wsrep_sst_common.sh @@ -43,7 +43,7 @@ case "$1" in else readonly WSREP_SST_OPT_HOST_UNESCAPED=${WSREP_SST_OPT_HOST} fi - readonly WSREP_SST_OPT_PORT=$(echo $WSREP_SST_OPT_ADDR | \ + readonly WSREP_SST_OPT_ADDR_PORT=$(echo $WSREP_SST_OPT_ADDR | \ cut -d ']' -f 2 | cut -s -d ':' -f 2 | cut -d '/' -f 1) readonly WSREP_SST_OPT_PATH=${WSREP_SST_OPT_ADDR#*/} readonly WSREP_SST_OPT_MODULE=${WSREP_SST_OPT_PATH%%/*} @@ -126,6 +126,17 @@ done readonly WSREP_SST_OPT_BYPASS readonly WSREP_SST_OPT_BINLOG +if [ -n "${WSREP_SST_OPT_ADDR_PORT:-}" ]; then + if [ -n "${WSREP_SST_OPT_PORT:-}" ]; then + if [ "$WSREP_SST_OPT_PORT" != "$WSREP_SST_OPT_ADDR_PORT" ]; then + wsrep_log_error "port in --port=$WSREP_SST_OPT_PORT differs from port in --address=$WSREP_SST_OPT_ADDR" + exit 2 + fi + else + readonly WSREP_SST_OPT_PORT="$WSREP_SST_OPT_ADDR_PORT" + fi +fi + # try to use my_print_defaults, mysql and mysqldump that come with the sources # (for MTR suite) SCRIPTS_DIR="$(cd $(dirname "$0"); pwd -P)" -- cgit v1.2.1 From a15ab358fc1ea75634de266fa8150b3e89ac5593 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 20 Mar 2018 22:35:19 +0100 Subject: wsrep_sst scripts: support traditional netcat --- scripts/wsrep_sst_mariabackup.sh | 18 ++++++++++++++++-- scripts/wsrep_sst_xtrabackup-v2.sh | 19 ++++++++++++++++--- scripts/wsrep_sst_xtrabackup.sh | 18 ++++++++++++++++-- 3 files changed, 48 insertions(+), 7 deletions(-) (limited to 'scripts') diff --git a/scripts/wsrep_sst_mariabackup.sh b/scripts/wsrep_sst_mariabackup.sh index 9e3fc54290d..549161aa8f3 100644 --- a/scripts/wsrep_sst_mariabackup.sh +++ b/scripts/wsrep_sst_mariabackup.sh @@ -179,12 +179,26 @@ get_transfer() wsrep_log_info "Using netcat as streamer" if [[ "$WSREP_SST_OPT_ROLE" == "joiner" ]];then if nc -h 2>&1 | grep -q ncat;then + # Ncat tcmd="nc -l ${TSST_PORT}" - else + elif nc -h 2>&1 | grep -q -- '-d\>';then + # Debian netcat tcmd="nc -dl ${TSST_PORT}" + else + # traditional netcat + tcmd="nc -l -p ${TSST_PORT}" fi else - tcmd="nc ${REMOTEIP} ${TSST_PORT}" + if nc -h 2>&1 | grep -q ncat;then + # Ncat + tcmd="nc ${REMOTEIP} ${TSST_PORT}" + elif nc -h 2>&1 | grep -q -- '-d\>';then + # Debian netcat + tcmd="nc ${REMOTEIP} ${TSST_PORT}" + else + # traditional netcat + tcmd="nc -q0 ${REMOTEIP} ${TSST_PORT}" + fi fi else tfmt='socat' diff --git a/scripts/wsrep_sst_xtrabackup-v2.sh b/scripts/wsrep_sst_xtrabackup-v2.sh index 9104daf19bc..00efdaeebcf 100644 --- a/scripts/wsrep_sst_xtrabackup-v2.sh +++ b/scripts/wsrep_sst_xtrabackup-v2.sh @@ -268,13 +268,26 @@ get_transfer() wsrep_log_info "Using netcat as streamer" if [[ "$WSREP_SST_OPT_ROLE" == "joiner" ]];then if nc -h 2>&1 | grep -q ncat; then + # Ncat tcmd="nc $sockopt -l ${TSST_PORT}" - else + elif nc -h 2>&1 | grep -q -- '-d\>';then + # Debian netcat tcmd="nc $sockopt -dl ${TSST_PORT}" + else + # traditional netcat + tcmd="nc $sockopt -l -p ${TSST_PORT}" fi else - # netcat doesn't understand [] around IPv6 address - tcmd="nc ${WSREP_SST_OPT_HOST_UNESCAPED} ${TSST_PORT}" + if nc -h 2>&1 | grep -q ncat;then + # Ncat + tcmd="nc ${WSREP_SST_OPT_HOST_UNESCAPED} ${TSST_PORT}" + elif nc -h 2>&1 | grep -q -- '-d\>';then + # Debian netcat + tcmd="nc ${WSREP_SST_OPT_HOST_UNESCAPED} ${TSST_PORT}" + else + # traditional netcat + tcmd="nc -q0 ${WSREP_SST_OPT_HOST_UNESCAPED} ${TSST_PORT}" + fi fi else tfmt='socat' diff --git a/scripts/wsrep_sst_xtrabackup.sh b/scripts/wsrep_sst_xtrabackup.sh index 867aab622ed..628c1f8b06c 100644 --- a/scripts/wsrep_sst_xtrabackup.sh +++ b/scripts/wsrep_sst_xtrabackup.sh @@ -144,12 +144,26 @@ get_transfer() wsrep_log_info "Using netcat as streamer" if [[ "$WSREP_SST_OPT_ROLE" == "joiner" ]];then if nc -h 2>&1 | grep -q ncat;then + # Ncat tcmd="nc -l ${TSST_PORT}" - else + elif nc -h 2>&1 | grep -q -- '-d\>';then + # Debian netcat tcmd="nc -dl ${TSST_PORT}" + else + # traditional netcat + tcmd="nc -l -p ${TSST_PORT}" fi else - tcmd="nc ${WSREP_SST_OPT_HOST_UNESCAPED} ${TSST_PORT}" + if nc -h 2>&1 | grep -q ncat;then + # Ncat + tcmd="nc ${REMOTEIP} ${TSST_PORT}" + elif nc -h 2>&1 | grep -q -- '-d\>';then + # Debian netcat + tcmd="nc ${REMOTEIP} ${TSST_PORT}" + else + # traditional netcat + tcmd="nc -q0 ${REMOTEIP} ${TSST_PORT}" + fi fi else tfmt='socat' -- cgit v1.2.1 From 8f1014e9a0b41c3893f4b15b9db4842d816d9f3f Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 19 Mar 2018 23:27:10 +0100 Subject: MDEV-15409 make sure every sst script is tested in buildbot fix galera.galera_sst_mysqldump test to work: * must connect to 127.0.0.1, where mysqld is listening * disable wsrep_sync_wait in wsrep_sst_mysqldump, otherwise sst can deadlock * allow 127.0.0.1 for bind_address and wsrep_sst_receive_address. (it's useful in tests, or when two nodes are on the same box, or when nodes are on different boxes, but the connection is tunelled, or whatever. Don't judge user's setup). MDEV-14070 * don't wait for client connections to die when doing mysqldump sst. they'll die in a due time, and if needed mysql will wait on locks until they do. MDEV-14069 Also don't mark it big, to make sure it's sufficiently tested --- scripts/wsrep_sst_mysqldump.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/wsrep_sst_mysqldump.sh b/scripts/wsrep_sst_mysqldump.sh index 358247359e6..46edefd4829 100644 --- a/scripts/wsrep_sst_mysqldump.sh +++ b/scripts/wsrep_sst_mysqldump.sh @@ -119,11 +119,11 @@ MYSQL="$MYSQL_CLIENT $WSREP_SST_OPT_CONF "\ # Check if binary logging is enabled on the joiner node. # Note: SELECT cannot be used at this point. -LOG_BIN=$(echo "SHOW VARIABLES LIKE 'log_bin'" | $MYSQL |\ +LOG_BIN=$(echo "set statement wsrep_sync_wait=0 for SHOW VARIABLES LIKE 'log_bin'" | $MYSQL |\ tail -1 | awk -F ' ' '{ print $2 }') # Check the joiner node's server version. -SERVER_VERSION=$(echo "SHOW VARIABLES LIKE 'version'" | $MYSQL |\ +SERVER_VERSION=$(echo "set statement wsrep_sync_wait=0 for SHOW VARIABLES LIKE 'version'" | $MYSQL |\ tail -1 | awk -F ' ' '{ print $2 }') RESET_MASTER="" -- cgit v1.2.1 From d3681c18f96ebf9b66c7541459b2eb34a4827734 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 14 Nov 2017 07:22:25 +0800 Subject: followup for 89b0d5cb6e3, backport 8c422bf48d7 --- scripts/wsrep_sst_common.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/wsrep_sst_common.sh b/scripts/wsrep_sst_common.sh index db0543a4d0f..47d9021fe55 100644 --- a/scripts/wsrep_sst_common.sh +++ b/scripts/wsrep_sst_common.sh @@ -126,9 +126,9 @@ done readonly WSREP_SST_OPT_BYPASS readonly WSREP_SST_OPT_BINLOG -if [ -n "${WSREP_SST_OPT_ADDR_PORT:-}" ]; then +if [ -n "${WSREP_SST_OPT_ADDR:-}" ]; then if [ -n "${WSREP_SST_OPT_PORT:-}" ]; then - if [ "$WSREP_SST_OPT_PORT" != "$WSREP_SST_OPT_ADDR_PORT" ]; then + if [ -n "$WSREP_SST_OPT_ADDR_PORT" -a "$WSREP_SST_OPT_PORT" != "$WSREP_SST_OPT_ADDR_PORT" ]; then wsrep_log_error "port in --port=$WSREP_SST_OPT_PORT differs from port in --address=$WSREP_SST_OPT_ADDR" exit 2 fi -- cgit v1.2.1