摘要
本文介绍了MySQL的Binlog日志,及常用查询命令,以及如何利用它来对数据库的删除操作进行回滚,让我们开始。
常用sql命令
-- 查看 binlog 日志是否打开
-- log_bin 表示是否开启 binlog
-- log_bin_basename 表示的是 binlog 所在的文件夹
-- log_bin_index 表示的是 binlog 的索引文件,我们可以在其中找到所有的 binlog 日志
-- log_bin_trust_function_creators 控制是否信任存储函数创建者,以允许它们在启用了二进制日志的服务器上执行不安全的语句。
-- log_bin_use_v1_row_events 是否使用基于行的复制(Row-Based Replication, RBR)的旧版本(v1)事件格式。
-- rds_warn_sql_log_bin 这个参数在Amazon RDS(Relational Database Service)环境中使用,用于控制是否在执行SQL语句时发出关于二进制日志的警告。
-- sql_log_bin 用于主从复制,这个参数关闭后,主库的改动不会记录到 binlog,不会复制到从库
show variables like'%log_bin%';
-- 查看 binlog 类型。
-- binlog 记录的类型有三种,一种是 STATEMENT,一种是 ROW,一种是 MIXED。
-- STATEMENT 类型记录的是执行 SQL 语句的内容,比如 INSERT、UPDATE、DELETE 等语句本身。
-- ROW 类型记录的是执行 SQL 语句前后的变更,会包含变更前后完整数据行的内容。
-- MIXED 则会根据具体情况自动选择 STATEMENT 或 ROW 类型来记录数据更改。
SHOW VARIABLES LIKE'binlog_format';
-- 查看全部的 binlog 文件
show binary logs;
show master logs;
show master status;
-- 查询 binlog 日志
show binlog events in'mysql-bin.208032';
日志详情表字段解释
wins环境的mysql数据删除及恢复
Windows系统下安装的MySQL 8.0默认会开启binlog日志功能,用于记录数据库的所有更改操作,包括更、删、改等操作。
查看配置文件:
查看是否已开启binlog日志:show variables like '%log_bin%';
查看日志格式:SHOW VARIABLES LIKE 'binlog_format';
新建数据库test1,新建表table1,随便加几条模拟数据,然后删除表 drop table table1;
查看binlog日志,通常在最后面:show master logs;
查看日志详情,通常在最后面:
show binlog events in 'Windows-2025KYO-bin.000008';
可以看到从建表到删除有log记录,如果想恢复之前的状态就找到范围编号,通常在最后面:这里是479到1807
设法通过binlog恢复数据:
从479->1807恢复
进入data文件夹,执行cmd 命令:
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlbinlog" --start-position=479 --stop-position=1807 --database=test1 Windows-2025KYO-bin.000008 | "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql" -u root -p
这个时候刷新数据库,表和数据回来了
总结
以上我们了解了MySQL的Binlog日志,以及如何利用它恢复删除操作,当然这只是wins里的操作,后续分享linux里的操作。
关注公众号:咖啡Beans
在这里,我们专注于软件技术的交流与成长,分享开发心得与笔记,涵盖编程、AI、资讯、面试等多个领域。无论是前沿科技的探索,还是实用技巧的总结,我们都致力于为大家呈现有价值的内容。期待与你共同进步,开启技术之旅。