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

mysql 8.0.32 磁盘爆满,清理从库日志

mysql 8.0.32 磁盘爆满,清理从库日志

  • 1、问题现象
  • 2、问题原因
  • 3、解决方法

1、问题现象

mysql 8.0.32 从库磁盘爆满。
mysql 一主一从,使用binlog同步的。

查看磁盘上哪些文件占用了磁盘空间:

确认哪些文件占用较大

du-ah/ --max-depth=1|sort-hrdu-ah/var/lib/ --max-depth=1|sort-hr

2、问题原因

原因是从库的log_slave_updates: 开启了,并且binlog_expire_logs_seconds参数配置为永不过期。导致磁盘占用翻倍:因为开启这个参数后,主库过来的每一次数据变更,从库除了写入中继日志(Relay Log)用于回放,还会额外写入从库自己的binlog文件,会占用额外的磁盘空间和I/O资源。

清理规则:这些从库自己的 binlog.0000xx 文件,过期时间同样受 binlog_expire_logs_seconds 参数控制(默认30天)。你需要确保这个值设置合理,否则从库磁盘也可能被写满。本例中核心原因是因为binlog_expire_logs_seconds参数配置为永不过期,导致从库自己的 binlog.0000xx 文件永不清理,一直积累下去越来越多最终导致磁盘爆满。

在 MySQL 8.0.32 中,这两个参数的默认值都是 开启 (ON) 状态。
log_bin (二进制日志): 默认开启 (ON)
log_slave_updates: 默认开启 (ON)

log_bin (二进制日志) 详解:
从 MySQL 8.0 开始,二进制日志功能默认就是开启的。除非你在启动时显式地指定了 --skip-log-bin 或 --disable-log-bin 选项,否则该功能就是启用的。

如果你在配置文件中没有提供 --log-bin 选项,MySQL 会使用 binlog 作为默认的日志文件基础名

log_slave_updates 详解
这个参数控制从库 (Replica) 在回放主库传来的变更后,是否将这些变更也写入自己的二进制日志 (binlog) 中
版本差异:在 MySQL 5.7 及更早版本中,该参数默认为 OFF
MySQL 8.0 起:默认值已更改为 ON。但需要注意的是,log_slave_updates 生效的前提是 log_bin 本身必须是开启状态

为什么log_slave_updates默认是开启的呢?
log_slave_updates 默认开启 这个设置让从库能把从主库同步过来的数据,再次写入自己的 binlog。

这么设计主要是为了支持“级联复制”,即这个从库未来可以作为“二级主库”,再同步给其他从库。对于只需要一主一从的场景,这个功能确实用不上。

3、解决方法

从库执行mysql -uroot -p登录数据库
– 查看当前有哪些 binlog 文件

SHOWBINARYLOGS;

发现有几百个binlog文件,共占用了几十G磁盘空间。

因为是生产环境,不能贸然改动数据库配置参数。因此只清理了从库自己的 binlog.0000xx 文件。
从库执行:

cd/var/lib/mysql

ls -lhrt 查看binlog.xxxxxx 一共有多大 。(判断如果清理能腾出来多大空间)

清理前先备份从库 至关重要:

备份从库整个数据目录/var/lib/mysql
切换到root用户

cp-r/var/lib/mysql /path/to/备份磁盘

清理前查看关键数据表的行数,记录关键数据表行数。

selectcount(*)fromtablecrucial1;selectcount(*)fromtablecrucial2;selectcount(*)fromtablecrucial3;

清理前确认从库上主从同步状态正常:
确保从库已经应用了所有从主库同步过来的数据。执行 SHOW REPLICA STATUS\G,重点看 Replica_IO_Running: Yes 和 Replica_SQL_Running: Yes,以及 Seconds_Behind_Source: 0(或很小的数值)。确认同步正常后,再执行清理。
从库执行

mysql-uroot-p
showslavestatus\G

清理从库的binlog文件
– 示例:保留最后一个文件(如 binlog.000567),删除它之前的所有文件。
binlog.000567是SHOW BINARY LOGS; 查询返回的最后一个文件。
清理从库的binlog:

mysql-uroot-p
PURGEBINARYLOGSTO'binlog.000567';

清理后查看关键数据表的行数,确保关键数据表行数没有发生变化。

selectcount(*)fromtablecrucial1;selectcount(*)fromtablecrucial2;selectcount(*)fromtablecrucial3;
http://www.cnnetsun.cn/news/4154511.html

相关文章:

  • Java工程师面试核心:JVM、并发、Spring与分布式系统解析
  • C++函数模板与普通函数调用优先级解析:重载决议与类型转换
  • 关于vins-fusion单目IMU初始化时为什么不估计加速度计偏置
  • GPT-5.5+Gemini 3.1 Pro 的四种顶刊级别的论文摘要写法,给大家整理好了!
  • SpringBoot+微信小程序手作交易平台:毕业设计实战指南
  • 0.15mm细孔加工:手摇机被数控替代的技术逻辑与选型要点
  • 免费磁力搜索完整指南:magnetW 如何把 23 个磁力站点装进一个界面
  • OpenCLIP实战指南:从零样本分类到多模态应用开发
  • yyzTools 开发者实战指南:一个集成了 40+ 工具的 Windows 桌面效率方案
  • 电工杯数学建模竞赛:优化与数据分析类赛题解题全攻略
  • (部分无人机交通道路火灾数据集)无人机烟火航拍无人机视角检测数据集9003张 通过训练的无人机航拍烟火火灾烟雾检测数据集的模型
  • 从官方公开数据看制药企业的合规运营:一份白皮书的四组数据
  • Java大厂面试核心:技术深度与系统设计实战
  • 包胶滚筒输送机设计要点与应用场景:摩擦系数、包胶厚度与传动方式的工程选型
  • 1/1.3 英寸大底:ATOM 3 vs Lito X1 画质与综合体验深度对比
  • 用 npx 命令快速启动 DeepSeek Harness,无需克隆源码的尝鲜方案
  • 长距离供电系统的核心:直流远供电源技术解析与应用
  • Wireshark网络协议分析实战:从抓包入门到HTTPS解密与移动端流量捕获
  • AI全栈开发实战:基于LangChain.js与Nuxt.js构建智能问答应用
  • 宏智树AI:ChatGPT学术版驱动的一站式论文写作智能解决方案
  • LLM在科研中的双刃剑效应:效率提升背后的技能侵蚀与创新挑战
  • C++函数模板与普通函数调用优先级深度解析
  • 力扣面试经典150题-80. 删除有序数组中的重复项 II
  • 生鲜供应链建模:从数学公式到菜市场落地的系统思维
  • 2026毕业生必备:5款AI简历优化工具深度评测
  • Java面试深度解析:从JVM到SpringBoot核心机制
  • 探秘AI专著生成:4款神器助力,1天完成20万字AI写专著快速之路!
  • 从滑动窗口到卷积实现:目标检测效率跃迁的核心原理与实践
  • 自适应记忆结晶:让AI智能体在动态环境中学会选择性遗忘
  • 真会被判死刑的落地页写法——先对照再