«

»

9月 22

MySQLのデータベースサイズをメール通知させる(成功)

昨日は本気を出していなかったので、今日は本気を出します。

 

コマンドラインから、ひとつのデータベースのサイズを出してみます。

[testserver]# mysql -e "SELECT SUM(data_length)/1024/1024 AS total_db_data_in_MB FROM information_schema.tables WHERE table_schema = 'mysql'"
+---------------------+
| total_db_data_in_MB |
+---------------------+
|          0.53464740 |
+---------------------+

ほら、これにて一件落着しましたね。

※ mysql にパスワードを設定している場合は mysql -u アカウント名 –password=パスワード -e “…” となります。

 

…ほぼ

http://d.hatena.ne.jp/mabots/20090804/1249379971

を転載しただけですが…。

 

 

さすがにこれで終わりではありません。ひねっていきます。

 

データベースごとのサイズの一覧をコマンドラインからみる方法は、こうです。

[testserver]# mysql -e "SELECT SUM(data_length)/1024/1024 AS total_db_data_in_MB, TABLE_SCHEMA AS db_name FROM information_schema.tables group by table_schema;"
+---------------------+--------------------+
| total_db_data_in_MB | db_name            |
+---------------------+--------------------+
|          0.00000000 | information_schema |
|          0.53464740 | mysql              |
+---------------------+--------------------+

 

データベースの大きい順にソートするなら、ちょっとひねって、こうです。

[testserver]# mysql -e "SELECT SUM(data_length)/1024/1024 AS total_db_data_in_MB, TABLE_SCHEMA AS db_name FROM information_schema.tables group by table_schema order by total_db_data_in_MB desc;"
+---------------------+--------------------+
| total_db_data_in_MB | db_name            |
+---------------------+--------------------+
|          0.53464740 | mysql              |
|          0.00000000 | information_schema |
+---------------------+--------------------+

 

ソートすると、どう便利かっていえば、どのデータベースがでっかくなっちゃってるか一目瞭然です。
管理人がいつも管理させられてるサーバで試したところ

[oshigoto]# mysql -e "SELECT SUM(data_length)/1024/1024 AS total_db_data_in_MB, TABLE_SCHEMA AS db_name FROM information_schema.tables group by table_schema order by total_db_data_in_MB desc;"
+---------------------+----------------------+
| total_db_data_in_MB | db_name              |
+---------------------+----------------------+
|        672.74594498 | cat                  |
|        352.07773590 | dog                  |
|        136.15710831 | monkey               |
|         60.89799786 | elephant             |
|         53.21035480 | bear                 |
|         37.07579517 | bird                 |
|         34.96860504 | fish                 |
|         22.48922348 | lion                 |
|         17.75334167 | penguin              |
|         16.47551727 | giraffe              |
|          7.36931992 | puma                 |
|          6.53376389 | shark                |
|          0.50524616 | mysql                |
|          0.00000000 | information_schema   |
|          0.00000000 | test                 |
+---------------------+----------------------+

 

これで問題把握能力が向上しましたね。あとは…

[root@localhost ~]# mysql -e "SELECT SUM(data_length)/1024/1024 AS total_db_data_in_MB FROM information_schema.tables;"
+---------------------+
| total_db_data_in_MB |
+---------------------+
|          0.53464740 |
+---------------------+

このようにすればすべてのデータベースの合計サイズが得られます。

 

 

以上をまとめて、メールすることにします…。

[testserver]# crontab -e
0 6 * * * mysql -e "SELECT SUM(data_length)/1024/1024 AS total_db_data_in_MB FROM information_schema.tables; SELECT SUM(data_length)/1024/1024 AS total_db_data_in_MB, TABLE_SCHEMA AS db_name FROM information_schema.tables group by table_schema order by total_db_data_in_MB desc;" | mail -s DBSizeAlert your@mail.address

 

これで毎朝、データベースのサイズがメールで確認できるようになりました!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>