binlog的格式
MySQL8.0的binlog(二进制日志)支持三种格式:statement、row、mixed,分别用于记录数据库的变更操作,适用于主从复制、数据恢复和审计等场景。MySQL8.0默认采用row格式(MySQL5.7及之前默认为statement)。
三种日志格式的主要区别如下:
- statement:每一条会修改数据的SQL语句都会记录在binlog中,不记录具体的数据变化,而是记录SQL语句的上下文信息 ,如执行时间、用户、数据库、表等。
- row:每一条会修改数据的SQL语句都会记录在binlog中,不记录SQL语句本身,而是记录每一行数据的变化,如插入、更新、删除等。
- mixed:根据SQL语句的类型和特性,自动选择statement或row格式来记录binlog,以达到最佳的效果。
binlog的全量恢复
使用示例
1、查看日志内容。MySQL8.0默认采用row格式,row格式不记录SQL语句,只记录每一行数据的变化。

2、使用管道操作符将日志内容导入数据库。

binlog的部分恢复
binlog进行部分日志恢复时,需要查看日志内容确定恢复区间,所以需要在MySQL配置文件的[mysqld]一节中将日志格式配置项binlog_format的值修改为mixed,在日志中记录SQL语句。

使用示例
1、查看日志内容。mixed格式会记录每一条库表结构与数据修改的SQL语句。

2、提取部分日志内容导入数据库,提取的部分内容可以通过以下两种方式指定。
2.1、使用−−start−position、−−stop−position,通过开始位置与结束位置指定提取区间,position可查看日志中的at语句。

2.2、使用−−start−datetime、−−stop−datetime,通过日志开始时间与结束时间指定提取区间。
