加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php在linux下检测mysql同步状态的技巧

发布时间:2022-07-01 15:56:22 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了php在linux下检测mysql同步状态的方法,是Linux下使用php检测mysql同步状态的实用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php在linux下检测mysql同步状态的方法。分享给大家供大家参考。具体分析如下: 这里通过两
  这篇文章主要介绍了php在linux下检测mysql同步状态的方法,是Linux下使用php检测mysql同步状态的实用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
 
  本文实例讲述了php在linux下检测mysql同步状态的方法。分享给大家供大家参考。具体分析如下:
 
  这里通过两个实例来介绍mysql同步状态检测实现方法,代码如下:
 
  #!/bin/sh  
   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:
 
  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 <<
   
  <!-- 30分钟自动刷新 -->
   
  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"]){
        }
       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="">
  <tbody>
  <tr>
  <td>instance</td>
  <td>result</td>
  <td>Slave_IO_Running</td>
  <td>Slave_SQL_Running</td>
  <td>Master_Host</td>
  <td>Master_Port</td>
  <td>Replicate_Do_DB</td>
  <td>memo</td>
  </tr>
  <tr>
  <td>instance</td>
  <td>result</td>
  <td>Slave_IO_Running</td>
  <td>Slave_SQL_Running</td>
   <td>{$res['result']}</td>
  <td>{$res['Slave_IO_Running']}</td>
  <td>{$res['Slave_SQL_Running']}</td>
  <td>{$res['Master_Host']}</td>
  <td>{$res['Master_Port']}</td>
  <td>{$res['Replicate_Do_DB']}</td>
  <td>{$res['Slave_IO_State']}</td>
  <td>{$res['Last_IO_Errno']}</td>
  <td>{$res['Last_IO_Error']}</td>
  <td>{$res['Last_SQL_Errno']}</td>
  <td>{$res['Last_SQL_Error']}</td>
  </tr>
  </tbody>
  </table>
  n";
   echo <<
   
  END;
  }else{
   die("no mysql instances defined.");
  }
  check_status_api.php:
 
  /*
   * 检查mysql服务器的同步状态
   */
  function check_mysql_replication_status($host, $username, $password)
  {
   //默认状态未知
      $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:
 
  //GRANT REPLICATION CLIENT ON *.* TO '用户名'@'监控主机ip' IDENTIFIED BY '密码';  $mysql_instances =
   
  array();  
  $mysql_instances[] = "远程ip:端口";  
  function get_instances()  
  {    
  global $mysql_instances;    
  return $mysql_instances;   
  } 

(编辑:PHP编程网 - 黄冈站长网)

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

    热点阅读