コードは次のとおりです: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.comtruehttp://www.bkjia.com/PHPjc/943417.html
技術記事
PHP を使用して Linux で MySQL の同期状態を検出する方法、linuxmysql この記事では、PHP を使用して Linux で MySQL の同期状態を検出する方法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:...