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

​​--flush-logs 的作用:刷新 MySQL 的日志文件(主要是二进制日志 binlog)​

mysqldump 命令中,--flush-logs 是一个非常有用的选项,它的作用是:


🔧 ​--flush-logs 的作用:刷新 MySQL 的日志文件(主要是二进制日志 binlog)​

当你执行:

mysqldump -u$user -p$password --flush-logs $dbname > $bakdir/${baknamefile}-webdb.sql

其中的 --flush-logs 选项会让 MySQL 在执行备份 ​​之前​​,​​先刷新(即重新打开)日志文件​​,通常是 ​​二进制日志(binary log,即 binlog)​​。


🎯 为什么要刷新日志?有什么好处?

1. ​​便于实现增量备份或时间点恢复(Point-In-Time Recovery)​

MySQL 的 ​​二进制日志(binlog)​​ 记录了所有更改数据的 SQL 操作(比如 INSERT、UPDATE、DELETE 等),它是实现:

  • ​主从复制(Replication)​
  • ​时间点恢复(PITR, Point-In-Time Recovery)​

的关键。

当你使用 --flush-logs,MySQL 会:

  • ​关闭当前的 binlog 文件​
  • ​创建一个新的 binlog 文件​

这意味着:​​此次备份对应的所有数据变更,都会从新的 binlog 文件开始记录​​。

这样你就可以:

✅ ​​清楚地知道:备份之后,所有的数据变化都记录在新 binlog 文件中​​,方便你之后做增量备份或恢复到某个具体时间点。


2. ​​逻辑上划分备份与后续操作​

通过刷新日志,你相当于在备份这个时间点,​​“切了一刀”​​,之后的所有数据变更都会记录到新的日志中。

这样在数据恢复时,你可以:

  • 先恢复这个全量备份(比如你用 mysqldump 导出的 sql 文件)
  • 然后根据 ​​新的 binlog 文件​​,应用从备份时间点之后的所有变更,直到你想要恢复的时刻

这对于数据库的灾备和精细恢复非常重要。


📌 举个例子:

假设你每天凌晨 3 点做一次全库备份,并使用 --flush-logs

mysqldump -u root -p --flush-logs mydb > /backup/mydb-$(date +%F).sql

那么:

  • 备份前,MySQL 会把当前的 binlog 文件 flush 掉,生成一个新的 binlog
  • 你备份的数据是“到备份时刻为止”的完整数据
  • ​之后的所有数据变更,都会记录到新 binlog 文件中​

当某一天你的数据库挂了,你可以:

  1. 先恢复这个全量备份(比如 2024-06-01 的备份)
  2. 然后从备份时间点之后产生的 binlog 文件中,提取变更并重放(使用 mysqlbinlog 工具),恢复到故障前的某个时间点

⚠️ 注意事项:

  1. --flush-logs 只刷新二进制日志(binlog),不会刷新其他日志(如 InnoDB 的 redo log 等)​
  2. ​需要有足够的权限​​(通常需要 RELOAD 权限,以及 SELECT、LOCK TABLES 等权限,视具体情况而定)
  3. ​在生产环境慎用​​,尤其是在高并发写入场景下,flush 可能会引起短暂的阻塞(不过通常很短暂)
  4. --flush-logs 通常和全量备份(如 mysqldump 全库导出)一起使用效果最佳​

✅ 总结:--flush-logs 的主要用途

作用说明
🔄 刷新日志文件让 MySQL 重新打开新的二进制日志(binlog)文件
📦 便于增量备份备份后产生的数据变更会记录到新的 binlog,方便后续增量恢复
🕒 支持时间点恢复(PITR)结合 mysqlbinlog 工具,可实现精确到秒的恢复
🧩 逻辑分割备份点清晰划分“这次备份包含哪些变更,之后又有哪些”

🧠 补充建议:

如果你要做更专业的备份策略,通常还会结合以下操作:

  • 定期做全量备份(如每天或每周,配合 --flush-logs
  • 持续备份 binlog(用于增量恢复)
  • 使用 mysqlbackup(官方企业版工具)或 xtrabackup(Percona 工具)做物理备份(对大型数据库更高效)

但在使用 mysqldump + --flush-logs 的轻量级方案中,这个选项已经能显著提升备份的可恢复性与管理性。


http://www.xdnf.cn/news/19498.html

相关文章:

  • 解析简历重难点与面试回答要点
  • 【开题答辩全过程】以 健身爱好者饮食管理小程序为例,包含答辩的问题和答案
  • LeetCode82删除排序链表中的重复元素 II
  • 力扣hot100 | 堆 | 215. 数组中的第K个最大元素、347. 前 K 个高频元素、128. 最长连续序列
  • 《架构师手记:SpringCloud整合Nacos实战·一》
  • Transformer的并行计算与长序列处理瓶颈总结
  • 可编辑115页PPT | 某纸制品制造企业数字化转型战略规划项目建议书
  • 【实验protocol分享】了解流式细胞术
  • 串口通讯个人见解
  • 软考中级【网络工程师】第6版教材 第4章 无线通信网 (下)
  • matlab扫雷小游戏
  • 艾莉丝努力练剑的创作纪念日:星河初启,牧梦长空
  • 企业级主流日志系统架构对比ELKK Stack -Grafana Stack
  • pyside6小项目:进制转换器
  • 【OpenFeign】基础使用
  • Kubernetes一网络组件概述
  • Java比较器
  • 如何在 vscode 上用 git 将项目 push 到远程仓库 and 常用Git 命令
  • 剧本杀小程序系统开发:重塑社交娱乐新生态
  • 【开题答辩全过程】以 基于Spring Boot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案
  • 神经网络1——sklearn的简单实现
  • leetcode笔记
  • 20.29 QLoRA适配器实战:24GB显卡轻松微调650亿参数大模型
  • 堡垒机(跳板机)入门指南:构建更安全的多服务器运维架构
  • LINUX 91 SHELL:删除空文件夹 计数
  • HCIP-Datacom Core Technology V1.0_7 BGP基础
  • (纯新手教学)计算机视觉(opencv)实战十二——模板匹配(cv2.matchTemplate)
  • SpringAI模型评估
  • 刀片电池 vs 三元锂:家庭用车选谁更长寿?
  • 海康相机开发---HCNetSDK