数据库中表被误删除 恢复方法
首先分析表是否重要
1 重要的情况处理
1 停服务,挂维护页面,保证数据一致性
2 找一个新的数据库做恢复测试,同时对故障库进行备份
3 恢复前日备份,恢复完毕后 拷贝 binlog过来
4 查找binlog位置,获取故障前一刻binlog位置 追binlog
5 启动测试
6 对外启动服务
要确保我们有之前的备份,要已经了开启binlog日志
查看当前使用的binlog日志
show master status;
先手动切割出一份binlog让所有数据写到新的binlog上面
mysqladmin -uroot -p flush-log
拷贝离问题点最近的binlog日志
cp /application/mysql/data/mysql.00000x /tmp/
查看position号,
全备的时候加了master-data=2 在备份中会有POS号,表示这次备份到这个POS号结束
把binlog二进制文件导出成SQL语句,把错误语句排除
从备份文件中找到最后POS号,在binlog备份时,从此POS号开始
mysqlbinlog --skip-gtids --start-position=194–stop-position=1519 -d he /data/binlog/mysql-bin.000006 >/backup/bin.sql
-d 只导出指定库的SQL语句
如果开启了GTID 则必须要加上–skip-gtids参数
或
找出并删除错误语句
mysqlbinlog --skip-gtids -d he /data/binlog/mysql-bin.000006 >/backup/bin.sql
vim bin.sql
把出问题的sql语句删除掉
恢复最近一次备份
mysql -uroot -p he < /tmp/all_bak.sql
把修改好的数据导入
mysql>source bin.sql