MySQLサーバの監視

任意のシステムでは、監視は重要な部分です。データベースはすべてのシステムのコアコンポーネントであり、データベースの安定性がある程度システムの安定性を決定し、したがって、データベースの監視のために、特に重要です。一般的なオープンソースの監視ソフトウェアNagiosの、のZabbix。これらは、自分自身を選択すること、ソフトウェアを監視、またはデータベース監視プラグインを提供するために、またはユーザーがプラグインの形でデータベースに、独自の監視スクリプトを開発することができ、およびスクリプト言語のサポートを変化させ、ユーザーが自分の習慣に応じてすることができますソフトウェアの監視だけでなく、自分自身の監視スクリプトを記述します。

私たちは、MySQLデータベースの監視を持っているもので、この章の焦点のデータ?そして、どのように監視するために、これらのリソースを監視するには?

これを知って、関係なく、任意の監視ソフトウェアの、あなたは自分自身のMySQLのスクリプトの開発と展開を完了することができます。

MySQLの場合、最も基本的な監視には、次のものが含まれている必要があります

データベースサービス利用状況モニタ(データベースにネットワークを介して接続され、データベースが外部のサービスプロバイダであるか否かを判断する);
データベース・パフォーマンス監視(QPS、TPS、同時に監視スレッドの数)、
コピーからコピーからメインモニタ(主)同じマスターからデータがコピーされたかどうかを確認するために、定期的にリンクステータス、マスター・スレーブレプリケーションの遅延の監視を監視し、
サーバリソースの容量監視(ディスク容量を監視し(データログディレクトリまたはディレクトリのいずれかが満たされている、します; MySQLの利用できない)、などCPU使用率、メモリ使用率、ネットワークの使用状況とスワップパーティションのIOのケースを、)原因
1.データの可用性を監視する
最初の、のデータベースがネットワークを介して接続することができるかどうかを確認する方法を見てみましょう。ネイティブSQLデータベースファイルサーバ接続のMySQLの使用は、あなたがTCP / IPネットワークプロトコルを介してのMySQLに接続することができることを意味するものではありません。あなたは、データベースは通常、次のいずれかの方法を使用して、ネットワークを介して接続することができる確信しています:

スキーム1:リモートサーバ上の使用のmysqladmin -umonitor_user -p -hのpingコマンドは、サーバを監視接続できることを確認するために、
スキーム2:のtelnetのIP DB_PORTを使用すると、コマンドを手動で確認するには、サーバーが接続でき、監視;
スキームIII:サーバがネットワーク接続を介して監視することができることを確認するためにプログラムを使用するには、データベース接続を確立する、これが最良の方法です。
それは、データベースが読み書きできるかどうかを確認する必要があるので、データベースは、利用可能であることを意味するものではありませんデータベースに接続することができます。

データベースが読み書きできるかどうかを確認する方法?

READ_ONLYのパラメータは、定期的にオフにメイン・データベースかどうかをチェックし、
テーブルとテーブルのデータ変更を監視の確立を、
専用のデータベースを監視することは唯一のバージョンを@@選択し、単純なクエリを実行する必要が読み込み可能であるならば、
あなたは、スレッドのMySQLの番号に接続することができます制限されていますそしてどのようにデータベースへの接続数を監視するには?

「MAX_CONNECTIONS」のようなショーの変数; //接続の許容最大数は、MySQLゲット
「Threads_connected」のようなグローバルな状態を示し; // システム変数Threads_connectedの値を取得し、データベースへの接続の現在の数を記録し

、例えば、時にアラームができるThreads_connected / MAX_CONNECTIONS > 0.8は、それが必要なアラームです。

2.データパフォーマンスモニタ
パフォーマンスモニタは、可用性の監視と異なる、パフォーマンス監視は、トレンドデータベースのパフォーマンスの方が重要なので、スクリプト開発パフォーマンス監視を行う場合、あなたは良いパフォーマンスを記録状態監視プロセス収集データベースに注意を払う必要がありますデータベースのパフォーマンスの傾向を分析するときに使用する情報。

パフォーマンス監視のために、それが最も心配することQPSとTPSです。

QPS =(Queries2 - Queries1)/(Uptime_since_flush_status2 - Uptime_since_flush_status1)

TPS =((Com_insert2 + Com_update2 + Com_delete2) - (Com_insert1 + Com_update1 + Com_delete1))/
(Uptime_since_flush_status2 - Uptime_since_flush_status1)

これらのパラメータを取得します:

ステータスのような、(株)は、無料のショー「クエリ」に参加
株式会社フリーは「Uptime_since_flush_status」のように参加、ステータス表示を
株式会社フリーは「Com_insert」のように参加、ステータス表示
ステータス表示、株式会社無料「Com_update」のように参加
ステータス表示、株式会社無料「Com_delete」のように参加

同時データベース要求の数を監視する方法?

典型的には、データベース・システムのパフォーマンスが低下し、同時処理要求の数と共に増加します。そのため、通常は同時要求の数とは、CPUや他の指標を組み合わせ解析の利用を必要とします。

同時要求の現在の数は、データベースには「Threads_running」のようなショーグローバル状況によって取得することができます。データベースに接続し、同時にスレッドの数よりもはるかに小さく、通常は同時治療の数。

私たちは、同時増加との間に一定の時間が突然、あなたはデータベースなど、異常なデータベースがあるかどうかをチェックする必要があり、ブロッキング多数の場合に表示され、それは非常に可能性があることを発見した場合、通常は同時要求の数は、非常に安定しています現象。

