当前位置: 首页 > news >正文

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设置的小一些,限制影响范围)



本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1325025,如需转载请自行联系原作者



相关文章:

  • 2018年OpenStack用户调查报告出炉:Kubernetes仍居首
  • Entity相互关系
  • 记一次程序员在办公室里的“撕逼”经历
  • Oracle常用的数值函数,日期函数
  • mac flutter 环境搭建
  • Centos6.6升级Python与安装ipython、pip小结
  • DVWA SQL Injection LOW
  • Apache用户认证;域名跳转;Apache访问日志
  • javascript 前端模版初探
  • 阿里云重磅发布RDS for SQL Server AlwaysOn集群版
  • GlusterFS基本安装
  • Omi入坑指南 First scene 初步认识
  • JPDA 架构研究10 - Agent利用环境指针访问VM(局部变量管理篇)
  • React 2019 年路线图发布!Hooks 明年一季度上线
  • 基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 敏捷并行开发方法
  • 《Java编程思想》读书笔记-对象导论
  • Angular4 模板式表单用法以及验证
  • const let
  • ES6之路之模块详解
  • gf框架之分页模块(五) - 自定义分页
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HomeBrew常规使用教程
  • java8 Stream Pipelines 浅析
  • javascript数组去重/查找/插入/删除
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • PHP那些事儿
  • Python_OOP
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 二维平面内的碰撞检测【一】
  • 仿天猫超市收藏抛物线动画工具库
  • 构造函数(constructor)与原型链(prototype)关系
  • 关于extract.autodesk.io的一些说明
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 我这样减少了26.5M Java内存!
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​flutter 代码混淆
  • (C)一些题4
  • (差分)胡桃爱原石
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (三)mysql_MYSQL(三)
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)负载均衡,回话保持,cookie
  • (转载)利用webkit抓取动态网页和链接
  • ***测试-HTTP方法
  • ./configure,make,make install的作用(转)
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET CLR基本术语
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布