expire_logs_dayによるログの自動削除
MYSQLのバイナリーログファイルがディスク容量を圧縮してきているので、
バックアップのタイミングと調整してログの定期削除を実施する設定を投入。
設定前
[root@HOME001 data]# ls DB_REPLICATION mysql mysql-bin.000006 mysql-bin.000012 mysql-bin.000018 HOME001.localdomain.err mysql-bin.000001 mysql-bin.000007 mysql-bin.000013 mysql-bin.000019 HOME001.localdomain.pid mysql-bin.000002 mysql-bin.000008 mysql-bin.000014 mysql-bin.000020 ib_logfile0 mysql-bin.000003 mysql-bin.000009 mysql-bin.000015 mysql-bin.000021 ib_logfile1 mysql-bin.000004 mysql-bin.000010 mysql-bin.000016 mysql-bin.000022 ibdata1 mysql-bin.000005 mysql-bin.000011 mysql-bin.000017 mysql-bin.000023 [root@HOME001 data]#
MYSQLの設定
mysql> SHOW GLOBAL VARIABLES like 'expire_logs_days'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 0 | +------------------+-------+ 1 row in set (0.00 sec) mysql>
my.cnfに設定入れて再起動
[root@HOME001 data]# cat /etc/my.cnf | grep expire_logs_days expire_logs_days = 7 [root@HOME001 data]# /etc/init.d/mysql restart Shutting down MySQL.. [ OK ] Starting MySQL.. [ OK ] [root@HOME001 data]#
設定投入後
my.cnfに設定を入れて再起動すると既に設定が反映されている。
[root@HOME001 data]# ls DB_REPLICATION ibdata1 mysql-bin.000027 mysql-bin.000032 HOME001.localdomain.err mysql mysql-bin.000028 mysql-bin.index HOME001.localdomain.pid mysql-bin.000024 mysql-bin.000029 performance_schema ib_logfile0 mysql-bin.000025 mysql-bin.000030 test ib_logfile1 mysql-bin.000026 mysql-bin.000031 [root@HOME001 data]#
mysql> SHOW GLOBAL VARIABLES like 'expire_logs_days'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 7 | +------------------+-------+ 1 row in set (0.00 sec) mysql>
その他、SQLコマンドでマニュアル削除する方法。(PURGE)
削除前
[root@HOME002 data]# ls -l mysql-bin.* 合計 35136 -rw-rw---- 1 mysql mysql 126 1月 24 16:50 mysql-bin.000001 -rw-rw---- 1 mysql mysql 126 1月 25 14:32 mysql-bin.000002 -rw-rw---- 1 mysql mysql 126 1月 25 15:24 mysql-bin.000003 -rw-rw---- 1 mysql mysql 126 1月 25 15:28 mysql-bin.000004 -rw-rw---- 1 mysql mysql 150 1月 25 18:15 mysql-bin.000005 -rw-rw---- 1 mysql mysql 150 1月 25 18:16 mysql-bin.000006 -rw-rw---- 1 mysql mysql 150 1月 25 18:17 mysql-bin.000007 -rw-rw---- 1 mysql mysql 126 1月 25 18:46 mysql-bin.000008 -rw-rw---- 1 mysql mysql 126 1月 26 18:24 mysql-bin.000009 -rw-rw---- 1 mysql mysql 221 1月 27 12:15 mysql-bin.000010 -rw-rw---- 1 mysql mysql 221 1月 27 16:11 mysql-bin.000011 -rw-rw---- 1 mysql mysql 150 1月 27 16:13 mysql-bin.000012 -rw-rw---- 1 mysql mysql 221 1月 27 16:18 mysql-bin.000013 -rw-rw---- 1 mysql mysql 221 1月 27 17:37 mysql-bin.000014 -rw-rw---- 1 mysql mysql 150 1月 27 17:39 mysql-bin.000015 -rw-rw---- 1 mysql mysql 126 1月 27 17:57 mysql-bin.000016 -rw-rw---- 1 mysql mysql 107 1月 29 12:54 mysql-bin.000017 -rw-rw---- 1 mysql mysql 323 1月 29 12:54 mysql-bin.index [root@HOME002 data]#
削除コマンド実行
既にバックアップ対象データが取られていれば、古いバイナリーログは不要。
mysql> PURGE MASTER LOGS TO 'mysql-bin.000008'; Query OK, 0 rows affected (0.07 sec) mysql>
コマンド実行後
指定したバイナリーログ以前のファイルが削除されている事を確認。
[root@HOME002 data]# ls -l mysql-bin.* -rw-rw---- 1 mysql mysql 126 1月 25 18:46 mysql-bin.000008 -rw-rw---- 1 mysql mysql 126 1月 26 18:24 mysql-bin.000009 -rw-rw---- 1 mysql mysql 221 1月 27 12:15 mysql-bin.000010 -rw-rw---- 1 mysql mysql 221 1月 27 16:11 mysql-bin.000011 -rw-rw---- 1 mysql mysql 150 1月 27 16:13 mysql-bin.000012 -rw-rw---- 1 mysql mysql 221 1月 27 16:18 mysql-bin.000013 -rw-rw---- 1 mysql mysql 221 1月 27 17:37 mysql-bin.000014 -rw-rw---- 1 mysql mysql 150 1月 27 17:39 mysql-bin.000015 -rw-rw---- 1 mysql mysql 126 1月 27 17:57 mysql-bin.000016 -rw-rw---- 1 mysql mysql 107 1月 29 12:54 mysql-bin.000017 -rw-rw---- 1 mysql mysql 190 1月 29 13:27 mysql-bin.index [root@HOME002 data]#