Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

mytopを使用してMySQLをリアルタイムで監視する方法

本記事では、無料のコマンドラインユーティリティを使ってMySQLデータベースをリアルタイムに監視する方法を解説します。

mytopとは?

mytopは、Linuxのtopコマンドのような感覚でMySQLの稼働状況をリアルタイムに監視できるコマンドラインベースのモニタリングツールです。Jeremy Zawodny氏によって開発されており、無料でダウンロードして利用できます。UNIX系OSの大半で動作し、もちろんLinuxマシンでも問題なく実行できます。MySQLサーバーの運用・管理において、この種のリアルタイム監視は非常に有用です。

必要な環境

mytopを使用するには、稼働中のMySQLサーバーに加えて、以下のようなPerlモジュールが必要です。

  • DBI
  • DBD::mysql
  • Term::ReadKey
  • Getopt::Long

mytopのソースコードはプロジェクトの公式サイトからダウンロードできます。また、各ディストリビューション向けにビルド済みのバイナリパッケージも提供されています。Fedora/Red Hat系およびUbuntu用のパッケージが存在することが知られており、Web上で比較的簡単に見つけられるはずです。バイナリ版を入手したら、通常の手順でインストールしてください。

mytopの起動と基本操作

インストールが完了したら、次のコマンドで正しく動作するかを確認できます。

# mytop -h dbserver -u dbuser -p dbpassword

コマンドを実行すると、以下のようにサーバーの状態がリアルタイムに表示されます。

MySQL on dbserver (5.0.37)                             up 50+17:53:46 [13:20:38]
Queries: 2.5G qps: 609 Slow: 0.0 Se/In/Up/De(%): 01/00/00/00

Key Efficiency: 99.8% Bps in/out: 0.0/ 0.0

Id User Host/IP DB Time Cmd Query or State
--------------------------------------------------------------------------
9570443 dbuser 192.168.10.9 appdb 0 Prepar
9575575 dbuser 192.168.10.9 appdb 0 Sleep
9576920 dbuser 192.168.10.9 appdb 0 Sleep
9601720 dbuser 192.168.10.3 appdb 0 Query show full process

dbserverdbuserdbpasswordの部分は、ご自身のMySQLサーバーの接続情報(ホスト名、ユーザー名、パスワード)に置き換えてください。

表示内容の見方

画面上部には、サーバーの稼働時間、累積クエリ数、1秒あたりのクエリ数(qps)、スロークエリの数、Select/Insert/Update/Deleteの割合、キーバッファの効率(Key Efficiency)などのサマリーが表示されます。画面下部には、現在接続中のスレッド一覧がID、ユーザー、ホスト/IP、データベース、経過時間、実行中のコマンド、実行中のクエリとともに随時更新されながら表示されます。これにより、負荷の原因となっているクエリや接続を即座に把握できます。

これでmytopを使い始める準備は整いました。より高度なオプションやキー操作については、mytop公式サイトのドキュメントセクションを参照するとよいでしょう。

その他にも、当サイトではMySQLに関するさまざまなヒント、テクニック、チュートリアルを公開しています。ぜひ合わせてチェックしてみてください。

  1. PHPとMySQLでブール値を扱うには?BOOL・BOOLEAN・TINYINT(1)の違いと使い方

    本記事では、MySQL 8.0.12を使用して、ブール(Boolean)値の正しい取り扱い方を解説します。まず、使用しているMySQLのバージョンを確認しておきましょう。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) MySQLにおけるブール値の基本:BOOL・BOOLEAN・TINYINT(1) MySQLでブール値を扱うには、BOOL、BOOLEAN、またはTINYINT(1)のいずれかを使用

  2. JDBCでMySQLのバックスラッシュをエスケープするには?PreparedStatementの使い方を解説

    PreparedStatementでバックスラッシュを安全にエスケープするMySQLにデータを挿入する際、バックスラッシュ(\)などの特殊文字を安全に扱うには、PreparedStatementを使用するのが最も確実な方法です。PreparedStatementはパラメータを自動的にエスケープしてくれるため、手動で「\\」のように置き換える必要がなく、SQLインジェクション対策としても有効です。まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1904 ( ClientId int, ClientName var