降低MySQL Binlog存储占用的方法

降低MySQL Binlog存储占用的方法(不调整expire时间)

在不调整expire_logs_days参数的前提下,可以通过以下几种方式降低binlog的存储空间占用:

1. 调整binlog格式

SET GLOBAL binlog_format = 'ROW';  -- 或 'MIXED'
  • STATEMENT格式在某些情况下会产生更多日志
  • ROW格式对于某些操作更节省空间(但并非所有情况)

2. 压缩binlog

MySQL 8.0+支持binlog压缩:

SET GLOBAL binlog_transaction_compression = ON;
SET GLOBAL binlog_transaction_compression_level_zstd = 3;  -- 1-22,默认3

3. 减少写入量

  • 优化事务大小:将大事务拆分为小事务
  • 避免不必要的autocommit=0的长事务
  • 减少DDL操作频率

4. 调整binlog_row_image

对于ROW格式,可以调整:

SET GLOBAL binlog_row_image = 'MINIMAL';  -- 只记录变更的列和被索引引用的列

5. 定期手动清理

虽然不调整过期时间,但可以手动清理:

PURGE BINARY LOGS TO 'mysql-bin.000123';  -- 删除指定文件之前的所有binlog
PURGE BINARY LOGS BEFORE '2023-01-01 00:00:00';

6. 调整binlog_cache_size

SET GLOBAL binlog_cache_size = 32768;  -- 根据实际情况调整

7. 检查并优化应用

  • 减少无用的UPDATE操作(如更新相同值)
  • 避免全表更新

注意事项

  • 修改全局变量前评估对业务的影响
  • 生产环境变更建议在低峰期进行
  • 某些设置需要重启MySQL才能永久生效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学亮编程手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值