当前位置: 首页 > news >正文

MySQL8.0 binlog不清理导致使用磁盘空间过大问题

一、详细问题截图:

mysqlbinlog不清理截图如下
在这里插入图片描述

二、报错原因(分析过程):

1、查看日志保留时间发现是8天.
show variables like ‘%binlog_expire_logs_seconds%’;

2、查看主备同步状态正常且没有延时。

show slave status\G

3、查看binlog日志生成大小限制为500M

show variables like ‘%max_binlog_size%’;
在这里插入图片描述

同时查看binlog日志大小发现没有超过500m的。

ls -lh /var/lib/mysql/archive/

4、查看3.20的时候刚好是平台下发备份的时间点(怀疑是备份引起的)。
查看官方网站发现有bug

https://bugs.mysql.com/bug.php?id=104785

5、根据如上情况分析
官方文档提示,当对MySQL实例发出LOCK INSTANCE FOR BACKUP语句期间,PURGE BINARY LOGS是不允许的,因为它会从服务器中删除文件(删除binlog文件),违反了备份锁(backup lock)的规则。从MySQL 8.0.28开始,这个是不允许的。

因为Xtrabackup备份时,它会执行FLUSH NO_WRITE_TO_BINLOG BINARY LOGS命令,它会轮换二进制日志(rotate the binlog),这实质上将创建一个新的二进制日志,而在 轮换二进制日志时,就会触发PURGE BINARY LOGS,而由于当前MySQL版本为MySQL 8.0.35,在MySQL进行Xtrabackup时,由于LOCK INSTANCE FOR BACKUP锁,导致PURGE BINARY LOGS是不允许的。

官方描述如下:

PURGE BINARY LOGS should not be issued while a LOCK INSTANCE FOR BACKUP statement is in effect for the instance, because it contravenes the rules of the backup lock by removing files from the server. From MySQL 8.0.28, this is disallowed.

官网连接如下:

https://dev.mysql.com/doc/refman/8.0/en/lock-instance-for-backup.html

6、触发binlog清理的条件
清理过期binlog的原理机制:即使我们设置了系统变量binlog_expire_logs_seconds,不是说一旦binlog的创建时间超过了系统变的binlog_expire_logs_seconds的阈值,就会立即触发MySQL的相关线程去清理过期的binlog。清理过期的binlog,一般发生在MySQL启动时或刷新二进制日志时进行(flush logs)和binlog满max_binlog_size设定的值后新生成binlog时。

Binary log files are automatically removed after the server’s binary log expiration period. Removal of the files can take place at startup and when the binary log is flushed.

官方文档连接如下:

https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html

查看binlog保留大小发现

由于这个系统一天产生的binlog小于500m(可以从上面的binlog的输出信息看出,例如,binlog的大小,binlog的创建时间),也就是说,一天24小时内,MySQL的binlog不会由于binlog过大而触发binlog的切换,也就是说只有Xtrabackup时才触发了binlog的切换,而又由于限制问题,导致过期的binlog不能被清理,久而久之,过期的binlog一直不能清理导致空间使用越来越多。

解决方法:
方案1可在线操作

方案2需停机操作

临时解决方案:

1.手动执行flush log;
2.调整max_binlog_size大小为一天生成的日志量。

相关文章:

  • V8的内存分代方法
  • 作业14 (2023-05-22_const修饰指针)
  • 基于SpringBoot+Vue3实现的宠物领养管理平台功能十六
  • 基于云服务器的数仓搭建-服务器配置
  • FPGA学习篇——Verilog学习之寄存器的实现
  • 第九章:优化查找和排序_《C++性能优化指南》notes
  • DPDK介绍
  • 性能比拼: Rust vs C++
  • 【Boost搜索引擎】上
  • Jupyter Notebook中解决matplotlib绘图中文乱码的实用方案
  • Unity Standard Shader 解析(一)之ForwardBase(标准版)
  • 如何在 JavaScript 中实现一个简单的递归函数,例如计算阶乘?
  • HarmonyOS之深入解析如何根据url下载pdf文件并且在本地显示和预览
  • 【leetcode hot 100 295】数据流的中位数
  • 基于大模型的肋骨骨折合并血气胸预测及诊疗方案研究
  • hadoop相关面试题以及答案
  • 中医气血精津辨证
  • Linux应用:线程进阶
  • hackmyvm-reversteg
  • Modbus TCP返回报文
  • 做公司网站哪家好重庆九龙坡区/个人怎么在百度上打广告
  • 成都自助建站软件/互联网营销策略有哪些
  • 保定网站建设技术支持/营销推广手段有什么
  • 做企业网站通常哪找素材/软件推广
  • 免费教做面食的网站/百度关键词排名查询工具
  • 有没有专门做航拍婚礼网站/chrome 谷歌浏览器