mysql8从binlog恢复数据
mysqlbinlog官方文档
https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html
数据恢复
通过mysqlbinlog -v binlog.000001打印binlog信息,找到删库或者删表的位置
mysqlbinlog -v binlog.000001
指定位置范围
mysqlbinlog -v binlog.000001 --start-position=152 --stop-position=3154151
指定时间范围
mysqlbinlog -v binlog.000001 --start-datetime="2020-10-24 00:00:00" --stop-datetime="2020-10-24 00:00:00"
上面两种都可以定位范围,查找到创建表的位置,到删除表之前,将之前的表删除。
数据恢复命令
mysqlbinlog binlog.000001 --start-position=152 --stop-position=3154151 -v | mysql -uroot -p123456
这个操作相当于将之前从创建表到误操作之前的数据全部执行一遍,恢复到之前的数据,以最近的备份数据的备份点来作为起始点,drop操作的前一个操作为结束点。
注意
1、未免新数据对已有的数据产生影响,第一时间应停止服务,避免数据库操作
2、–start-position和–stop-position代表的是at所标识的数字,通过此数字定位恢复位置
3、必要时需做好备份,将数据库的表都删除,恢复到指定时间点,因为是将之前的所有操作操作一遍,难免会有主键冲突等问题
4、按理来说,就算有新数据,将表删除之后,跳过两次drop操作,即可恢复原本数据(并没有尝试)
5、数据库每一次重启都会产生一个binlog.0000的日志,找好对应的日志,即可