MySQLソースレプリカ高可用性(HA)セットアップでは、潜在的な問題を検出して修正アクションを実行できるように、ソースサーバーとレプリカサーバーの状態を継続的に監視することが重要です。 。このブログ投稿では、セットアップが正常であることを確認するためにMySQLソースノードとレプリカノードで実行できるいくつかの基本的なヘルスチェックについて説明します。監視プログラムまたはスクリプトは、ヘルスチェックのいずれかが失敗した場合に高可用性フレームワークに警告する必要があります。これにより、サービスの可用性を確保するために、高可用性フレームワークが修正アクションを実行できるようになります。
MySQLソースサーバーのヘルスチェック
MySQLソース監視プログラムまたはスクリプトを頻繁に実行することをお勧めします。監視スクリプトがMySQLサーバーと同じサーバーで実行されていると仮定すると、次のことを確認できます。
-
MySQLサービスが実行されていることを確認します
これは、次のような簡単なコマンドを使用して実行できます:
> pgrep mysqld
または
>service mysqld status
-
MySQLに接続して簡単なクエリを実行できることを確認してください
MySQLが応答しないかどうかをすばやく検出できるように、これらのコマンドのタイムアウトを短くすることをお勧めします。これは、次のような呼び出しから実現できます:
/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e 'select * from mysql.test’
上記のコマンドの終了値を必ず確認してください:
Exitvalue=0⇒Success
終了値=1⇒失敗
Exit-value=124⇒タイムアウト
コマンドがタイムアウトした場合は、MySQLサービスが十分に応答していないことを意味します。偽陰性の結果を避けるために、しばらくしてから再試行することをお勧めします。終了コードが失敗を示している場合、MySQLからの戻りコードは失敗の理由を教えてくれます。失敗の1つの例は、サーバーへの接続数が「max_connections」構成値を超えた場合に発生する、MySQLからの「接続数が多すぎます」エラーです。
-
MySQLソースが読み取り/書き込みモードで実行されていることを確認します
次のコマンドを使用して、MySQLソースが読み取り/書き込みモードで実行されていることを確認できます。
/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e "SELECT @@global.read_only"
ソースは常に読み取り/書き込みモードで実行されることが想定されているため、read_onlyの値は「OFF」である必要があります。
このステップをステップ2と組み合わせることもできます。テストクエリを実行する代わりに、mysql.testから* select *を実行するだけで、クエリを実行してread_onlyを取得できます。値。
MySQLレプリカサーバーのヘルスチェック
MySQLレプリカはデータ書き込みを処理しないため、ソースと比較して低い頻度でモニタリングを実行できます。レプリカヘルスチェックの最初の3つの手順は、レプリカが読み取り専用モードで実行されていることを確認する必要があることを除いて、ソースの手順と同じにすることができます。手順3では、変数read_onlyの値を「ON」にする必要があります。 。
さらに、次のように、レプリカのレプリケーションステータスが正常であることを確認するために、レプリカに対してさらにチェックを行うことができます。
-
レプリカは、適切なソースから複製するように構成されています。
-
ソースへのレプリカの接続は正常です。
-
レプリカは、受信したソースイベントを適用できます。
「showreplica status」コマンドを使用して、上記のすべてを確認できます。例:
mysql> show replica status \G; *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: 172.31.17.43 Source_User: repl_user Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin.000001 Read_Source_Log_Pos: 7510 Relay_Log_File: relay-log.000006 Relay_Log_Pos: 414 Relay_Source_Log_File: mysql-bin.000001 Replica_IO_Running: Yes Replica_SQL_Running: Yes ******************Truncated*********************************
-
Source_Host値は、ソースサーバーがレプリケーション用に構成されていることを示します。
-
Replica_IO_Running値の場合、「Yes」は、レプリカがソースに接続し、レプリケーションストリームを受信していることを示します。
-
Replica_SQL_Runningの値の場合、「はい」は、レプリカのアプライヤーが実行中であり、ソースから受信したすべてのイベントを適用できることを示します。
このブログ投稿では、MySQLソースサーバーとレプリカサーバーに基本的な問題があるかどうかを検出できるいくつかの簡単なチェックについて説明しました。一般に、高可用性セットアップの障害検出メカニズムは複雑な問題であり、ヘルスチェックの監視を実装するための堅牢な高可用性フレームワークが必要です。高可用性フレームワークの詳細については、MySQL高可用性フレームワークの説明–パートI:はじめにブログ投稿をご覧ください。