可以使用log-bin日志完成数据恢复
bin日志里面,记录的都是sql语句。如果数据丢失,再把里面的sql语句拿出来执行,就实现数据恢复。
说明:开启二进制日志之后,修改或者写的SQL语句,才会记录到bin日志里面。曾经的修改或者写的SQL语句,都已经是过眼云烟!
1)产生二进制日志数据:执行修改或者写的SQL语句
更新:
写入:
2)查看二进制日志内容:工具应用
找到查看工具:
学习使用工具:
直接打开就可以了:
/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/filename.000001
都是一些二进制内容!!!
找到工具的参数,进行帮助:
–base64-output :这个参数有值!
使用一下:
/usr/local/mysql/bin/mysqlbinlog --base64-output=decode-rows /usr/local/mysql/data/filename.000001
单独的使用–base64-output=decode-rows看起来,还是吃力!!
现在加上-v参数:
3)查看二进制日志内容:命令应用
show binlog events
查看指定的二进制文件:
show binlog events in '二进制文件文件名'
说明:这个是5.7版本升级之后的效果,5.5版本的效果不是这个样子!
5.7版本的查看这些就已经非常的难了,所有我们的数据恢复高级工程师的待遇是非常的好的。
4)模拟数据消失:
删除innodb表:
5)确定恢复手段:
高级工程师:
发现,你们曾经做过备份:
发现,开启了二进制日志:
备份的文件,直接还原就可以使用了。
二进制日志,怎么去使用!
6)查看二进制日志与show binlog events确定位置:
使用工具查看二进制文件的帮助信息:
我们在二进制日志里面看见时间与位置,所有可以使用这二个进行恢复!
选择哪一个进行恢复比较好:
位置是能够确定每一条sql语句。时间是一个范围,一秒钟,有没有可能执行N多条SQL语句,我们的数据只是掉这一秒之中一半。
确定要恢复的数据位置:
–start-position :开始位置
–stop-position :结束位置
找到这二个参数,需要的值:
分析日志文件:
确定开始位置是:219;
确定结束位置是:822;
使用命令查看位置,确定一下值:
确定之后,我们的位置填写是正确的!
7)恢复表数据:
还原备份的文件:
查看数据库:
恢复二进制文件里面:
/usr/local/mysql/bin/mysqlbinlog --start-position=219 --stop-position=822 /usr/local/mysql/data/filename.000001 | /usr/local/mysql/bin/mysql -u root -p test
mysqlbinlog只是查出数据,必需要使用mysql还原工具,对数据进行恢复!
查看数据库: