昨日は本気を出していなかったので、今日は本気を出します。
コマンドラインから、ひとつのデータベースのサイズを出してみます。
[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
これで毎朝、データベースのサイズがメールで確認できるようになりました!
最近のコメント