如何删除MYSQL日志文件及关闭日志功能

如何删除MYSQL日志文件及关闭日志功能,第1张

一、关闭MySql日志方法:

找到MySql的配置文件,然后注释以下两行即可(即在行首添加#符号就好了)。然后重启MySql服务

log-bin=mysql-bin

binlog_format=mixed

二、删除日志

1)手动删除日志

手动删除日志的基本语法如下:

PURGE {MASTER | BINARY} LOGS TO'log_name'

PURGE {MASTER | BINARY} LOGSBEFORE 'date'

①、查看当前日志:

show binary logs

②、查看第一个二进制日志

show binlog events

③、删除指定日志之前的日志

PURGE MASTER LOGS TO'mysql-bin.010'

④、删除指定日期之前的日志

PURGE MASTER LOGS BEFORE'2018-7-12 13:00:00'

⑤、删除N天前的日志

PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL N DAY)如下面的语句可以清除 7 天前的binlog,

PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL 7 DAY)

注意:BEFORE变量的date自变量可以为'YYYY-MM-DDhh:mm:ss'格式。MASTER和BINARY是同义词。

2)自动删除日志

①、第一种方式:设置日志保存时间

修改MySql的配置文件,设置以下属性:expire_logs_days=10。这个值根据实际情况来定。当然对于生产环境修改配置文件需要重启,这个代价可能会很大,还可以通过这个命令来修改生效set global expire_logs_days = 10

②、第二种方式:设置定时任务

0 3 * * *  `mysql -uroot -e 'PURGE BINARY LOGS BEFOREDATE_SUB( NOW( ), INTERVAL 7 DAY)'`

上面的命令是每天凌晨3点删除7天前的binlog:

永久生效:修改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 文件

删除举例:

用命令查看: show binary logs

然后去从服务器上查看哪个二进制正在使用,

我们看到mysql-tb-bin.000005这个日志文件正在使用。

回到主服务器开始清理日志,但是不能清理mysql-tb-bin.000005这个日志文件,用命令清理:

purge binary logs to 'mysql-tb-bin.000005'

这个命令就是清理除mysql-tb-bin.000005以外的其他二进制日志;执行成功后,再查看二进制日志列表:show binary logs

清理成功,但是这样手动清理危险很大,而且还比较复杂,有没有自动清理的方法呢?答案是有的,在my.ini里面加上这个配置:expire_logs_days=5 这个配置的意思就是,日志的过期天数,超过5天的日志,mysql会自动清理5天以前的日志


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/383844.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存