github.com/percona/percona-xtradb-cluster-operator@v1.14.0/build/readiness-check.sh (about) 1 #!/bin/bash 2 3 if [[ $1 == '-h' || $1 == '--help' ]]; then 4 echo "Usage: $0 <user> <pass>" 5 exit 6 fi 7 8 if [ -f /tmp/recovery-case ] || [ -f '/var/lib/mysql/sleep-forever' ]; then 9 exit 0 10 fi 11 12 { set +x; } 2>/dev/null 13 MYSQL_USERNAME="${MYSQL_USERNAME:-monitor}" 14 mysql_pass=$(cat /etc/mysql/mysql-users-secret/monitor || :) 15 MYSQL_PASSWORD="${mysql_pass:-$MONITOR_PASSWORD}" 16 DEFAULTS_EXTRA_FILE=${DEFAULTS_EXTRA_FILE:-/etc/my.cnf} 17 AVAILABLE_WHEN_DONOR=${AVAILABLE_WHEN_DONOR:-1} 18 NODE_IP=$(hostname -I | awk ' { print $1 } ') 19 20 #Timeout exists for instances where mysqld may be hung 21 TIMEOUT=$((${READINESS_CHECK_TIMEOUT:-10} - 1)) 22 23 EXTRA_ARGS="" 24 if [[ -n "$MYSQL_USERNAME" ]]; then 25 EXTRA_ARGS="$EXTRA_ARGS -P 33062 -h${NODE_IP} --protocol=TCP --user=${MYSQL_USERNAME}" 26 fi 27 if [[ -r $DEFAULTS_EXTRA_FILE ]];then 28 MYSQL_CMDLINE="/usr/bin/timeout $TIMEOUT mysql --defaults-extra-file=$DEFAULTS_EXTRA_FILE -nNE \ 29 --connect-timeout=$TIMEOUT ${EXTRA_ARGS}" 30 else 31 MYSQL_CMDLINE="/usr/bin/timeout $TIMEOUT mysql -nNE --connect-timeout=$TIMEOUT ${EXTRA_ARGS}" 32 fi 33 34 WSREP_STATUS=($(MYSQL_PWD="${MYSQL_PASSWORD}" $MYSQL_CMDLINE --init-command="SET SESSION wsrep_sync_wait=0;" -e "SHOW GLOBAL STATUS LIKE 'wsrep_%';" \ 35 | grep -A 1 -E 'wsrep_local_state$|wsrep_cluster_status$' \ 36 | sed -n -e '2p' -e '5p' | tr '\n' ' ')) 37 set -x 38 39 if [[ ${WSREP_STATUS[1]} == 'Primary' && ( ${WSREP_STATUS[0]} -eq 4 || \ 40 ( ${WSREP_STATUS[0]} -eq 2 && $AVAILABLE_WHEN_DONOR -eq 1 ) ) ]]; then 41 exit 0 42 else 43 exit 1 44 fi