为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL数据“误”删“***”战

标签:
MySQL

相信各位线上都可能遇到过或者听到过数据被应用程序“误”删,可能因为拼SQL导致谓词为永真删除或者更新了全部数据?或者虚惊一场?因此,面对这种情况我们要能:

1.“攻”:如何防止这种情况发生

2.“守”:如果发生了怎么办

对于“攻”:

因为我们是MySQL,主要拿MySQL举例:

1.sql_safe_update:当设置为1时

对于update:如果谓词没有索引并且没有limit会被拒绝

对于delete:如果谓词永真或为空,或者谓词没有索引并且没有limit被拒绝

其实这两点对于oltp来说是很有意义的

2.在driver/proxy层面上进行过滤

可以嵌入规则引擎到driver(比如druid)或者proxy(比如cobar)中,这样更灵活,可配置.

3.超时自动kill,对于OLTP来说如果要死就早死早超生,也叫fail fast,如果当真一个大语句update/delete很久产生的后果也是很可怕的,真要是这样还不如直接kill掉(当然更优雅的是上面的方式,直接就根据规则拒绝掉)

4.流程自动/规范化

SQL上线流程,测试环境自动化规范化

对于“守”:

0.定期备份和有效性测试是必须的,这个是底线

1.可以创建延迟复制:

这个方法就很多了,pt-slave-delay/tungsten-replicator/blabla...

2.MySQL Flashback:(需要开启binlog_format=row,其实如果开启ROW模式的话,对于OLTP的应用可以把max_binlog_cache_size设置的小一些,限制影响范围)

http://mysql.taobao.org/index.php/Patch_source_code#Add_flashback_feature_for_mysqlbinlog

各位小伙伴们欢迎补充J

©著作权归作者所有:来自51CTO博客作者MIKE老毕的原创作品,如需转载,请注明出处,否则将追究法律责任

误删mysqlsafeMySQL


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消