[MySQL] Slave 멈췄는지 확인한 다음 Start 시켜주는 프로그램
PHP로 만들어진 프로그램입니다. 간혹 멈춰진 경우가 있어 skip 처리 없이 start만 해줘도 되는 경우가 있어 만들게 되었습니다. skip 없이 start만 한다는게 설정상의 문제나 현재 DBMS의 문제가 있는것 같기도 하지만 신경쓰려면 시간이 걸려 급하지 않은 문제로 간단한 프로그램 올립니다.
if ($MODE == 'slave_status_check_start')
{
$chkNum = 0;
$sqlQuery = "SHOW SLAVE STATUS";
$oResult = mysqli_query($mysqlCon, $sqlQuery);
foreach ( $aRs = mysqli_fetch_assoc($oResult) as $aryIdx => $value )
{
// print_r($aRs);
// exit;
extract($aRs);
// echo "$aryIdx => $value \n";
if ( $Slave_IO_Running == 'Yes' && $Slave_SQL_Running == 'Yes' )
{
echo "$Slave_IO_Running == 'Yes' && $Slave_SQL_Running == 'Yes' \n";
echo "정상인 상태로 프로그램 종료 합니다. \n";
exit;
// continue;
}
else
{
echo "현재상태 > Slave_IO_Running:$Slave_IO_Running / Slave_SQL_Running:$Slave_SQL_Running \n";
# 1) stop
$sqlQuery = "STOP SLAVE";
$oResult = mysqli_query($mysqlCon, $sqlQuery);
echo "$oResult: stop slave" . "\n";
#
echo "2 sec sleep" . "\n";
sleep(2);
# 2) start
$sqlQuery = "START SLAVE";
$oResult = mysqli_query($mysqlCon, $sqlQuery);
echo "$oResult: start slave" . "\n";
#
echo "2 sec sleep" . "\n";
sleep(2);
$chkNum++;
echo "횟수: " . $chkNum . "\n";
}
#
if ( $chkNum > 7 ) {
echo $chkNum . "회 실행하였습니다. / $Slave_IO_Running:$Slave_SQL_Running" . "\n";
exit;
}
}
}
이 프로그램은 스케줄에 넣고 10분에 한번씩 실행 되게 하여 복제가 이루어 지는데 문제 없게 합니다.
skip가 필요한 경우는 아래 링크를 참고 하세요.