MySQLデータベースのパフォーマンスの監視は、ほぼすべてのMySQLDBAの日常業務です。このブログ投稿では、ClusterControlを使用してMySQLデータベースのパフォーマンスを監視する方法を紹介します。
何を監視する必要がありますか?
一般に、MySQLのパフォーマンスを監視している場合は、次のことを監視することを検討する必要があります。
- クエリ管理 -クエリのパフォーマンスを監視することは、MySQLのパフォーマンスを向上させる最も効率的な方法の1つであることがわかります。
- クエリの外れ値の検出 -履歴データから多くのことがわかります。履歴データに基づいて予想されるクエリのパフォーマンスを計算し、現在のクエリのパフォーマンスを予想されるパフォーマンスと比較して、クエリの外れ値を検出することもできます。
- データベーススキーマのパフォーマンス --ClusterControlは、スキーマをワークロードに合わせて最適化するためのスキーマインサイトを提供することにより、MySQLインスタンスのパフォーマンスを最適化するのに役立ちます。
- 負荷分散 --ProxySQL、HAProxy、MaxScaleなどのロードバランサーを使用すると、データベースのパフォーマンスを最大限に高めることができます。これらのロードバランサーは、ClusterControlを使用して簡単にデプロイできます。
ClusterControlを使用したデータベースの負荷分散とクエリ管理
ClusterControlは、次のロードバランサーをサポートしています。
- HAProxy
- MariaDB MaxScale
- ProxySQL
- キープアライブ(仮想IPアドレスのみ)
ClusterControlは、データベースクラスターとは別の独立したノードに存在する必要があることに注意してください。
クエリ管理に関して、ClusterControlでは次のことを吸収できます( [クエリモニター]タブに切り替えると、これらが表示されます):
このタブには、で実行されているすべての上位クエリの集約リストが表示されます。データベースクラスターのすべてのノード。 ClusterControlは、次の2つの方法のいずれかで情報を取得します。
- クエリは、PERFORMANCE_SCHEMAから取得されるか
- PERFORMANCE_SCHEMAが無効または使用不可の場合、ClusterControlは低速クエリログのコンテンツを解析します。
低速クエリログが使用されている場合、長いクエリ時間を超えるクエリのみがここに一覧表示されます。
Long Query Timeは、実行にLong Query Time秒より長いクエリを収集します(たとえば、Long Query Timeが0.1の場合、実行に0.1秒以上かかるクエリのみがログに記録されます)。インデックスを使用していないクエリをログに記録しますか?」インデックスなどのないクエリに関するClusterControlの動作を構成します。
最上位のクエリテーブルは30秒ごとに自動的に更新されます(更新間隔は変更できます)。上位のクエリテーブルの列には、サンプルクエリのリスト、データベース名、クエリの発生総数、操作に関連する行の数、特定のクエリ用に作成された一時テーブルの数などが含まれます。-集約された上位のクエリのリストまた、発生時間または実行時間の順に並べて、最も一般的なクエリまたは最も遅いクエリを表示することもできます。
ClusterControlでは、現在実行中のクエリのリストを表示することもできます。このページも30秒ごとに自動的に更新され、次のように表示されます。
- MySQLスレッドの実行時間(秒単位)。
- スレッドの状態(MySQLドキュメントで説明されているように)
クエリの外れ値ページには、「外れ値」と見なされるクエリが表示されます。つまり、このページには、そのタイプの通常のクエリよりも実行に時間がかかるすべてのクエリが表示され、2シグマ+average_query_timeの遅延偏差として定義されます。このページは次のように表示されます:
- SQLクエリの実行にかかった時間。
- SQLクエリの平均実行時間。
- 標準偏差の実行時間(マイクロ秒)。
- クエリの最大実行時間(マイクロ秒)。
- クエリのロック時間(マイクロ秒)。
[クエリモニター]タブには、クラスター。
MySQLデータベースのパフォーマンスを監視することになると、ClusterControlは驚異的なことをすることができます。 ClusterControlを使用すると、ロードバランサーの導入が簡単になり、クエリを簡単に管理してパフォーマンスを監視できます。また、ClusterControlは、履歴データに基づいて予想されるクエリパフォーマンスを計算することもできます。