数据库不小心删除或者表不小心删除,通过mysql恢复的话需要确保删除前是mysql是开启binlog。
具体步骤:
1.查询binlog状态以及位置。
在/etc/my.cfg查看binlog开启状态:
cat /etc/my.cnf
可以看到binlog开始状态是开启的。
2. mysql查询执行的binlog文件。
目标文件是mysql-bin.000053
3.利用mysqlbinlog转化文件格式,获取想要恢复的位置。
cd /usr/local/mysql/bin
mysqlbinlog 执行文件在以上路径
mysql-bin.000053在/usr/local/mysql/var中。
执行,test需要恢复的数据库
mysqlbinlog --no-defaults --base64-output='decode-rows' -d test -v mysql-bin.000053 > /home/test
4.在导出的test文件中查找需要回退的位置。
选取位置为817759979,由于我是整个数据库出现的数据混乱以及替换,全部回退。
5.恢复数据。
删除原有的数据库(以防万一,提前做好备份)。
./mysqlbinlog -d test --stop-position=817759979 /usr/local/mysql/var/mysql-bin.000053 | mysql -uroot -ppasswd
命令执行完成就已经恢复到需要恢复的指定点。