二十四、二进制日志截取与恢复

截取二进制日志

1、按照位置截取二进制日志

#使用>导出
$ mysqlbinlog --start-position=219 --stop-position=335 mysql-bin.000004 >/tmp/a.sql

2、按照时间截取二进制日志

#使用-r参数导出
$ mysqlbinlog \
--start-datetime="2021-03-30 17:14:15" \
--stop-datetime='2021-03-30 17:15:15' \
mysql-bin.000004 -r /tmp/b.sql

通过binlog恢复数据

只能作为辅助修复方法,如果数据太多日志数量也就越多不方便查找。

#模拟数据
mysql> create database haoge charset utf8mb4;
mysql> use haoge;
mysql> create table t1(id int);
mysql> insert into t1 values(1);
mysql> commit;

#模拟故障 
mysql> drop database haoge;

#确认使用的日志文件
mysql> show master status;   

#查看事件
mysql> show binlog events in 'mysql-bin.000004'; 

#如果事件太多可导出结果进行查找
$ mysql -e  "show binlog events in 'mysql-bin.000004'; "   > /tmp/mysql-bin.txt

#找到起点和终点,进行截取
$ mysqlbinlog --start-position=823 --stop-position=1420 /data/binlog/mysql-bin.000004 >/tmp/bin.sql

#恢复binlog
mysql> set sql_log_bin=0;   #临时关闭二进制日志记录以防恢复时产生的新日志
mysql> source /tmp/bin.sql
mysql> set sql_log_bin=1;  

学习来自:老男孩深标DBA课程 第六章 日志管理

posted @ 2021-03-14 11:27  努力吧阿团  阅读(103)  评论(0编辑  收藏  举报