千家信息网

使用binlog恢复MySQL数据流程解析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,下文主要给大家带来使用binlog恢复MySQL数据流程解析,希望使用binlog恢复MySQL数据流程解析能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧 。
千家信息网最后更新 2026年11月01日使用binlog恢复MySQL数据流程解析

下文主要给大家带来使用binlog恢复MySQL数据流程解析,希望使用binlog恢复MySQL数据流程解析能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧 。

通过了解 binlog 日志的相关配置,简单掌握通过 binlog 对数据库进行数据恢复操作;

mysql 日志文件

任何成熟软件都会有一套成熟的日志系统,当软件出现问题时,这些日志就是查询问题来源的宝库。同样,mysql 也不例外,也会有一系列日志记录 mysql 的运行状态。

mysql 主要有以下几种日志:

  • 错误日志:记录 mysql 运行过程中的错误信息

  • 一般查询日志:记录mysql正在运行的语句,包括查询、修改、更新等的每条 sql

  • 慢查询日志:记录查询比较耗时的 SQL 语句

  • binlog 日志:记录数据修改记录,包括创建表、数据更新等

这些日志均需要在 my.cnf 文件进行配置,如果不知道 mysql 的配置文件路径,可以使用 mysql 命令进行查找,

mysql --verbose --help|grep -A 1 'Default options' #该命令会罗列出my.cnf 顺序查找的路径。

binlog 日志

binlog 就是 binary log,二进制日志文件,记录所有数据库更新语句,包括表更新和记录更新,即数据操纵语言(DML),binlog 主要用于数据恢复和配置主从复制等;

  • 数据恢复:当数据库误删或者发生不可描述的事情时,可以通过 binlog 恢复到某个时间点的数据。

  • 主从复制:当有数据库更新之后,主库通过 binlog 记录并通知从库进行更新,从而保证主从数据库数据一致;

mysql 按照功能分为服务层模块和存储引擎层模块,服务层负责客户端连接、SQL 语句处理优化等操作,存储引擎层负责数据的存储和查询;binlog 属于服务层模块的日志,即引擎无关性,所有数据引擎的数据更改都会记录binlog日志。当数据库发生崩溃时,如果使用InnoDB 引擎,binlog 日志还可以检验 InnoDB 的 redo 日志的 commit 情况。

binlog 日志开启

日志开启方式:

1、添加配置

log_bin=ONlog_bin_basename=/path/bin-loglog_bin_index=/path/bin-log.index

2、仅仅设置log-bin参数

 log-bin=/path/bin-log

当开启 binlog 日志之后,mysql 会创建一个 log_bin_index 指定的 .index 文件和多个二进制日志文件,index 中按顺序记录了mysql使用的所有 binlog 文件。binlog 日志则会以指定的名称(或默认值) 加自增的数字作为后缀,ex:bin-log.000001,当发生下述三种情况时,binlog 日志便会进行重建:

文件大小达到 max_binlog_size 参数的值
执行 flush logs 命令
重启 mysql 服务

binlog 日志格式

通过参数 binlog_format 参数的值,可以设置 binlog 的格式,可选值有 statement、row、mixed

  * statement 格式:记录数据库执行的原始 SQL 语句  * row 格式:记录具体的行的修改,这个为目前默认值  * mixed 格式:因为上边两种格式各有优缺点,所以就出现了 mixed 格式

binlog 日志查看工具:mysqlbinlog

因为 binlog 是二进制文件,不能像其他文件一样,直接打开查看。但 mysql 提供了binlog 查看工具 mysqlbinlog,可以解析二进制文件。当然不同格式的日志解析结果是不一样的;

1. statement 格式日志,执行 mysqlbinlog  /path/bin-log.000001,可以直接看到原始执行的 SQL 语句2. row格式日志,则可读性没有那么好,但仍可通过参数使文档更加可读 mysqlbinlog -v  /path/bin-log.000001

mysqlbinlog两对非常重要的参数

  1. --start-datetime  --stop-datetime 解析某一个时间段内的binlog;  2. --start-position  --stop-position   解析在两个position之间的binlog;

使用 binlog 恢复数据:

使用 binlog 恢复数据,本质上就是通过 binlog 找到所有 DML 操作,去掉错误的 SQL 语句,然后重走一遍长征路,就可以将数据恢复;

线下实操:

创建数据表并插入初始值

    CREATE TABLE `users` (              `id` int(11) unsigned NOT NULL AUTO_INCREMENT,              `name` varchar(255) DEFAULT NULL,              `age` int(8) DEFAULT NULL,              PRIMARY KEY (`id`)     ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;     INSERT INTO `users` (`id`, `name`, `age`)        VALUES            (null, '姓名一', 5);

找到上一次全量备份的数据库和binlog的position(ps:当然也可以通过时间进行恢复)。此处以目前状态作为备份的初始值,

    mysqldump -uroot -p T > /path/xxx.sql;   # 备份数据库    show master status;   # 查看当前的position位置,此时值为154

插入多条记录

  INSERT INTO `users` (`id`, `name`, `age`)  VALUES     (null, '姓名二', 13),     (null, '姓名三', 14),     (null, '姓名四', 15),     (null, '姓名五', 16),     (null, '姓名六', 17);

进行误操作,并且在误操作之后又插入几条数据

update users set age = 5; INSERT INTO `users` (`id`, `name`, `age`) VALUES    (null, '姓名七', 16),    (null, '姓名八', 18);

发现误操作之后,进行数据恢复,首先停止 mysql 对外的服务,利用备份数据恢复到上次数据;

通过 mysqlbinlog 命令对二进制文件进行分析,分析发现

    误操作发生在position为706位置,且上次正常操作的结束位置在513    在1152到结尾位置有正常执行的SQL执行

通过 mysqlbinlog 命令从 binlog 日志中导出可执行的 SQL 文件,并将数据导入到mysql

 mysqlbinlog --start-position=154  --stop-position=513  bin-log.000001 > /path/bak.sql; mysql -uroot -p < /path/bak.sql;

跳过错误的更新语句,再通过步骤7的逻辑把后续正常语句重新跑一遍,完成数据恢复工作

小结

无论什么时间,数据库发生崩溃都会令人愁眉紧锁,心烦意乱。binlog可以说是在各种情况下,数据库崩溃、数据丢失之后的一粒后悔药,本文通过线下环境,简单的对数据库进行了一次数据恢复实验,如有不对,还请指教

对于以上关于使用binlog恢复MySQL数据流程解析,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

数据 日志 文件 数据库 格式 语句 姓名 数据恢复 更新 参数 查询 二进制 命令 引擎 服务 配置 位置 备份 时间 流程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡豆 哈尔滨大商圈互联网科技有限公司 互联网科技公司华为 互联网科技行业发展 九亚互联网科技 互联网金融 科技创新 科技类的互联网平台 济南和联互联网科技有限公司 成都玖崟互联网科技有限公司乐商圈怎么样 剑昆互联网络科技有限公司临桂 团飞科技与伯堂互联网服务平台 互联网科技与管理 燊美集互联网科技有限公司 互联网科技股为什么大涨 互联网科技数字货币 工业互联网科技成果转化 马化腾互联网科技教学 杭州科技互联网公司有哪些 互联网的黑科技实验室 科技美学互联网 艺术 广州万易互联网科技有限公司 科技创新与互联网经济 上海卓越科技 互联网 卫星互联网科技股票 深圳前海聚择互联网科技有限公司 互联网企业和科技型企业 搜狐科技互联网 互联网在线教育科技创业 科技互联网经济论坛 绵阳真晨互联网科技有限公司
0