Mysql - 使用binLog恢复数据简单实例

前言

通过这边文章你能收获:

没有接触过mysql使用binLog恢复数据的朋友们可以对如何使用binLog恢复数据
有个入门级的认识

一、实际case

目前存在entity_storage_0库以及库中的表entity_detail,
1、张三执行插入指令插入了一条数据
2、李四以为是测试库,把entity_detail表中的数据清空了
3、现在需要恢复张三插入的数据,如何恢复?

二、确定思路

step1、确定要恢复的数据范围
step2、确定恢复数据的binLog文件名
step3、找出binLog中对应数据的记录信息
step4、执行恢复指令

三、相关指令

show MASTER status;

flush log

show BINLOG EVENTS in '你的binLog文件名';

./mysqlbinlog --start-position 起始position  --stop-position 结束position -d 数据库名称 /var/lib/mysql/目标binLog文件 | mysql -u数据用户名-p数据库密码 目标数据库名称

四、开始应用

套用基本思路中的模型(通常我们会在回复数据前在客户端使用flush log指令刷一下日志文件)

1、确认需恢复的数据范围

张三插入的那条记录

2、确定恢复数据的binLog文件名

在mysql客户端使用show master status指令,查看当前的binLog文件名(由于是测试使用,且没有flush log,所以当前的file就是我们的目标binLog文件,如果是mysql宕机或者其他场景,那么需要根据实际情况确认文件)

image.png
3、找出binLog中对应数据的记录信息

在mysql客户端使用show BINLOG EVENTS in 'binlog.000006';指令,分析出需要执行的end_log_pos

image.png
4、执行恢复指令

在mysql的bin目录下,执行指令./mysqlbinlog --start-position 330 --stop-position 606 -d entity_storage_0 /var/lib/mysql/binlog.000006 | mysql -uroot -p111111 entity_storage_0

image.png

然后去数据库查看数据,可以发现数据正常恢复.

image.png

至此,入门小实例done!

参考资料

mysql官网 - https://dev.mysql.com/doc/refman/8.0/en/point-in-time-recovery-binlog.html

你可能感兴趣的:(Mysql - 使用binLog恢复数据简单实例)