MySQL / 数据库

MySQL Binlog日志的清理方案

温馨提示:本文最后更新于2021-03-02 18:46:27,某些文章具有时效性,若有错误或已失效,请在下方留言或提交工单提交工单
浅时光 · 9月20日 · 2020年 · 本文1431个字,预计阅读4分钟 94160次已读

一、自动清理

当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间。我们就需要设置binlog日志过期时间。

方式1:修改配置文件my.cnf

[[email protected] ~]# vim /etc/my.cnf     #修改expire_logs_days,x是自动删除的天数,一般将x设置为短点,如10
[mysqld]
...
expire_logs_days = x  #二进制日志自动删除的天数。默认值为0,表示“没有自动删除”

方式2:直接在数据库里修改

mysql> show variables like "%expire_logs_days%";
mysql> set global expire_logs_days = 10;
MySQL Binlog日志的清理方案-浅时光博客

二、手动清理

说明:清理之前一定要看下从库当前正在读取的是哪个binlog文件,然后确定读取的文件后再进行手动清理,或者在进行清理binlog文件之前先把binlog文件进行备份。

[[email protected] ~]# mysql -uroot -p	#登入到从库查看当前读取的binlog
mysql> show slave status\G
Relay_Master_Log_File: master-bin.004337

[[email protected] ~]# mysql -uroot -p	#登入到主库进行清理
#查看正在写的binlog文件
mysql> show master logs;
mysql> show binary logs;
mysql> show variables like "%expire_logs_days%";

mysql> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 5 DAY);    #清除5天前的binlog日志文件

三、参数说明

1、expire_logs_days

本文中的 X 表示是你想要保留的天数。我推荐10个,但这取决于MySQL服务器的繁忙程度和日志文件的增长速度。只要确保它比最慢的奴隶从你的主人复制数据要长。只是附带说明一下:您知道无论如何都应该这样做,但是要确保备份了mysql数据库。在某些情况下,二进制日志可以用来恢复数据库;因此,备份可以确保在数据库服务器崩溃时能够恢复数据。

2、PURGE MASTER LOGS

删除指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除MySQL BIN-LOG 日志,这样被给定的日志成为第一个。

示例:

> PURGE MASTER LOGS TO 'MySQL-bin.010';  //清除MySQL-bin.010日志
> PURGE MASTER LOGS BEFORE '2020-05-01 13:00:00';   //清除2020-05-01 13:00:00前binlog日志
> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 5 DAY);  //清除5天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。

3、清Binlog时对从库的影响

如果你有一个活性的从服务器,该从服务器当前正在读取的binlog日志如果是你正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从服务器是休止的,并且你碰巧清理了其想要读取的日志之一,则从服务器启动后不能复制。当从服务器正在复制时,本语句可以安全运行。你不需要停止它们。




关注本站官方微信公众号『精彩程序人生』

扫描左侧二维码关注我们的微信公众帐号,在微信公众帐号中回复【加群】即可加入到我们的技术讨论群里面共同学习。
关注博主不迷路~


本文作者:浅时光
原文链接:https://www.dqzboy.com/2533.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可
转载时请以超链接形式标明文章原始出处和作者信息

0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

    本站已稳定运行: | 耗时 0.448 秒 | 查询 23 次 | 内存 41.16 MB