如何删除MySQL二进制日志(Bin Log)

原文

MySQL 5.0及更高版本默认启用MySQL Binary Log。 长期运行保留MySQL Binary Log会占用大量磁盘空间。 可以删除较旧的MySQL Binary日志,以节省硬盘空间。

MySQL Binary Log以非常详细的方式存储查询事件,例如添加,删除和更新。 二进制日志用于两个主要目的:

  • 在主服务器和从服务器之间进行复制,在主服务器上进行的声明稍后会将其发送到从服务器。
  • 恢复,某些恢复作业需要将数据存储在MySQL Binary Log中。

MySQL Binary Log位于数据库的根文件夹,其命名约定为mysql-bin

bin log

我可以删除MySQL二进制日志吗

当然可以,只要将数据复制到从服务器,就可以安全删除文件。 建议仅删除1个月以上的MySQL Binary Log。

不过,如果主要目的是恢复数据,则建议存档MySQL Binary Log。

删除或清理MySQL Binary Log的方法有多种,不建议手动清理文件,手动意味着运行remove命令。

使用RESET MASTER语句删除MySQL二进制日志

Reset Master语句用于在复制Master和Slave服务器期间启动新数据库。 该语句可用于删除所有二进制日志。

清理Master服务器上的二进制日志:

shell> mysql -u username -p
mysql> RESET MASTER;

清理Slave服务器上的二进制日志:

mysql -u username -p
mysql> RESET SLAVE;

使用PURGE BINARY LOGS语句删除MySQL二进制日志

PURGE BINARY LOGS语句可以删除基于日期的Binary Log或最多Binary Log序列号。

基于上面显示的二进制日志示例,我想删除直到mysql-bin.000015(保留)的二进制文件:

shell> mysql -u username -p
mysql>PURGE BINARY LOGS TO 'mysql-bin.000015';

或者,你可以删除早于特定日期的二进制文件:

shell> mysql -u username -p
mysql> PURGE BINARY LOGS BEFORE '2009-05-01 00:00:00';

使用mysqladmin flush-logs命令删除MySQL Binary Log

另一种方法是运行mysqladmin flush-logs命令,它将删除超过3天的二进制日志。

shell> mysqladmin -u username -p flush-logs

将MySQL二进制日志保存X天

以上所有方法都需要监视磁盘使用情况,以滚动并保持二进制日志x天数。 可以在MySQL的配置文件/etc/my.cnf上配置以下选项:

[mysqld]
expire_logs_days = 7

命令行上可以用:

mysql> SET GLOBAL expire_logs_days = 7;

如果未在数据库服务器上部署MySQL复制,并且恢复不是主要问题,请考虑关闭MySQL二进制日志。

延伸阅读

MySQL二进制日志
MySQL性能篇之日志管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值