# WSREP status is not ok, but the node is marked online, we should put it offline
if["${WSREP_STATUS}" !="4" -a "${WSREP_STATUS}" !="2" -a "$stat"="ONLINE"];then
if["${WSREP_STATUS}" !="4" -a "$stat"="ONLINE"];then
change_server_status $HOSTGROUP_WRITER_ID"$server"$port"OFFLINE_SOFT""WSREP status is ${WSREP_STATUS} which is not ok"
elif["${WSREP_STATUS}" !="4" -a "${WSREP_STATUS}" !="2" -a "$stat"="OFFLINE_SOFT"];then
echo"1" > ${RELOAD_CHECK_FILE}
elif["${WSREP_STATUS}" !="4" -a "$stat"="OFFLINE_SOFT"];then
echo"`date` server $hostgroup:$server:$port is already OFFLINE_SOFT, WSREP status is ${WSREP_STATUS} which is not ok" >> ${ERR_FILE}
fi
@ -209,10 +217,12 @@ if [ ${HOSTGROUP_READER_ID} -ne -1 ]; then
if["${WSREP_STATUS}"="4" -a "$stat" !="ONLINE"];then
change_server_status $HOSTGROUP_READER_ID"$server"$port"ONLINE""marking ONLINE write node as read ONLINE state, not enough non-ONLINE readers found"
echo"1" > ${RELOAD_CHECK_FILE}
fi
else
if["${WSREP_STATUS}"="4" -a "$stat"=="ONLINE"];then
change_server_status $HOSTGROUP_READER_ID"$server"$port"OFFLINE_SOFT""making ONLINE writer node as read OFFLINE_SOFT as well because writers should not be readers"
echo"1" > ${RELOAD_CHECK_FILE}
fi
if["${WSREP_STATUS}"="4" -a "$stat" !="ONLINE"];then
@ -228,6 +238,7 @@ if [ ${HOSTGROUP_READER_ID} -ne -1 ]; then
# WSREP status OK, but node is not marked ONLINE
if["${WSREP_STATUS}"="4" -a "$stat" !="ONLINE"];then
change_server_status $HOSTGROUP_READER_ID"$server"$port"ONLINE""changed state, making read node ONLINE"
@ -235,6 +246,7 @@ if [ ${HOSTGROUP_READER_ID} -ne -1 ]; then
# WSREP status is not ok, but the node is marked online, we should put it offline
if["${WSREP_STATUS}" !="4" -a "$stat"="ONLINE"];then
change_server_status $HOSTGROUP_READER_ID"$server"$port"OFFLINE_SOFT""WSREP status is ${WSREP_STATUS} which is not ok"
echo"1" > ${RELOAD_CHECK_FILE}
elif["${WSREP_STATUS}" !="4" -a "$stat"="OFFLINE_SOFT"];then
echo"`date` server $hostgroup:$server:$port is already OFFLINE_SOFT, WSREP status is ${WSREP_STATUS} which is not ok" >> ${ERR_FILE}
fi
@ -264,6 +276,7 @@ if [ ${NUMBER_WRITERS_ONLINE} -eq 0 ]; then
if["${WSREP_STATUS}"="2" -a "$stat" !="ONLINE"]
then
change_server_status $HOSTGROUP_WRITER_ID"$server"$port"ONLINE""WSREP status is DESYNC/DONOR, as this is the only node we will put this one online"
echo"1" > ${RELOAD_CHECK_FILE}
cnt=$(($cnt+1))
fi
safety_cnt=$(($safety_cnt+1))
@ -277,7 +290,7 @@ cnt=0
if[${HOSTGROUP_READER_ID} -ne -1 -a ${NUMBER_READERS_ONLINE} -eq 0];then
echo"`date` ###### TRYING TO FIX MISSING READERS ######"
echo"`date` --> No readers found, Trying to enable last available node of the cluster (in Donor/Desync state) or pick the master" >> ${ERR_FILE}
$PROXYSQL_CMDLINE"SELECT hostgroup_id, hostname, port, status FROM mysql_servers WHERE hostgroup_id IN ($HOSTGROUP_WRITER_ID) AND status <> 'OFFLINE_HARD'"|whileread hostgroup server port stat
$PROXYSQL_CMDLINE"SELECT hostgroup_id, hostname, port, status FROM mysql_servers WHERE hostgroup_id IN ($HOSTGROUP_READER_ID) AND status <> 'OFFLINE_HARD'"|whileread hostgroup server port stat
do
safety_cnt=0
while[${cnt} -eq 0 -a ${safety_cnt} -lt 5]
@ -286,7 +299,8 @@ if [ ${HOSTGROUP_READER_ID} -ne -1 -a ${NUMBER_READERS_ONLINE} -eq 0 ]; then
echo"`date` Check server $hostgroup:$server:$port for only available node in DONOR state, status $stat , wsrep_local_state $WSREP_STATUS" >> ${ERR_FILE}
if["${WSREP_STATUS}"="2" -a "$stat" !="ONLINE"]
then
change_server_status $HOSTGROUP_WRITER_ID"$server"$port"ONLINE""WSREP status is DESYNC/DONOR, as this is the only node we will put this one online"
change_server_status $HOSTGROUP_READER_ID"$server"$port"ONLINE""WSREP status is DESYNC/DONOR, as this is the only node we will put this one online"
echo"1" > ${RELOAD_CHECK_FILE}
cnt=$(($cnt+1))
fi
safety_cnt=$(($safety_cnt+1))
@ -295,8 +309,12 @@ if [ ${HOSTGROUP_READER_ID} -ne -1 -a ${NUMBER_READERS_ONLINE} -eq 0 ]; then
fi
if[$(cat ${RELOAD_CHECK_FILE}) -ne 0];then
echo"`date` ###### Loading mysql_servers config into runtime ######" >> ${ERR_FILE}
$PROXYSQL_CMDLINE"LOAD MYSQL SERVERS TO RUNTIME;" 2>> ${ERR_FILE}
else
echo"`date` ###### Not loading mysql_servers, no change needed ######" >> ${ERR_FILE}
fi
echo"`date` ###### Loading mysql_servers config into runtime ######" >> ${ERR_FILE}
$PROXYSQL_CMDLINE"LOAD MYSQL SERVERS TO RUNTIME;" 2>> ${ERR_FILE}