MySQL清理binlog日志的方法

MySQL清理binlog日志的方法,第1张

永久生效:修改mysql的配置文件my.cnf,添加binlog过期时间的配置项: expire_logs_days=30 ,然后重启mysql,这个有个致命的缺点就是需要重启mysql。

临时生效:进入mysql,用以下命令设置全局的参数: set global expire_logs_days=30

(上面的数字30是保留30天的意思。)

可以直接删除 binlog 文件,但是可以通过 mysql 提供的工具来删除更安全,因为 purge 会更新 mysql-bin.index 中的条目,而直接删除的话, mysql-bin.index 文件不会更新。 mysql-bin.index 的作用是加快查找 binlog 文件的速度。

命令查看 binlog 文件

删除举例:

lsof|grepdeleted查看一下是否存在删除了,但是没有释放空间的文件。查看其所属的服务的进程号,杀掉进程,重启服务。

1、绝对不能从 *** 作系统上直接删除binlog日志,如rm binlog。

2、在MySQL中,使用PURGE BINARY LOGS命令删除binlog日志,才是最安全的办法。命令如下,

PURGE BINARY LOGS BEFORE '2017-01-20 00:00:00'

PURGEBINARYLOGSBEFORE'2017-01-20 00:00:00'

首先,建议你在删除之前先对数据库用mysqldump做个全库备份。然后进入Mysql(用root用户)。然后 show binary logs ,这个命令会列出当前保存的所有二进制日志。然后用命令:

purge binary/master logs to 日志名(表示到这个日志之前的日志都删除掉)/before 时间(表示到这个时间之前的日志都删除掉)

里面用“/”标明的是前后两个二选一的可选项。执行完后,就会删除了。

如果你不想这么麻烦,可以设置日志保存时长的。首先你要找到my.cnf配置文件,然后编辑它。在[mysqld]里面加入

expire_logs_days=想要保留的天数

然后重启Mysql服务。这样每当你重启mysql服务,或者是做flush logs的时候,系统都会把超出设置天数之外的日志删掉。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7096123.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存