アプリケーション(Java + Tomcat + MySql)をクラウドホスティングに移植することを計画しているときに、クラウドプロバイダーによって制限されているため、データベースとの間で転送されるデータの量が考慮すべき重要な要素であることがわかりました。使用統計(クエリの数や平均行サイズなど)に基づいてこのボリュームを推定する便利な方法が見つからず、現在の使用率を測定する方法も見つかりませんでした。
MySqlに使用できる統計情報はありますか、それともネットワークの観点から監視し、MySqlが使用するポートとの間で転送されるデータを監視する方が良いでしょう。
前もって感謝します
アプリケーションでMySQLに出入りするネットワークトラフィックを直接測定する場合は、監視できる2つのステータス変数があります。
このクエリを使用して、すべてのセッション(過去および現在)についてこれらをフェッチできます
SELECT * FROM information_schema.global_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');
これにより、mysqlインスタンスの存続期間中のそれぞれの数がわかります。
セッションごとにこれらをフェッチすることができます
SELECT * FROM information_schema.session_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');
これにより、DBセッションの存続期間中のそれぞれの数がわかります。
GUIを使用して、時間をかけてグラフを作成できます。 JavaとTomcatについて述べたので、独自のプレゼンテーションを作成することをお勧めします。以前の値を保持し、現在の値を取得し、それらを減算してから、平均をプロットまたは表示する必要があります。願います。
私はずっと前にDBA StackExchangeでこれについて議論しました( MySQL: 'bytes_sent'と 'bytes_received'にはmysqldumpデータが含まれますか? )スレッドを含むものは、内部のMySQLレプリケーションの場合(IOスレッドおよびSQLスレッドを介して)。
これに照らして、読み取りを行う不要なDB接続がないこと、およびmysqldumpまたはmysqldumpのリロード中にMySQLを監視しないことを確認してください。監視ソフトウェア(Nagios、Zabbix、MONYog、EM7など)でもBytes_received
実行するたびにトラフィックSHOW GLOBAL VARIABLES;
Mysqldに接続されているすべてのものがグローバルBytes_received
およびBytes_sent
ステータス値。アプリケーションでセッションレベルを収集することをお勧めしますBytes_received
およびBytes_sent
実行直前 mysqli_close() 。次に、それらの数値のレポートを生成できます。次に、それらの合計をグローバルカウントから差し引いて、要求されているハウスキーピングデータの量を確認します。
最も簡単な方法は MySQL Workbench を起動することです。サーバー管理機能を適切に設定するには多少の労力が必要ですが、ネットワーク使用率のグラフを表示し、MySQLインスタンスを管理するための総合的な優れたツールです。 MySQL管理のWebベースのソリューションは phpMyAdmin であり、これはMySQL統計も提供します。ただし、phpMyAdminには過去にいくつかの重大なセキュリティ上の欠陥があるため(たとえば、システムを完全に乗っ取ることができるため)、代わりにMySQL Workbenchを使用することを強くお勧めします。 (接線:phpMyAdminを使用するreally必要がある場合は、phpMyAdminの前に認証スキームがあることを確認してください。悪意のあるユーザーがphpMyAdminログイン。最初のログインレイヤーを通過する必要があります。たとえば、私のサーバーはHTTPS経由の基本認証を必要とし、phpMyAdminログインページへのアクセスも許可する前に、提供されたユーザー名とパスワードをPAMと照合します。
たくさんのきれいなグラフを含む一般的な統計情報収集にも興味がある場合は、 Munin が良い解決策であり、MySQL監視プラグインのコレクションも含まれていますが、最初に構成する必要があり、いくつかあります。 MySQL監視プラグインを機能させるためにインストールするPerl依存関係(Cache::Cache
およびDBD::MySQL
、プラグインスクリプトに残されたコメントによると)。
最後に、アプリケーションとデータベースが異なるサーバー上にある場合、MySQLトラフィックに対して課金されるのは問題であることに注意してください。計測されていない(または課金されている)localhostトラフィック。