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