ホームページ  >  記事  >  バックエンド開発  >  Linux で mysql の同期ステータスを検出するための PHP 方法、linuxmysql_PHP チュートリアル

Linux で mysql の同期ステータスを検出するための PHP 方法、linuxmysql_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:09:38814ブラウズ

Linux で mysql の同期ステータスを検出する

php メソッド、linuxmysql

この記事の例では、PHP が Linux 上で MySQL の同期ステータスを検出する方法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

mysqlの同期状態検出の実装方法を2つの例で紹介します。コードは次のとおりです:

コードをコピーします コードは次のとおりです:
#!/bin/sh

#MySQL_Slave ステータスを確認する
#crontab 時間 00:10
MYSQL_USER="ルート"
MYSQL_PWD="123456"
MYSQL_SLAVE_LOG="/tmp/check_mysql_slave.log"
メール = "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

"スレーブのステータスを表示G" | grep -i "実行中")
IO_ENV=`echo $MYSQL_SLAVE_STATUS | grep IO ' {print $2}'
SQL_ENV=`echo $MYSQL_SLAVE_STATUS | grep SQL '{print $2}'
NOW=$(日付 -d 今日 +'%Y-%m-%d %H:%M:%S')

if [ "$MYSQL_PORT" = "3306" ];then
エコー「mysql が実行中です!」 それ以外は
mail -s "警告!サーバー: $MYSQL_IP mysql がダウンしています" "$EMAIL"
はい

if [ "$IO_ENV" = "はい" -a "$SQL_ENV" = "はい" ];then
エコー「奴隷が走っています!」 それ以外は
echo "[ $NOW ] スレーブが実行されていません! >> "$MYSQL_SLAVE_LOG"
cat "$MYSQL_SLAVE_LOG" | mail -s "警告! ${MySQL_IP}_replicate_error" "$EMAIL"
はい

0番出口

PHP サンプルコード、コードは次のとおりです:
check_rep.php:


コードをコピーします コードは次のとおりです:
if(emptyempty($_REQUEST["key"])) die(':) キーがありません'); if($_REQUEST["key"] != 'xupeng') die(':) エラーキー');
include("mysql_instance.php"); include("check_status_api.php");
定義("ユーザー名", "ユーザー名"); 定義("パスワード", "パスワード"); 定義("デバッグモード", false);
$instances = get_instances();
if($インスタンス){
エコー<<

終わります
エコー「
」 ん」;
if(!DEBUGMODE){
エコー「
」 ん」;
}その他{
エコー「
」 ん」;
}
foreach($instances as $host){
$res = check_mysql_replication_status($host, ユーザー名, パスワード); if(!DEBUGMODE){
switch($res["結果"]){
ケース-4:
$memo = "不明な例外"
休憩
ケース-3:
$memo = "クエリが失敗しました"
休憩
ケース-2:
$memo = "ポートに接続できません"; 休憩
ケース-1:
$memo = "ステータス不明"
休憩
ケース 0:
$memo = "OK"; 休憩
ケース 1:
$memo = "同期に失敗しました"
If($res["Slave_IO_Running"] <> "はい"){
$memo .= $res["Last_IO_Error"] "(" . $res

["Last_IO_Errno"]
; }
If($res["Slave_SQL_Running"] <> "はい"){
$memo .= $res["Last_SQL_Error"] "(" . $res

["Last_SQL_Errno"] .")"; }
休憩
ケース 2:
$memo = "データベースが同期されていません"; 休憩
}
エコー「

ん」;
}その他{
エコー「

ん」;
}
}
エコー「
」 <テーブルの境界線="">
インスタンス 結果 スレーブ_IO_実行中 スレーブ_SQL_実行中 マスターホスト マスターポート Replicate_Do_DB メモ インスタンス 結果 スレーブ_IO_実行中 スレーブ_SQL_実行中 マスターホスト マスターポート Replicate_Do_DB スレーブ_IO_状態 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']} ん」;
エコー<<
終わります
}その他{
die("mysql インスタンスが定義されていません。"); }

check_status_api.php:



コードをコピーします

コードは次のとおりです:
/*
* mysqlサーバーの同期ステータスを確認してください
*/
関数 check_mysql_replication_status($host, $username, $password) { //デフォルトのステータスは不明です $r = 配列( 「結果」 => -1
); 試してください{
$dbh = @mysql_connect($host, $username, $password); if(!$dbh){
//接続できません
$r["結果"] = -2; リターン($r); }
$query = "スレーブのステータスを表示"; $res = @mysql_query($query, $dbh); $err = @mysql_error(); if($err){
//接続できません
$r["結果"] = -3; リターン($r); }
$row = mysql_fetch_array($res); $r = $行
if(($r["Slave_IO_Running"] == "はい") && ($r["Slave_SQL_Running"] == "はい"))
{
$r["結果"] = 0; }その他{
if(!emptyempty($row)){
$r["結果"] = 1; }その他{
$r["結果"] = 2; }
}
}catch(例外 $e){
$r["結果"] = -4; }
リターン($r); }

mysql_instance.php:



コードをコピーします

コードは次のとおりです:

//GRANT REPLICATION CLIENT ON *.* TO 'username'@'monitoring host ip' IDENTIFIED BY 'password';
配列(); $mysql_instances[] = "リモート IP:ポート";
関数 get_instances()
{
グローバル $mysql_instances; $mysql_instances を返す
}

上記 3 つの PHP ファイルを仮想ディレクトリに配置し、URL 経由でアクセスします。
アクセス方法:http://ip/check_repl.php?key=xupeng

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。



http://www.bkjia.com/PHPjc/943417.html

www.bkjia.com
tru​​ehttp://www.bkjia.com/PHPjc/943417.html
技術記事

PHP を使用して Linux で MySQL の同期状態を検出する方法、linuxmysql この記事では、PHP を使用して Linux で MySQL の同期状態を検出する方法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:...



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。