创建测试数据
使用 mysqldump 实现 MySQL 5.7 基于时间点的恢复_第1张图片
全备数据库

mysqldump --single-transaction --quick --flush-logs --master-data=2 --all-databases --triggers --routines --events --set-gtid-purged=off> backup.sql

再新增测试数据
使用 mysqldump 实现 MySQL 5.7 基于时间点的恢复_第2张图片
删除表中所有数据
使用 mysqldump 实现 MySQL 5.7 基于时间点的恢复_第3张图片
确认最近一次备份后的二进制日志保存文件
使用 mysqldump 实现 MySQL 5.7 基于时间点的恢复_第4张图片
使用 mysqldump 实现 MySQL 5.7 基于时间点的恢复_第5张图片

确认删除数据的时间点

mysqlbinlog --base64-output=decode-rows -v mysql01-bin.000011 > result.sql
vim result.sql 

使用 mysqldump 实现 MySQL 5.7 基于时间点的恢复_第6张图片
还原数据库

mysql < backup.sql 

检查表中的数据,说明还原成功
使用 mysqldump 实现 MySQL 5.7 基于时间点的恢复_第7张图片
恢复删除的数据

mysqlbinlog --stop-datetime="2018-09-06 16:42:36" --skip-gtids mysql01-bin.000011 | mysql

检查表中的数据,说明已经恢复成功
使用 mysqldump 实现 MySQL 5.7 基于时间点的恢复_第8张图片