关于 Mysql 数据库 binlog 相关问题

AI智能摘要
MySQL的Binlog(二进制日志)记录数据库所有更改操作,用于数据恢复、主从复制、增量备份及审计。近期因Binlog日志增长过快导致磁盘空间耗尽,影响服务运行。可通过设置`binlog_expire_logs_seconds`(MySQL 8)或`expire_logs_days`(MySQL 7及以下)缩短日志保留时间,默认30天可调整为1天。也可手动清理或禁用Binlog,但禁用后将失去数据恢复与复制功能,生产环境需谨慎操作。
— 此摘要由AI分析文章内容生成,仅供参考。

最近发现mysql数据库中binlog日志文件增加迅速,100GB的硬盘直接被塞满,导致博客无法正常访问,遂查询了谷歌,所以才有了这篇文章。

注意:如果你对mysql数据库的恢复功能非常需要,不建议禁用,缩短过期时间即可!

Binlog是什么?

Binlog(Binary Log) 是MySQL数据库中的二进制日志文件,用于记录数据库的所有更改操作。它以二进制的形式存储,包含了对数据库执行的所有修改操作的详细信息,如插入、更新、删除等。Binlog是MySQL事务日志的一部分,与Redo Log(重做日志)一起,确保数据库的一致性、持久性,以及提供一些关键的数据库管理功能。

Binlog的作用

1.数据恢复

Binlog记录了数据库的历史变更,通过重放Binlog中的事件,可以将数据库还原到特定的时间点。这对于恢复误删数据、应对错误的批量操作等情况非常有用。

2.主从复制

在主从复制中,主服务器将所有的更改记录到Binlog中,而从服务器通过读取主服务器的Binlog并执行相同的更改来保持数据同步。这实现了数据的复制和冗余,提高了系统的可用性和可靠性。

3.点对点复制

类似于主从复制,但点对点复制允许多个服务器之间相互复制数据,而不仅限于主从关系。Binlog在这种情况下发挥着关键的作用,确保不同服务器之间的数据同步。

4.数据库备份

Binlog也是数据库备份的一部分。通过备份Binlog,可以实现增量备份,只备份自上次完整备份以来发生的变更,从而减少备份的时间和存储成本。

5.审计与监控

Binlog记录了数据库中的每个事务操作,包括操作的时间、执行者等信息。这对于审计数据库的访问记录、监控数据库的活动非常有帮助。

禁用Binlog

Mysql默认启用Binlog

打开MySQL的配置文件,通常是my.cnf

在配置文件后添加

skip-bin-log
或者:disable-bin-log

重启数据库

sudo service mysql restart

查看是否禁用成功,打开数据库的终端

SHOW VARIABLES LIKE 'log_bin';

如果输出显示 log_bin 的值为 OFF,则表示Binlog已成功禁用

手动删除Binlog

binlog文件通常在mysql的data目录下

打开binlog.index(二进制日志索引),删除除最后一行的其他内容,如图所示

关于 Mysql 数据库 binlog 相关问题

然后你就可以把对应的binlog文件删除,保留最后一个即可

关于 Mysql 数据库 binlog 相关问题

设置Binlog过期时间

在mysql数据库使用终端,1panel可直接连接

关于 Mysql 数据库 binlog 相关问题

出现mysql> 后,输入以下命令查询binlog过期时间

show variables like '%binlog_expire%';

binlog_expire_logs_auto_purge:是否自动清理
binlog_expire_logs_seconds:多长时间清理一次,单位为秒(MySQL 8)
expire_logs_days:多长时间清理一次,单位为天(MySQL 7或更低版本)

默认的binlog过期时间为2592000秒,也就是30天,使用以下命令可以将binlog过期时间设置为1天(MySQL 8),也可以根据需要自定义时间

set global binlog_expire_logs_seconds=86400;
set persist binlog_expire_logs_seconds=86400;
关于 Mysql 数据库 binlog 相关问题

再次查询binlog过期时间可以看到已经被更改

关于 Mysql 数据库 binlog 相关问题

手动刷新过期日志

flush logs;
关于 Mysql 数据库 binlog 相关问题

相关说明

  1. 在测试和开发环境中,可能不需要启用Binlog,以减少日志记录对性能的影响,并简化系统的配置。
  2. 在一些需要追求极致性能的场景下,可以临时禁用Binlog。例如,进行大批量数据加载时,禁用Binlog可以提高数据加载的速度。
  3. 在一些对磁盘空间要求较为严格的情况下,禁用Binlog可以减少对磁盘空间的占用。
  4. 某些业务场景可能不要求数据的持久性,因此可以考虑禁用Binlog以提高性能。

禁用Binlog会导致数据库失去了数据恢复和复制的能力,因此在正式生产环境中,禁用Binlog需要慎重考虑,并确保在业务需求和系统要求下做出明智的选择。

发布者:木木,转载请注明出处:https://blog.huzz.cn/10055.html

Like (0)
Donate 微信 微信 支付宝 支付宝
木木的头像木木VIP用户
Previous 2025 年 11 月 14 日 下午3:34
Next 2025 年 11 月 24 日 下午2:36

相关推荐

发表回复

Please Login to Comment
SHARE
TOP
🔈Hi,朋友。欢迎来到木木的博客小站!