サーバ容量が妙に逼迫していたのでMySQLのバイナリログを削除してみた

スポンサーリンク
Linux
スポンサーリンク
# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/vda3             195G  134G   51G  73% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/vda1             243M   51M  180M  22% /boot

大したコンテンツを置いていないサーバが、妙に空き容量が減っているので調べてみました。
du -shで調べていくと、/var/log以下のログの肥大でも/var/www/以下でもなく、どうやらMySQLのディレクトリ内のようです。

du -sh /var/lib/mysql                                                                                             
68G     /var/lib/mysql

MySQLにログインして、データベースごとの容量を調べてみます。

mysql> SELECT table_schema,                                              
    ->        floor(SUM(data_length + index_length) / 1024 / 1024) AS ALL_MB,
    ->        floor(SUM((data_length) / 1024 / 1024)) AS DATA_MB,
    ->        floor(SUM((index_length) / 1024 / 1024)) AS INDEX_MB
    -> FROM information_schema.tables
    -> GROUP BY table_schema
    -> ORDER BY sum(data_length + index_length) DESC;
+--------------------+--------+---------+----------+
| table_schema       | ALL_MB | DATA_MB | INDEX_MB |
+--------------------+--------+---------+----------+
| *******            |    324 |     283 |       41 |
| ******             |    212 |     184 |       27 |
| *******            |     24 |      13 |       11 |
| *****              |     17 |      12 |        5 |
| **********         |     12 |       9 |        2 |
| mysql              |      2 |       2 |        0 |
| information_schema |      0 |       0 |        0 |
| sys                |      0 |       0 |        0 |
| performance_schema |      0 |       0 |        0 |
+--------------------+--------+---------+----------+

データベースのサイズとも乖離が激しいです。
バイナリログを見てみます。

show master logs;
+------------------+------------+
| Log_name         | File_size  |
+------------------+------------+
| mysql-bin.000001 |       9671 |
| mysql-bin.000002 |        125 |
| mysql-bin.000003 |       2001 |
| mysql-bin.000004 |  144441323 |
| mysql-bin.000005 |        125 |
| mysql-bin.000006 |    3208781 |
...
| mysql-bin.001095 | 1125651027 |
| mysql-bin.001096 | 1222413541 |
| mysql-bin.001097 |  803543922 |
+------------------+------------+

どうやらこれのようです。最後のものを除いて削除します。

mysql> purge master logs to 'mysql-bin.001096';                          
Query OK, 0 rows affected (0.04 sec)

mysql> show master logs;                                                 
+------------------+------------+
| Log_name         | File_size  |
+------------------+------------+
| mysql-bin.001097 |  803543922 |
+------------------+------------+
1 rows in set (0.00 sec)

# df -h                                                                                                 
Filesystem            Size  Used Avail Use% マウント位置
/dev/vda3             195G   74G  112G  40% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/vda1             243M   51M  180M  22% /boot

これでサーバーの空き容量がたっぷり空きました!
バイナリログを一週間で自動削除するように変更しておきます。

vi /etc/my.cnf
[mysqld]
expire_logs_days = 7
1 Star2 Stars3 Stars4 Stars5 Stars (まだ投票されていません)
読み込み中...

コメント

広告ブロッカーを無効にしてください。

タイトルとURLをコピーしました