MySQL Bin文件占用大量磁盘空间

时间:2020-01-09 10:44:11  来源:igfitidea点击:

问题描述:我在MySQL数据目录中得到了大量的bin文件,称为server-bin.n或者mysql-bin.00000n,其中n是一个递增的数字。
什么是MySQL Binary Log?
如何停止创建这些文件?

解决方法:通常/var/lib/mysql存储二进制日志文件。
二进制日志包含所有更新数据或者可能已更新数据的语句。
例如,没有匹配任何行的DELETE或者UPDATE。
语句以描述修改的事件形式存储。
二进制日志还包含有关每个语句花费该更新数据多长时间的信息。

MySQL二进制日志的目的

二进制日志有两个重要目的:

  • 数据恢复:可用于数据恢复操作。还原备份文件后,将重新执行在执行备份后记录的二进制日志中的事件。这些事件使数据库从备份开始就保持最新状态。
  • "高可用性/复制":二进制日志在主复制服务器上用作要发送到从属服务器的语句的记录。主服务器将其二进制日志中包含的事件发送到其从属服务器,从属服务器执行这些事件以对主服务器进行相同的数据更改。

禁用MySQL Binlogging

如果不进行复制,则可以通过更改my.ini或者my.cnf文件来禁用二进制记录。
打开您的my.ini或者/etc/my.cnf(/etc/mysql/my.cnf),执行:

# vi /etc/my.cnf

找到一行读取log_bin的行,并按以下步骤删除或者注释它:

#log_bin                        = /var/log/mysql/mysql-bin.log

您还需要删除或者注释以下几行:

#expire_logs_days        = 10
#max_binlog_size         = 100M

关闭并保存文件。
最后,重启mysql服务器:

# service mysql restart

清除主日志

如果要复制,则需要定期进行" RESET MASTER"或者" PURGE MASTER LOGS"清除旧日志,因为这些文件是正确进行复制所必需的。
使用以下命令清除主日志:

$ mysql -u root -p 'MyPassword' -e "PURGE BINARY LOGS TO 'mysql-bin.03';"

或者

$ mysql -u root -p 'MyPassword' -e "PURGE BINARY LOGS BEFORE '2008-12-15 10:06:06';"