github.com/percona/percona-xtradb-cluster-operator@v1.14.0/build/liveness-check.sh (about)

     1  #!/bin/bash
     2  
     3  if [[ $1 == '-h' || $1 == '--help' ]]; then
     4  	echo "Usage: $0 <user> <pass> <log_file>"
     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  if [[ -f '/var/lib/mysql/sst_in_progress' ]] || [[ -f '/var/lib/mysql/wsrep_recovery_verbose.log' ]]; then
    13  	exit 0
    14  fi
    15  
    16  { set +x; } 2>/dev/null
    17  MYSQL_USERNAME="${MYSQL_USERNAME:-monitor}"
    18  mysql_pass=$(cat /etc/mysql/mysql-users-secret/monitor || :)
    19  MYSQL_PASSWORD="${mysql_pass:-$MONITOR_PASSWORD}"
    20  DEFAULTS_EXTRA_FILE=${DEFAULTS_EXTRA_FILE:-/etc/my.cnf}
    21  NODE_IP=$(hostname -I | awk ' { print $1 } ')
    22  #Timeout exists for instances where mysqld may be hung
    23  TIMEOUT=$((${LIVENESS_CHECK_TIMEOUT:-5} - 1))
    24  
    25  EXTRA_ARGS=""
    26  if [[ -n $MYSQL_USERNAME ]]; then
    27  	EXTRA_ARGS="$EXTRA_ARGS -P 33062 -h${NODE_IP} --protocol=TCP --user=${MYSQL_USERNAME}"
    28  fi
    29  if [[ -r $DEFAULTS_EXTRA_FILE ]]; then
    30  	MYSQL_CMDLINE="/usr/bin/timeout $TIMEOUT mysql --defaults-extra-file=$DEFAULTS_EXTRA_FILE -nNE \
    31          --connect-timeout=$TIMEOUT ${EXTRA_ARGS}"
    32  else
    33  	MYSQL_CMDLINE="/usr/bin/timeout $TIMEOUT mysql -nNE --connect-timeout=$TIMEOUT ${EXTRA_ARGS}"
    34  fi
    35  
    36  STATUS=$(MYSQL_PWD="${MYSQL_PASSWORD}" $MYSQL_CMDLINE --init-command="SET SESSION wsrep_sync_wait=0;" -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_status';" | sed -n -e '3p')
    37  set -x
    38  
    39  if [[ -n ${STATUS} && ${STATUS} == 'Primary' ]]; then
    40  	exit 0
    41  fi
    42  
    43  exit 1