MySQL数据“误”删“攻防”战

本文讨论了如何在MySQL环境下防止数据被错误删除或更新,并提供了多种应对措施,包括设置sql_safe_update参数、在driver/proxy层面上进行过滤、实现超时自动kill以及流程自动/规范化等。同时强调了定期备份和创建延迟复制的重要性。

相信各位线上都可能遇到过或者听到过数据被应用程序“误”删,可能因为拼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

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

转载于:https://my.oschina.net/sansom/blog/176457

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值