误删数据之后怎么办
误删行
- 使用delete之后,用Flashback工具闪回,(前提:binlog_format= row和binlog_row_image=Full)
单事务的情况:
- insert的语句,对应的binlog event类型是write_rows event改成Delete_rows event
- delete的语句,把Delete_rows event改成write_rows event
- update的语句,binlog记录修改前和修改后的语句,两者调换即可
建议在备库上执行回滚操作,确认没问题,再到主库上执行
提前预防:在参数sql_safe_update=on,(uodate和delete的时候没where 条件会报错)
误删表/库
- 需要定期全量备份,和实时binlog增量备份日志
搭建延迟复制的备库
- 也就是通过CHANGE MASTER TO MASTER_DELAY =N n表示和主库有多少秒的延迟,这样子主库出现误操作时,到备库执行stop slave,然后进行这个几秒的回滚即可,这样就速度比较快的进行数据回滚
预防误删库/表的操作
- 账号分离,避免写错命令,平时给开发只有DML权限,没有drop和truncate的权限,运维平时也是
- 操作规范:删除表之前先进行表改名的操作,观察不影响业务再删
rm删除数据
- 如果是集群情况,就比较简单,主备切换,然后再恢复,如果是单实例的话, 就看看备份文件吧.