InnoDBのを阻止監視するには?

クエリブロック時間SQLの20秒以上:

'ブロックされたスレッド'としてb.trx_mysql_thread_id SELECT
、 'ブロックされたSQL' AS b.trx_query
、 'ブロックされたスレッド'としてc.trx_mysql_thread_id
、 'ブロックするSQL' AS c.trx_query
、(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(c.trx_started) ) '遮断時間'として
Aからinformation_schema.innodb_lock_waits
JOIN information_schema.innodb_trx Bが= ONのa.requesting_trx_idはb.trx_id
ON = Cがc.trx_id a.blocking_trx_id information_schema.innodb_trx JOIN
どこ(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(c.trx_started)) > 20

3.マスター・スレーブレプリケーションモニタは
ケースからMySQLのレプリケーションメカニズムに大きく依存している、主に当社のデータベース・アーキテクチャである、そして、マスタースレーブレプリケーションの監視は重要な一部となります。

マスター・スレーブレプリケーションリンクの状態を監視するには?

マスタースレーブのレプリケーションを監視するために、それは基本的なコマンドshowスレーブステータスに依存しなければなりません。

マスターコピーからの遅延を監視するには?

サーバからコピーされた主参加の間にいくらかの遅延が存在する必要があり、遅延は、通常、1秒より実質的に少ない、非常に小さいです。だから、アプリケーションのために、影響は特に遅延の影響を受けないから、メインアプリケーションのいくつかのために、素晴らしいではありません。何らかの理由で、サーバーとの間からメインに大きな遅延がある場合、それはアプリケーションの通常の使用に影響を与えます。これは、マスター・スレーブレプリケーションの遅延いくつかの監視になければなりません。

サーバー間の遅延が増加し続けて見つけた場合、我々はいくつかのチェックは、原因を見つけて解決する必要があります。通常の状況下では、次のような方法で遅延のマスターコピーから監視することができます。

情報番組スレーブstatusコマンドリターンの使用:

Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:0
_SSL_Verify_Server_Cert:いいえ
Last_IO_Errno:0
Last_IO_Error:
Last_SQL_Errno:0

Seconds_Behind_Masterは数秒でマスター・スレーブレプリケーションの遅延です。この値は、マスターサーバーとの同期に基づいており、サーバーから再実行ログBINLOGサーバーの時刻の差からBINLOGている、非常に多くの例があるので、この買収は、この方法は比較的簡単ですが、結果は正確ではありませんそのようなネットワークの問題が発生したときのように不正確なデータ、につながることができ、プライマリサーバ上の多くは、サーバーからのbinlogに同期されていない、と完全にオーバー再利用されているサーバー上のbinlogに同期されています。このような状況がありますマスタとスレーブの間にかなりの遅延があるが、コマンドshowスレーブステータスではなく、この遅延を見つけることができないです。

だから、より正確な遅延を見つけるために、私たちは別の方法が必要です。

このメソッドは、サーバーの状態を確認すると同時に、メインプログラムに複数のスレッドを使用する必要があります。プライマリサーバ上で実行ショーマスターstatusコマンドはバイナリログファイルの情報を取得し、プライマリサーバ上で相殺します:

MySQLの>ショーマスターステータスの\ G
***************************** 1行*********** ******************
ファイル:MySQLの-bin.001099
ポジション:302 055 050

マスタバイナリログファイルを取得するために、サーバから表示スレーブステータスコマンドを実行してから送信された情報をオフセット:

MASTER_LOG_FILE:MySQLの-bin.001099の
Read_Master_Log_Pos:301 855 050

およびオフセットバイナリ情報と、サーバからのコマンドを取得し表示スレーブステータスを行う際には、プライマリサーバの送信を完了しました。

Exec_Master_Log_Pos:301855050
Relay_Log_Spaceは:301855350

上記の3つの情報を比較することにより、サーバの多数の中から遅延がある一次かどうかを知ることができます。ファイル名(ファイルおよびMASTER_LOG_FILE)とオフセット(位置とRead_Master_Log_Pos)は、現在のプライマリがすべての遅延が存在しなかったことを示し、同じである場合。

マスターからコピーするときに、各修復が完了したら、データのマスターコピーからの整合性をチェックする必要があります。それでは、どのようにデータのマスターコピーから一貫していることを確認していますか?

ここでは、Percona会社を使用する必要があるMySQLのツールセットPT-テーブル・チェックサムをリリースしました:

チェックサム表-U-PT = DB_USER、P =「DB_PASSWORD」\
--databasesのMySQL \
--replicate test.checksums

-databasesパラメータは、データベースの名前を指定し、-replicateパラメータを使用すると、テスト中のこのリポジトリにチェックサムを作成することを指定しますテーブル、およびこの検出テーブルにデータを書き込みます。このコマンドは、メインのライブラリにそれを実行する必要があり、それが自動的にメイン図書館でライブラリからすべての情報を見つけるでしょう、とライブラリデータベースから指定したデータのすべてを検出することに注意してください。

アカウントは、データベースを確立するために使用することができます。

GRANT SELECT、プロセス、SUPER、レプリケーションスレーブをON *。* 'DB_USER' @ 'IP'「をdb_passwor BY IDENTIFIED TO

おすすめ

転載: www.cnblogs.com/shixiuxian/p/11223352.html
おすすめ