背景: 测试环境,不小心drop表,删除数据了。怎么恢复?
大概步骤:根据undolog日志进行恢复。
前提:校验是否开启了log_bin日志,首先进入mysql命令,查看binlog日志是否已经开启。输入命令show variables like 'log_bin';如下图所示,如果没有开启binlog那么恭喜你,恢复数据就增加难度了。
1、show variables like 'log_bin' 查看日志是否开启
2、show master logs; 查看日志列表
3、show master status;查看最后一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值
步骤:
查看mysql
1.mysql --help | grep 'Default options' -A 1
、
2.找到mysql-bing.*** 日志目录
使用命令,找到log日志目录位置:find / -name mysql-bin.000049
3.恢复日志
切换到mysqlbinlog命令目录
6、恢复数据的方式
/*时间恢复*/
mysqlbinlog --no-defaults --start-datetime="2021-01-12 10:10:00" --stop-datetime="2021-01-12 10:20:00" /export/data/mysql/data/mysql-bin.000049 >test-back-10.sql
或者下面的方式,start-datetime有时候不好使
mysqlbinlog --no-defaults --start-date='2021-01-12 10:18:00' --stop-date='2021-01-12 10:20:00' /export/data/mysql/data/mysql-bin.000049 > test-back-11.sql
/*位置恢复*/
mysqlbinlog --no-defaults --stop-position="323223" --start-position="232223" /export/data/mysql/data/mysql-bin.000049 > test-back-13.sql
参考:
https://www.cnblogs.com/jpfss/p/11112283.html
https://www.jianshu.com/p/346de5089ccd