TOPサーバ構築・運用> show status実行結果の収集




MySQLチューニング
はじめてのMySQLチューニング

第1回:定量的な情報収集のススメ

著者:アールワークス  田中 靖之   2007/7/2
前のページ  1  2  3  次のページ
show status実行結果の収集

   表示された情報は、単に1度だけ実行した結果を眺めても意味のある項目は多くありません。これらは定期的に収集することによってはじめて意味を持ちます。

   なにはともあれ、まずは情報収集を開始しましょう。

   show statusの実行結果を定常的に収集するには、mysqladminコマンドを利用するのが簡単です。
/usr/bin/mysqladmin -u root -p{password} extended-status >> ~/status.txt

   単純に情報収集するだけなら、このコマンドをcronに仕込んで定期的に実行すればよいでしょう。例えば、自身のユーザアカウントのcronに以下のように設定します。

*/5 * * * * /usr/bin/mysqladmin -u root -p{password} extended-status >> ~/status.txt

   ただし、このままでは実行結果の羅列がどんどん追記されるだけです。そこで項目別に保存ファイルを分けるなど、上記コマンドを含めてスクリプト化しておけば便利です。

   筆者の場合は以下のようなシェルスクリプトを作成して、~/data以下のディレクトリに情報を収集しています。なお、使用する際にはソケットファイルの場所やパスワード部分を、ご自身の環境にあわせて変更してください。

#!/bin/sh

########################
## Get mysql status

HOME=`/bin/echo $HOME`
DIR=$HOME/data
HOST=`/bin/hostname`
DATE=`/bin/date "+%Y/%m/%d %H:%M:%S"`

SOCKET=/var/lib/mysql/mysql.sock
COMMAND="/usr/bin/mysqladmin -u root -p{PASSWORD} extended-status"

if [ -S $SOCKET ];then
   $COMMAND | /bin/awk '{print $2,$4}' | /bin/egrep -v '(^ |Variable_name)' | \
   while read LABEL DATA
   do
      /bin/echo $DATE $DATA >> $DIR/$HOST.$LABEL
   done
else
   /bin/echo "MySQL is not running."
fi

   また、各項目は単純なカウンタになっているものと収集時の瞬間的な値を示すものが入り混じっていますので注意してください(各項目の詳細はマニュアルを参照してください)。

   例えば、Threads_createdは「接続を処理するために作成されたスレッドの数」で、累積値をあらわしています。これは単純なカウンタ値であるため、前回得られた値との差分を保存すべき項目となります。

   逆にThreads_runningは「スリープ状態になっていないスレッドの数」なので、そのまま収集するのがよいです。このような点もスクリプト化しておけば、後の分析作業がより容易になるでしょう。

前のページ  1  2  3  次のページ


株式会社アールワークス 田中 靖之
著者プロフィール
株式会社アールワークス  田中 靖之
ネットワークインテグレーション部
主にWebサービス系のシステム運用監視を担当するネットワークインテグレーション部に所属。システム改善やチューニングを顧客と共に考える姿勢を大事にしている。


INDEX
第1回:定量的な情報収集のススメ
  効果を定量的に判断しよう
show status実行結果の収集
  MySQLのチューニングパラメータ