您好,登录后才能下订单哦!
这篇文章主要讲解了“误删数据库怎么办”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“误删数据库怎么办”吧!
一般情况如果在大公司删库删表这种情况基本上不会遇到,毕竟给咱们开发的账号不会开这么高的权限。但是在小公司的话就不一定,没这么规范,要是咱们手抖一下,不小心删错了咋办?
比如你delete错了,把别的行给删了。然后如果你的数据库binlog配置是
binlog_format = row 和 binlog_row_image = FULL
比如你的delete语句对应的binlog event 类型是
Delete_rows event
然后将它改成
Write_rows event;
把修改的binlog拿回原库重放就行了。
如果是你update的话,那binlog里面也是记录了数据修改前和修改后的值的,你只要对调这两行数据的位置就行。
推荐使用Flashback工具,工具的原理就是我上面说的那样。
还有这种操作不建议在主库上执行,一般情况是备份一个库,或者在哪个从库上执行这些操作,确认没问题的然后再回复主库确保主库的安全。
但是有些哥们可能比较猛,他可能是drop或者truncate哪个table了或者是drop database了。这种情况下binlog记得只会是一个drop/truncate语句,所以用上面的方法是搞不定的。
咋办呢,找之前的全量备份,没得话...你懂得
找到之前的全量备份然后配合增量的日志恢复。流程就是:
找到最近一次的全量备份。比如是2019-3-25 晚上11点
通过这个备份恢复出一个临时库
在日志备份里面找到2019-3-25 晚上11点之后的日志
将这些日志除了误删除的那个语句全部应用到临时库上
第4条这个操作,如果你的数据库实例用了GTID模式,就先
set gtid_next=(你的删除语句的GTID);begin;commit;
如果没用这个模式,那只能是应用到这个删除语句之前先用-stop-position参数执行到这个语句之前,然后-start-position开始这个语句之后的执行。
我们做主从备份,为了防止误删数据导致的问题,可以搞一个延迟一小时的从库,就比如我们是一个星期备份一次的,那我们如果在第七天出了什么错,需要恢复的话,那得跑多久啊!所以弄一个特殊的备库,通过
CHANGE MASTER TO MASTER_DELAY = N
来设置这个备库和主库有N秒的延迟,这样发现主库误操作了,马上再这个备库上执行 stop slave,然后通过上面的方法跳过误删除的命令,恢复数据!
感谢各位的阅读,以上就是“误删数据库怎么办”的内容了,经过本文的学习后,相信大家对误删数据库怎么办这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。