MYSQL_SLAVE_STATUS=$(/usr/local/webserver/mysql/bin/mysql -u root -psylc23hua -S /tmp/mysql.sock -e
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:
コードは次のとおりです:
//「パスワード」で識別された「ユーザー名」@「監視ホスト IP」に対する *.* のレプリケーション クライアントを許可します。
配列();
$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/971934.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/971934.html
技術記事
Linux で php を使用して mysql の同期状態を検出する方法 この記事では、Linux で php を使用して mysql の同期状態を検出する方法を主に紹介します。