« 警告:ORA-00600 2252 错误正在SCN问题下不断爆发 | Blog首页 | 算法:ORA-600 2252和SCN 最大值SCN_WRAP SCN_BASE »
MySQL 实践:清理 binlog 日志的几种方法和常见问题
链接:https://www.eygle.com/archives/2019/08/purge_mysql_binlog.html
在 MySQL 数据库中,可以查看到数据库的日志序列,以下查询显示数据库的 binlog 日志正在写入 000225 号:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000225 | 11014527 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000225
Position: 11014742
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
本着安全的原则,在删除之前最好进行备份,以防不测。
如果存在备库,应该检查备库应用到的日志序列,以下输出显示数据库没有Slave备库:
mysql> show slave status\G
Empty set (0.00 sec)
在操作系统上,可以查询一下当前日志的数量,这个当前数据库很空闲,日志量从 2015年就开始存在:
root@iZm5eix8mcsf5i16makh3hZ var]# ls -l mysql-bin*
-rw-rw---- 1 mysql mysql 11046912 Sep 30 2015 mysql-bin.000106
-rw-rw---- 1 mysql mysql 3968852 Jun 29 2016 mysql-bin.000139
-rw-rw---- 1 mysql mysql 184474 Jun 29 2016 mysql-bin.000140
-rw-rw---- 1 mysql mysql 12054822 Jul 5 2016 mysql-bin.000141
-rw-rw---- 1 mysql mysql 16732529 Jul 10 2016 mysql-bin.000142
-rw-rw---- 1 mysql mysql 24385971 Jul 20 2016 mysql-bin.000143
-rw-rw---- 1 mysql mysql 19930973 Jul 29 2016 mysql-bin.000144
-rw-rw---- 1 mysql mysql 19142701 Aug 6 2016 mysql-bin.000145
-rw-rw---- 1 mysql mysql 2633349 Aug 8 2016 mysql-bin.000146
-rw-rw---- 1 mysql mysql 9101 Aug 9 2016 mysql-bin.000147
-rw-rw---- 1 mysql mysql 78299403 Sep 11 2016 mysql-bin.000148
-rw-rw---- 1 mysql mysql 35815708 Sep 26 2016 mysql-bin.000149
-rw-rw---- 1 mysql mysql 7777473 Sep 30 2016 mysql-bin.000150
-rw-rw---- 1 mysql mysql 817 Sep 30 2016 mysql-bin.000151
-rw-rw---- 1 mysql mysql 2140269 Oct 1 2016 mysql-bin.000152
-rw-rw---- 1 mysql mysql 370689 Oct 1 2016 mysql-bin.000153
-rw-rw---- 1 mysql mysql 40520076 Oct 19 2016 mysql-bin.000154
-rw-rw---- 1 mysql mysql 51680638 Nov 13 2016 mysql-bin.000155
-rw-rw---- 1 mysql mysql 5885516 Nov 15 2016 mysql-bin.000156
-rw-rw---- 1 mysql mysql 24964852 Nov 24 2016 mysql-bin.000157
-rw-rw---- 1 mysql mysql 1021801 Nov 24 2016 mysql-bin.000158
-rw-rw---- 1 mysql mysql 12311471 Nov 29 2016 mysql-bin.000159
-rw-rw---- 1 mysql mysql 349866 Nov 29 2016 mysql-bin.000160
-rw-rw---- 1 mysql mysql 25180057 Dec 8 2016 mysql-bin.000161
-rw-rw---- 1 mysql mysql 321 Dec 8 2016 mysql-bin.000162
-rw-rw---- 1 mysql mysql 21991449 Dec 16 2016 mysql-bin.000163
-rw-rw---- 1 mysql mysql 106 Dec 17 2016 mysql-bin.000164
-rw-rw---- 1 mysql mysql 13551718 Dec 21 2016 mysql-bin.000165
-rw-rw---- 1 mysql mysql 12068192 Dec 25 2016 mysql-bin.000166
-rw-rw---- 1 mysql mysql 4716882 Dec 27 2016 mysql-bin.000167
-rw-rw---- 1 mysql mysql 6374368 Dec 29 2016 mysql-bin.000168
-rw-rw---- 1 mysql mysql 856048 Dec 29 2016 mysql-bin.000169
-rw-rw---- 1 mysql mysql 9760973 Jan 1 2017 mysql-bin.000170
-rw-rw---- 1 mysql mysql 106 Jan 1 2017 mysql-bin.000171
-rw-rw---- 1 mysql mysql 13602389 Jan 6 2017 mysql-bin.000172
-rw-rw---- 1 mysql mysql 12676649 Jan 10 2017 mysql-bin.000173
-rw-rw---- 1 mysql mysql 16412479 Jan 16 2017 mysql-bin.000174
-rw-rw---- 1 mysql mysql 1054392 Jan 16 2017 mysql-bin.000175
-rw-rw---- 1 mysql mysql 21372 Jan 16 2017 mysql-bin.000176
-rw-rw---- 1 mysql mysql 72662198 Jan 23 2017 mysql-bin.000177
-rw-rw---- 1 mysql mysql 23064234 Feb 1 2017 mysql-bin.000178
-rw-rw---- 1 mysql mysql 47423616 Feb 19 2017 mysql-bin.000179
-rw-rw---- 1 mysql mysql 10492225 Feb 22 2017 mysql-bin.000180
-rw-rw---- 1 mysql mysql 5744591 Feb 24 2017 mysql-bin.000181
-rw-rw---- 1 mysql mysql 15735970 Mar 2 2017 mysql-bin.000182
-rw-rw---- 1 mysql mysql 18847712 Mar 8 2017 mysql-bin.000183
-rw-rw---- 1 mysql mysql 106 Mar 8 2017 mysql-bin.000184
-rw-rw---- 1 mysql mysql 6524748 Mar 10 2017 mysql-bin.000185
-rw-rw---- 1 mysql mysql 14253444 Mar 15 2017 mysql-bin.000186
-rw-rw---- 1 mysql mysql 4630764 Mar 17 2017 mysql-bin.000187
-rw-rw---- 1 mysql mysql 5565674 Mar 19 2017 mysql-bin.000188
-rw-rw---- 1 mysql mysql 18106996 Mar 24 2017 mysql-bin.000189
-rw-rw---- 1 mysql mysql 7317633 Mar 27 2017 mysql-bin.000190
-rw-rw---- 1 mysql mysql 13143096 Mar 31 2017 mysql-bin.000191
-rw-rw---- 1 mysql mysql 17705562 Apr 7 2017 mysql-bin.000192
-rw-rw---- 1 mysql mysql 794 Apr 7 2017 mysql-bin.000193
-rw-rw---- 1 mysql mysql 2323770 Apr 8 2017 mysql-bin.000194
-rw-rw---- 1 mysql mysql 125 Apr 8 2017 mysql-bin.000195
-rw-rw---- 1 mysql mysql 118567 Apr 8 2017 mysql-bin.000196
-rw-rw---- 1 mysql mysql 106 Apr 8 2017 mysql-bin.000197
-rw-rw---- 1 mysql mysql 125 Apr 8 2017 mysql-bin.000198
-rw-rw---- 1 mysql mysql 178575 Apr 8 2017 mysql-bin.000199
-rw-rw---- 1 mysql mysql 323160580 Aug 6 2017 mysql-bin.000200
-rw-rw---- 1 mysql mysql 204827580 Oct 6 2017 mysql-bin.000201
-rw-rw---- 1 mysql mysql 3498914 Oct 7 2017 mysql-bin.000202
-rw-rw---- 1 mysql mysql 1108674 Oct 7 2017 mysql-bin.000203
-rw-rw---- 1 mysql mysql 15735369 Oct 12 2017 mysql-bin.000204
-rw-rw---- 1 mysql mysql 38535897 Oct 23 2017 mysql-bin.000205
-rw-rw---- 1 mysql mysql 24462198 Oct 30 2017 mysql-bin.000206
-rw-rw---- 1 mysql mysql 4189 Oct 30 2017 mysql-bin.000207
-rw-rw---- 1 mysql mysql 112326 Oct 30 2017 mysql-bin.000208
-rw-rw---- 1 mysql mysql 20240483 Nov 3 2017 mysql-bin.000209
-rw-rw---- 1 mysql mysql 1709967 Nov 4 2017 mysql-bin.000210
-rw-rw---- 1 mysql mysql 8042562 Nov 6 2017 mysql-bin.000211
-rw-rw---- 1 mysql mysql 106 Nov 6 2017 mysql-bin.000212
-rw-rw---- 1 mysql mysql 47996565 Nov 20 2017 mysql-bin.000213
-rw-rw---- 1 mysql mysql 59865926 Dec 6 2017 mysql-bin.000214
-rw-rw---- 1 mysql mysql 59298043 Dec 24 2017 mysql-bin.000215
-rw-rw---- 1 mysql mysql 124750175 Feb 26 2018 mysql-bin.000216
-rw-rw---- 1 mysql mysql 2555 Feb 26 2018 mysql-bin.000217
-rw-rw---- 1 mysql mysql 210043333 Jun 22 2018 mysql-bin.000218
-rw-rw---- 1 mysql mysql 106 Jul 10 2018 mysql-bin.000219
-rw-rw---- 1 mysql mysql 106 Jul 18 2018 mysql-bin.000220
-rw-rw---- 1 mysql mysql 449055746 Jul 8 16:05 mysql-bin.000221
-rw-rw---- 1 mysql mysql 61635707 Aug 5 17:11 mysql-bin.000222
-rw-rw---- 1 mysql mysql 15471188 Aug 9 15:19 mysql-bin.000223
-rw-rw---- 1 mysql mysql 73784 Aug 9 16:11 mysql-bin.000224
-rw-rw---- 1 mysql mysql 11015171 Aug 14 18:39 mysql-bin.000225
-rwxr-xr-x 1 mysql mysql 1653 Aug 9 16:20 mysql-bin.index
现在我们可以按照时间来进行删除,通过如下命令删除了 2017年之前的所有 binlog:
mysql> purge master logs before'2017-01-01 00:00:00';
Query OK, 0 rows affected (1.50 sec)
mysql> exit
Bye
[root@iZm5eix8mcsf5i16makh3hZ var]# ls -l mysql-bin*
-rw-rw---- 1 mysql mysql 11046912 Sep 30 2015 mysql-bin.000106
-rw-rw---- 1 mysql mysql 9760973 Jan 1 2017 mysql-bin.000170
-rw-rw---- 1 mysql mysql 106 Jan 1 2017 mysql-bin.000171
-rw-rw---- 1 mysql mysql 13602389 Jan 6 2017 mysql-bin.000172
-rw-rw---- 1 mysql mysql 12676649 Jan 10 2017 mysql-bin.000173
-rw-rw---- 1 mysql mysql 16412479 Jan 16 2017 mysql-bin.000174
-rw-rw---- 1 mysql mysql 1054392 Jan 16 2017 mysql-bin.000175
-rw-rw---- 1 mysql mysql 21372 Jan 16 2017 mysql-bin.000176
-rw-rw---- 1 mysql mysql 72662198 Jan 23 2017 mysql-bin.000177
-rw-rw---- 1 mysql mysql 23064234 Feb 1 2017 mysql-bin.000178
-rw-rw---- 1 mysql mysql 47423616 Feb 19 2017 mysql-bin.000179
-rw-rw---- 1 mysql mysql 10492225 Feb 22 2017 mysql-bin.000180
-rw-rw---- 1 mysql mysql 5744591 Feb 24 2017 mysql-bin.000181
-rw-rw---- 1 mysql mysql 15735970 Mar 2 2017 mysql-bin.000182
-rw-rw---- 1 mysql mysql 18847712 Mar 8 2017 mysql-bin.000183
-rw-rw---- 1 mysql mysql 106 Mar 8 2017 mysql-bin.000184
-rw-rw---- 1 mysql mysql 6524748 Mar 10 2017 mysql-bin.000185
-rw-rw---- 1 mysql mysql 14253444 Mar 15 2017 mysql-bin.000186
-rw-rw---- 1 mysql mysql 4630764 Mar 17 2017 mysql-bin.000187
-rw-rw---- 1 mysql mysql 5565674 Mar 19 2017 mysql-bin.000188
-rw-rw---- 1 mysql mysql 18106996 Mar 24 2017 mysql-bin.000189
-rw-rw---- 1 mysql mysql 7317633 Mar 27 2017 mysql-bin.000190
-rw-rw---- 1 mysql mysql 13143096 Mar 31 2017 mysql-bin.000191
-rw-rw---- 1 mysql mysql 17705562 Apr 7 2017 mysql-bin.000192
-rw-rw---- 1 mysql mysql 794 Apr 7 2017 mysql-bin.000193
-rw-rw---- 1 mysql mysql 2323770 Apr 8 2017 mysql-bin.000194
-rw-rw---- 1 mysql mysql 125 Apr 8 2017 mysql-bin.000195
-rw-rw---- 1 mysql mysql 118567 Apr 8 2017 mysql-bin.000196
-rw-rw---- 1 mysql mysql 106 Apr 8 2017 mysql-bin.000197
-rw-rw---- 1 mysql mysql 125 Apr 8 2017 mysql-bin.000198
-rw-rw---- 1 mysql mysql 178575 Apr 8 2017 mysql-bin.000199
-rw-rw---- 1 mysql mysql 323160580 Aug 6 2017 mysql-bin.000200
-rw-rw---- 1 mysql mysql 204827580 Oct 6 2017 mysql-bin.000201
-rw-rw---- 1 mysql mysql 3498914 Oct 7 2017 mysql-bin.000202
-rw-rw---- 1 mysql mysql 1108674 Oct 7 2017 mysql-bin.000203
-rw-rw---- 1 mysql mysql 15735369 Oct 12 2017 mysql-bin.000204
-rw-rw---- 1 mysql mysql 38535897 Oct 23 2017 mysql-bin.000205
-rw-rw---- 1 mysql mysql 24462198 Oct 30 2017 mysql-bin.000206
-rw-rw---- 1 mysql mysql 4189 Oct 30 2017 mysql-bin.000207
-rw-rw---- 1 mysql mysql 112326 Oct 30 2017 mysql-bin.000208
-rw-rw---- 1 mysql mysql 20240483 Nov 3 2017 mysql-bin.000209
-rw-rw---- 1 mysql mysql 1709967 Nov 4 2017 mysql-bin.000210
-rw-rw---- 1 mysql mysql 8042562 Nov 6 2017 mysql-bin.000211
-rw-rw---- 1 mysql mysql 106 Nov 6 2017 mysql-bin.000212
-rw-rw---- 1 mysql mysql 47996565 Nov 20 2017 mysql-bin.000213
-rw-rw---- 1 mysql mysql 59865926 Dec 6 2017 mysql-bin.000214
-rw-rw---- 1 mysql mysql 59298043 Dec 24 2017 mysql-bin.000215
-rw-rw---- 1 mysql mysql 124750175 Feb 26 2018 mysql-bin.000216
-rw-rw---- 1 mysql mysql 2555 Feb 26 2018 mysql-bin.000217
-rw-rw---- 1 mysql mysql 210043333 Jun 22 2018 mysql-bin.000218
-rw-rw---- 1 mysql mysql 106 Jul 10 2018 mysql-bin.000219
-rw-rw---- 1 mysql mysql 106 Jul 18 2018 mysql-bin.000220
-rw-rw---- 1 mysql mysql 449055746 Jul 8 16:05 mysql-bin.000221
-rw-rw---- 1 mysql mysql 61635707 Aug 5 17:11 mysql-bin.000222
-rw-rw---- 1 mysql mysql 15471188 Aug 9 15:19 mysql-bin.000223
-rw-rw---- 1 mysql mysql 73784 Aug 9 16:11 mysql-bin.000224
-rw-rw---- 1 mysql mysql 11015816 Aug 14 18:43 mysql-bin.000225
-rwxr-xr-x 1 mysql mysql 1064 Aug 14 18:43 mysql-bin.index
接下来我们可以按照日志序列号,删除 188号 之前的日志:
mysql> purge master logs to'mysql-bin.000188';
Query OK, 0 rows affected (0.62 sec)
mysql> exit
Bye
[root@iZm5eix8mcsf5i16makh3hZ var]# ls -l mysql-bin*
-rw-rw---- 1 mysql mysql 11046912 Sep 30 2015 mysql-bin.000106
-rw-rw---- 1 mysql mysql 5565674 Mar 19 2017 mysql-bin.000188
-rw-rw---- 1 mysql mysql 18106996 Mar 24 2017 mysql-bin.000189
-rw-rw---- 1 mysql mysql 7317633 Mar 27 2017 mysql-bin.000190
-rw-rw---- 1 mysql mysql 13143096 Mar 31 2017 mysql-bin.000191
-rw-rw---- 1 mysql mysql 17705562 Apr 7 2017 mysql-bin.000192
-rw-rw---- 1 mysql mysql 794 Apr 7 2017 mysql-bin.000193
-rw-rw---- 1 mysql mysql 2323770 Apr 8 2017 mysql-bin.000194
-rw-rw---- 1 mysql mysql 125 Apr 8 2017 mysql-bin.000195
-rw-rw---- 1 mysql mysql 118567 Apr 8 2017 mysql-bin.000196
-rw-rw---- 1 mysql mysql 106 Apr 8 2017 mysql-bin.000197
-rw-rw---- 1 mysql mysql 125 Apr 8 2017 mysql-bin.000198
-rw-rw---- 1 mysql mysql 178575 Apr 8 2017 mysql-bin.000199
-rw-rw---- 1 mysql mysql 323160580 Aug 6 2017 mysql-bin.000200
-rw-rw---- 1 mysql mysql 204827580 Oct 6 2017 mysql-bin.000201
-rw-rw---- 1 mysql mysql 3498914 Oct 7 2017 mysql-bin.000202
-rw-rw---- 1 mysql mysql 1108674 Oct 7 2017 mysql-bin.000203
-rw-rw---- 1 mysql mysql 15735369 Oct 12 2017 mysql-bin.000204
-rw-rw---- 1 mysql mysql 38535897 Oct 23 2017 mysql-bin.000205
-rw-rw---- 1 mysql mysql 24462198 Oct 30 2017 mysql-bin.000206
-rw-rw---- 1 mysql mysql 4189 Oct 30 2017 mysql-bin.000207
-rw-rw---- 1 mysql mysql 112326 Oct 30 2017 mysql-bin.000208
-rw-rw---- 1 mysql mysql 20240483 Nov 3 2017 mysql-bin.000209
-rw-rw---- 1 mysql mysql 1709967 Nov 4 2017 mysql-bin.000210
-rw-rw---- 1 mysql mysql 8042562 Nov 6 2017 mysql-bin.000211
-rw-rw---- 1 mysql mysql 106 Nov 6 2017 mysql-bin.000212
-rw-rw---- 1 mysql mysql 47996565 Nov 20 2017 mysql-bin.000213
-rw-rw---- 1 mysql mysql 59865926 Dec 6 2017 mysql-bin.000214
-rw-rw---- 1 mysql mysql 59298043 Dec 24 2017 mysql-bin.000215
-rw-rw---- 1 mysql mysql 124750175 Feb 26 2018 mysql-bin.000216
-rw-rw---- 1 mysql mysql 2555 Feb 26 2018 mysql-bin.000217
-rw-rw---- 1 mysql mysql 210043333 Jun 22 2018 mysql-bin.000218
-rw-rw---- 1 mysql mysql 106 Jul 10 2018 mysql-bin.000219
-rw-rw---- 1 mysql mysql 106 Jul 18 2018 mysql-bin.000220
-rw-rw---- 1 mysql mysql 449055746 Jul 8 16:05 mysql-bin.000221
-rw-rw---- 1 mysql mysql 61635707 Aug 5 17:11 mysql-bin.000222
-rw-rw---- 1 mysql mysql 15471188 Aug 9 15:19 mysql-bin.000223
-rw-rw---- 1 mysql mysql 73784 Aug 9 16:11 mysql-bin.000224
-rw-rw---- 1 mysql mysql 11016895 Aug 14 18:45 mysql-bin.000225
-rwxr-xr-x 1 mysql mysql 722 Aug 14 18:45 mysql-bin.index
最后,我们可以设置binlog日志的保留时间,将保留时间设置为 30天,数据库将自动清理过期的日志:
mysql> show variables like 'expire_logs_days';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| expire_logs_days | 0 |
+------------------+-------+
1 row in set (0.00 sec)
mysql> set global expire_logs_days = 30;
Query OK, 0 rows affected (0.00 sec)
等候日志清理政策生效,30天以前的日志就被删除了:
[root@iZm5eix8mcsf5i16makh3hZ var]# ls -l mysql-bin*
-rw-rw---- 1 mysql mysql 449055746 Jul 8 16:05 mysql-bin.000221
-rw-rw---- 1 mysql mysql 61635707 Aug 5 17:11 mysql-bin.000222
-rw-rw---- 1 mysql mysql 15471188 Aug 9 15:19 mysql-bin.000223
-rw-rw---- 1 mysql mysql 73784 Aug 9 16:11 mysql-bin.000224
-rw-rw---- 1 mysql mysql 12092111 Aug 15 10:07 mysql-bin.000225
-rwxr-xr-x 1 mysql mysql 95 Aug 14 18:54 mysql-bin.index
在我的日志系统里存在了一个2015年的孤儿日志,只能手工删除了:
[root@hZ var]# rm mysql-bin.000106
rm: remove regular file `mysql-bin.000106'? yes
记录一下供参考。
历史上的今天...
>> 2021-08-14文章:
>> 2013-08-14文章:
>> 2012-08-14文章:
>> 2009-08-14文章:
>> 2008-08-14文章:
>> 2006-08-14文章:
>> 2005-08-14文章:
By eygle on 2019-08-14 19:36 | Comments (0) | HowTo | 3352 |