加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php在linux下检测mysql同步状态的方法

发布时间:2020-12-12 20:37:42 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解php在linux下检测mysql同步状态的方法。供大家参考研究。具体分析如下: 这里通过两个实例来介绍mysql同步状态检测实现方法。代码如下: 代码如下: check MySQL_Slave Status crontab time 00:10 MYSQL_USER="root" MYSQL_PWD="123456" M
END;
}else{
die("no mysql instances defined.");
}
check_status_api.php:
<div class="codetitle"><a style="CURSOR: pointer" data="52248" class="copybut" id="copybut52248" onclick="doCopy('code52248')"> 代码如下:<div class="codebody" id="code52248">/*

  • 检查mysql服务器的同步状态
    /
    function check_mysql_replication_status($host,$username,$password)
    {
    //默认状态未知
    $r = array(
    "result" => -1
    );
    try{
    $dbh = @mysql_connect($host,$password);
    if(!$dbh){
    //无法连接
    $r["result"] = -2;
    return($r);
    }
    $query = "SHOW SLAVE STATUS";
    $res = @mysql_query($query,$dbh);
    $err = @mysql_error();
    if($err){
    //无法连接
    $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:
    <div class="codetitle"><a style="CURSOR: pointer" data="91769" class="copybut" id="copybut91769" onclick="doCopy('code91769')"> 代码如下:<div class="codebody" id="code91769">//GRANT REPLICATION CLIENT ON
    .* TO '用户名'@'监控主机ip' IDENTIFIED BY '密码'; $mysql_instances =

array();
$mysql_instances[] = "远程ip:端口";

function get_instances() { global $mysql_instances; return $mysql_instances; } 将以上三个PHP文件放在虚拟目录中,然后通过URL访问.

访问方式:http://ip/check_repl.php?key=xupeng

希望本文所述对大家的php程序设计有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

本篇章节讲解php在linux下检测mysql同步状态的方法。分享给大家供大家参考。具体分析如下:

这里通过两个实例来介绍mysql同步状态检测实现方法。代码如下:

代码如下:
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实例代码,代码如下:
check_rep.php:
<div class="codetitle"><a style="CURSOR: pointer" data="74274" class="copybut" id="copybut74274" onclick="doCopy('code74274')"> 代码如下:<div class="codebody" id="code74274">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","用户名");
define("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 = "未知异常";
break;
case -3:
$memo = "查询失败";
break;
case -2:
$memo = "无法连接端口";
break;
case -1:
$memo = "状态未知";
break;
case 0:
$memo = "OK";
break;
case 1:
$memo = "同步失败";
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 = "数据库未设置同步";
break;
}
echo "

n";
}else{
echo "

n";
}
}
echo "
<table border="">

    推荐文章
      热点阅读