binlog日志格式
通过参数 binlog_format 参数的值,可以设置 binlog 的格式,可选值有 statement、row、mixed
statement 格式:记录数据库执行的原始 SQL 语句
row 格式:记录具体的行的修改,这个为目前默认值
mixed 格式:因为上边两种格式各有优缺点,所以就出现了 mixed 格式
查看当前日志格式
show variables like 'binlog_format';
查询binlog 存放位置
show VARIABLES like 'datadir';
导出binlog日志,用于分析和排查sql语句
mysqlbinlog --no-defaults --base64-output=decode-rows -v -v -v ./mysql-bin.000004 > ./record.txt
cat ./record.txt |awk -F '[/*]+' '{print $1}' >./record1.txt
查找创建 knowledge的位置
3662923
找到误删语句之前的position
8323053
导出需要恢复的sql文件
这里注意不要加 base64-output=decode-rows 参数
这是我们解析 binlog 日志时使用的命令,我们可以很直观的分析 binlog 日志。
但是我们想要恢复到数据库中的时候,不能使用--base64-output=decode-rows 参数,否则是无法恢复到数据库的。
mysqlbinlog --no-defaults -v \
--start-position "3662923" --stop-position "8323053" \
--database knowledge mysql-bin.000004 \
> /var/lib/mysql/backup05.sql;
删除knowledge 数据库
drop database knowledge;
使用sql进行恢复
mysql -u root -p < /var/lib/mysql/backup05.sql