Home >Backend Development >PHP Tutorial >PHP method to detect mysql synchronization status under Linux_PHP tutorial

PHP method to detect mysql synchronization status under Linux_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:01:32792browse

How to use php to detect mysql synchronization status under Linux

This article mainly introduces how to use php to detect mysql synchronization status under Linux. It is the method of using php to detect mysql synchronization under Linux. The practical skills of status have certain reference value. Friends in need can refer to it

The example in this article describes how PHP detects the synchronization status of MySQL under Linux. Share it with everyone for your reference. The specific analysis is as follows:

Here are two examples to introduce the implementation method of mysql synchronization status detection. The code is as follows:

The code is as follows:

#!/bin/sh

#check MySQL_Slave Status
#crontab time 00:10
MYSQL_USER="root"
MYSQL_PWD="123456"
MYSQL_SLAVE_LOG="/tmp/check_mysql_slave.log"
EMAIL="1351010****@139.com"

MYSQL_PORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "] '{print $5}'`
MYSQL_IP=`ifconfig eth0|grep "inet addr" | awk -F[:" "] '{print $4}'`
MYSQL_SLAVE_STATUS=$(/usr/local/webserver/mysql/bin/mysql -u root -psylc23hua -S /tmp/mysql.sock -e

"show slave statusG" | grep -i "running")
IO_ENV=`echo $MYSQL_SLAVE_STATUS | grep IO | awk ' {print $2}'`
SQL_ENV=`echo $MYSQL_SLAVE_STATUS | grep SQL | awk '{print $2}'`
NOW=$(date -d today '%Y-%m-%d %H:%M:%S')

if [ "$MYSQL_PORT" = "3306" ];then
echo "mysql is running!"
else
mail -s "warn!server: $MYSQL_IP mysql is down" "$EMAIL"
fi

if [ "$IO_ENV" = "Yes" -a "$SQL_ENV" = "Yes" ];then
echo "Slave is running!"
else
echo "[ $NOW ] Slave is not running!" >> "$MYSQL_SLAVE_LOG"
cat "$MYSQL_SLAVE_LOG" | mail -s "WARN! ${MySQL_IP}_replicate_error" "$EMAIL"
fi

exit 0
PHP example code, the code is as follows:
check_rep.php:

The code is as follows:

if(emptyempty($_REQUEST["key"])) die(':) missing key');
if($_REQUEST["key"] != 'xupeng') die(':) error key');

include("mysql_instance.php");
include("check_status_api.php");

define("USERNAME", "username");
define("PASSWORD", "Password");
define("DEBUGMODE", false);

$instances = get_instances();

if($instances){
echo <<



END;
echo "
n";
if(!DEBUGMODE){
echo "
n";
}else{
echo "
n";
}
foreach($instances as $host){
$res = check_mysql_replication_status($host, USERNAME, PASSWORD);
if(!DEBUGMODE){
switch($res["result"]){
case -4:
$memo = "Unknown exception";
break;
case -3:
$memo = "Query failed";
break;
case -2:
$memo = "Unable to connect to port";
break;
case -1:
$memo = "Status unknown";
break;
case 0:
$memo = "OK";
break;
case 1:
$memo = "Sync failed";
if($res["Slave_IO_Running"] <> "Yes"){
$memo .= $res["Last_IO_Error"] . "(" . $res

["Last_IO_Errno"] . ")";
}
if($res["Slave_SQL_Running"] <> "Yes"){
$memo .= $res["Last_SQL_Error"] . "(" . $res

["Last_SQL_Errno"] . ")";
}
break;
case 2:
$memo = "Database is not synchronized";
break;
}
echo "

n";
}else{
echo "

n";
}
}
echo "



















































instance result Slave_IO_Running Slave_SQL_Running Master_Host Master_Port Replicate_Do_DB memo
instance result Slave_IO_Running Slave_SQL_Running Master_Host Master_Port Replicate_Do_DB Slave_IO_State Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
{$host} {$res['result']} {$res['Slave_IO_Running']} {$res['Slave_SQL_Running']} {$res['Master_Host']} {$res['Master_Port']} {$res['Replicate_Do_DB']} {$memo}
{$host} {$res['result']} {$res['Slave_IO_Running']} {$res['Slave_SQL_Running']} {$res['Master_Host']} {$res['Master_Port']} {$res['Replicate_Do_DB']} {$res['Slave_IO_State']} {$res['Last_IO_Errno']} {$res['Last_IO_Error']} {$res['Last_SQL_Errno']} {$res['Last_SQL_Error']}

n";
echo <<

END;
}else{
die("no mysql instances defined.");
}


check_status_api.php:

The code is as follows:

/*
* Check the synchronization status of mysql server
*/
function check_mysql_replication_status($host, $username, $password)
{
//The default status is unknown
$r = array(
"result" => -1
);
try{
$dbh = @mysql_connect($host, $username, $password);
if(!$dbh){
//Unable to connect
$r["result"] = -2;
return($r);
}
$query = "SHOW SLAVE STATUS";
$res = @mysql_query($query, $dbh);
$err = @mysql_error();
if($err){
//Unable to connect
$r["result"] = -3;
return($r);
}
$row = mysql_fetch_array($res);
$r = $row;
if(($r["Slave_IO_Running"] == "Yes") && ($r["Slave_SQL_Running"] == "Yes"))
{
$r["result"] = 0;
}else{
if(!emptyempty($row)){
$r["result"] = 1;
}else{
$r["result"] = 2;
}
}
}catch(Exception $e){
$r["result"] = -4;
}
return($r);
}
mysql_instance.php:

The code is as follows:

//GRANT REPLICATION CLIENT ON *.* TO 'username'@'monitoring host ip' IDENTIFIED BY 'password'; $mysql_instances =

array();
$mysql_instances[] = "Remote ip:port";

function get_instances()
{
global $mysql_instances;
return $mysql_instances;
}


Place the above three PHP files in the virtual directory and access them via URL.

Access method: http://ip/check_repl.php?key=xupeng

I hope this article will be helpful to everyone’s PHP programming design.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/971934.htmlTechArticleHow to detect mysql synchronization status in php under linux This article mainly introduces how to detect mysql synchronization status in php under linux The method is a practical technique for using php to detect the synchronization status of mysql under Linux. It has...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn