MySQLデータベースを監視する方法は?
運用の可視性は、どの実稼働環境でも必須です。問題をできるだけ早く特定できることが重要です。そうしないと、検出されない問題が深刻なサービスの中断やダウンタイムを引き起こす可能性があるため、深刻な問題が発生する可能性があります。 MySQL Enterprise Monitorは、市場で最も古いMySQLの監視製品の1つであり、Oracleからの商用エンタープライズサブスクリプション契約の一部として利用できます。このブログ投稿では、MySQLEnterpriseMonitorとそれが提供する洞察の種類について説明します。 MySQLに。
インストール
まず、MySQL Enterprise Monitorは、オラクルが提供する商用製品であるMySQLEnterpriseEditionの一部です。さまざまなオペレーティングシステム用に、複数のバージョンのパッケージで提供されます。 Windows 10(テストしたシステム)へのインストールは非常に簡単です。 MySQL Enterprise Monitorが構成され、いくつかのバンドルされたサービス(MySQL、Tomcat)がインストールされます。ツールにはブラウザからアクセスできます。
初期構成
まず、監視するホストを追加する必要があります。

単一のホストまたはそれらのバッチを追加できます。ダイアログウィンドウは、一括で追加するときにサーバーのコンマ区切りリストを渡すことができることを除いて、同じように見えます。

詳細については説明しませんが、簡単に言うと、MySQLインスタンスを監視するホストを定義する必要があります。通常は、MySQLEnterpriseMonitorをインストールしたホストになります。 MySQLインスタンスにエージェントを設定することもできます。その場合、エージェントはMySQLメトリックだけでなく、ホストのデータも収集できます。次に、監視対象インスタンスに到達する方法(IPアドレス/ホスト名、ユーザー、およびパスワード)を定義する必要があります。次に、MySQL Enterprise Monitorは、スーパーユーザー権限を必要としない監視などのタスク用に追加のユーザーを作成します。必要に応じて、MySQLインスタンスが使用するSSL通信を構成したり、タイムアウトを定義したり、レプリケーショントポロジを自動検出する必要があるかどうかを定義したりすることもできます。
また、MySQL Enterprise Monitorはパフォーマンススキーマに大きく依存していることも覚えておくことが重要です。データベースでPSが有効になっていることを確認してください。有効になっていないと、MySQLEnterpriseMonitorの機能の重要な部分を利用できません。
監視

監視対象のMySQLインスタンスが構成されると、収集されたデータの確認を開始できます。概要セクションでは、MySQLの最も重要なメトリックのいくつかの簡単な要約を提供します。データが集約されるため、予期しないパターンを見つけて、何が起こったのかをさらに掘り下げることが容易になります。

[イベント]タブには、MySQLEnterpriseMonitorとそのアドバイザーによって報告されたさまざまな問題またはイベントの概要が表示されます。いずれかのイベントをクリックして、その内容と推奨される手順を読むことができます。

この特定のケースでは、一部のクエリが全表スキャンを実行しているようです。さらに調査して、そのようなクエリを特定し、最適化できるかどうかを確認することをお勧めします。

別の例として、ここでは、テーブルキャッシュが最適な方法で構成されていないことがわかります。このアラートに基づいて、問題の説明、アドバイス、および推奨されるアクションを確認できます。
メトリクス
このタブでは、システムの状態を理解するのに役立つ複数のMySQLメトリックのデータを確認できます。
時系列グラフ


上記のスクリーンショットは単なる例であり、見るべきグラフは他にもたくさんあります。

フィルタリングを適用することができます。表示するグラフを定義したり、表示する時間範囲を定義したりすることもできます。さらに、グラフの一部にマークを付けて拡大するか、その特定の時間のデータを使用してクエリアナライザを開くことができます。

この機能については後で説明しますが、簡単に言うと、クエリ、時間の経過とともにパフォーマンスがどのように変化したか、クエリの例を分析できます。
テーブル統計

このタブでは、テーブルの統計情報を確認できます。トラフィックがどのように表示されたか(行のフェッチ、挿入、更新、削除)、およびすべての行操作のレイテンシがどのように表示されたか。
ユーザー統計

このタブでは、MySQL Enterprise Monitorは、実行されたステートメント、待機時間、テーブルスキャン、I / O待機時間、接続、メモリ使用率などのユーザーに関するデータを表示します。このデータは、どのユーザーがデータベースの負荷に責任があるかについての非常に優れた洞察を提供するはずです。これは、トラフィックの主要なソースが1つもないマルチユーザー環境で特に役立つ可能性があります。
データベースファイルI/O

データベースファイルI/Oは、I/O負荷がデータベース内のファイル全体にどのように分散されるかを説明します。 I / O操作の総数、待機時間、特定のファイルに対して実行された読み取りと書き込みの数。
メモリ使用量

メモリ使用量は、MySQLのメモリ構造を示しています。これは、データベースのメモリ使用率をより正確に把握するのに役立ちます。このデータは、メモリに問題がある場合に役立ちます。成長が最も大きい場所を簡単に追跡し、必要に応じて、関連する設定を減らすことができます。また、潜在的なメモリリークの診断にも大いに役立ちます。
InnoDBバッファープール

MySQL Enterprise Monitorのこのタブは、バッファープール使用率の構造に関する洞察をユーザーに提供します。キャッシュされているテーブル、フラッシュするダーティページはいくつありますか?
クエリ
MySQLユーザーにとって、クエリが作成する負荷を理解することは非常に重要です。最も問題のあるクエリはどれですか?彼らは時間内にどのように振る舞いますか?パフォーマンスは複数の方法で測定できますが、予測可能であることが非常に一般的であり、安定したパフォーマンスが最高のパフォーマンスよりも重要です。応答時間が許容範囲内である限り、ユーザーは、サーバーの速度を大幅に低下させる可能性のある、ある程度高速な応答(低遅延)よりも予測可能な結果を好むでしょう。そのため、クエリが時間内にどのように動作するかを確認し、それらの動作を特定することが非常に重要です。どの動作が一貫していないか。

MySQLEnterpriseMonitorは間違いなくそのようなデータを配信します。クエリのリストで、レイテンシが時間の経過とともにどのように変化したかを簡単に確認できます。フラットラインは良いです、スパイク-それほど多くはありません。これは、そのようなクエリをさらに調査する必要がある可能性があることを意味します。それをクリックすると、MySQLEnterpriseMonitorはそれに関するより多くのデータを提供します。


ご覧のとおり、特定のクエリタイプに関する統計データがいくつかあります。また、レイテンシが時間の経過とともにどのように変化したかを確認することもできます。下部には、時間内のステートメントの例がいくつか表示され、それらの実行時間を比較できます。

それらの1つをクリックすると、その時点で実行された完全なクエリが表示されます。これは、WHEREの場合に使用された引数によってパフォーマンスが異なるクエリの場合に役立ちます(たとえば、WHERE some_column =‘some value’であり、その列の値が行全体に均等に分散されていません)。
複製

MySQLレプリケーション環境では、ラグは対処するために学ばなければならないものです。重要なのはそれを追跡することです-奴隷はどれほどひどく遅れていますか?どのくらいの頻度で発生しますか?この情報を使用して、問題を特定し、どのクエリが原因であるかをよりよく理解することができます。次に、マルチスレッドレプリケーションなどのいくつかの改善を実装して、変更によってレプリケーションのパフォーマンスが向上し、遅延が許容レベルまで減少したかどうかを追跡できます。
MySQLEnterpriseMonitorとClusterControlの違い
すでに述べたように、MySQLEnterpriseMonitorは有料のMySQLEnterpriseEditionの一部です。 MySQL Community、MariaDB、またはPercona Serverのすべてのユーザーは、MySQLEnterpriseEditionを利用できません。 ClusterControlは、無料のコミュニティバージョンでMySQLの監視へのアクセスを提供します。サーバーとクエリの監視に関しては、多くの類似点があります。


ClusterControlを使用すると、Prometheus時系列データベースに収集および保存されたMySQLメトリックにアクセスできます。 ClusterControlで利用できるようになった多数のメトリックを簡単に追跡できます。

ClusterControlには、データベースの正常性とパフォーマンスを追跡するために使用できるアドバイザーのリストも付属しています。 Developer Studioを使用して新しいアドバイザーを簡単に作成することもできます:

クエリのパフォーマンスに関心がある場合は、ClusterControlがクエリモニターを提供します。実行されたクエリが収集され、そのパフォーマンスが比較されるため、ユーザーはデータベースのCPUを最も多く使用しているクエリを簡単に特定できます。

クエリに関する統計データ(実行、送信および検査された行、実行時間)を確認できます。特定のクエリタイプのExplainプランを確認することもできます。
ポリグロットの永続性の監視
大きな違いの1つは、MySQLエコシステムのすべての主要なバリアント(Oracle MySQL、MariaDB、Percona Server)、さまざまなクラスタリングテクノロジー(NDBクラスター、グループレプリケーション、非同期レプリケーション、Galera Cluster)、ロードバランサー/プロキシ(HAProxy、 Keepalived、Maxscale、ProxySQL)、およびその他のオープンソースデータベース(PostgreSQLおよびMongoDB)。
自動化と管理
ClusterControlは、オンプレミスまたはクラウド(AWS、GCE、Azure)に単一のインスタンスまたはクラスターをデプロイする機能のほか、バックアップ管理、自動フェイルオーバーとリカバリ/修復、ローリングアップグレード、レプリケーションまたはクラスターセットアップのクラスター管理などの機能も提供します。 、スケーリングなど。
今日はこれですべてです。 MySQL Enterprise Monitorを使用したことがあり、何かを追加したい場合は、コメントセクションで追加してください。