MySQL参数sql_safe_updates在生产环境的使用

在应用 BUG或者 DBA误操作的情况下,会发生对全表进行更新:update delete 的情况。MySQL提供 sql_safe_updates 来限制次操作。

set sql_safe_updates = 1;

设置之后,会限制update delete 中不带 where 条件的SQL 执行,较严格。会对已有线上环境带来不利影响。对新系统、应用做严格审核,可以确保不会发生全表更新的问题。

CREATE TABLE working.test01 (id INT NOT NULL AUTO_INCREMENT,NAME VARCHAR(20),age INT,gmt_created DATETIME,PRIMARY KEY(id));

 insert into test01(name,age,gmt_created) values('xiaowang',2,now());
 insert into test01(name,age,gmt_created) values('huahua',5,now()); 
 insert into test01(name,age,gmt_created) values('gougou',9,now()); 
 insert into test01(name,age,gmt_created) values('heihei',12,now()); 
 insert into test01(name,age,gmt_created) values('baibai',134,now()); 

# 过滤字段上没有索引
update
update test01 set name = 'xiaoxiao' where age = 2 ;
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
# 全表更新
update test01 set name = 'xiaoxiao';
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
# 加入limit的更新
update test01 set name = 'xia' limit 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

# 新增索引
create index idx_age on test01(age);

update test01 set name = 'xiaoxiao' where age = 2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

update test01 set name = 'hhh' where age = 9 limit 10;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

alter table test01 drop index idx_age;
create index idx_age_name on test01(age,name);

update test01 set age= 100 where name = 'hhh';
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

update test01 set age= 100 where name = 'hhh' limit 10;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
由此,update 时,在没有 where 条件或者where 后不是索引字段时,必须使用 limit ;在有 where 条件时,为索引字段
时间: 2024-11-28 22:00:59

MySQL参数sql_safe_updates在生产环境的使用的相关文章

MySQL数据库生产环境的维护工作总结的经验

 从过往MySQL数据库生产环境的维护工作中,总结的一些小经验和知识,未必有多深奥,但是对我们消除隐患,确保MySQL数据库生产环境四个9的作用非常有效之一的手段,运维人员要非常注意细节,尽量减低故障发生的概率. (一) DML语句书写建议 (1). DML语句不允许出现@number方式替代字段名称 不合理的写法: UPDATE table_name SET @1=NOW() WHERE @2=1; 正确的写法: UPDATE table_name SET column_name1=NOW()

生产环境使用 pt-table-checksum 检查MySQL数据一致性

公司数据中心从托管机房迁移到阿里云,需要对mysql迁移(Replication)后的数据一致性进行校验,但又不能对生产环境使用造成影响,pt-table-checksum 成为了绝佳也是唯一的检查工具. pt-table-checksum 是 Percona-Toolkit 的组件之一,用于检测MySQL主.从库的数据是否一致.其原理是在主库执行基于statement的sql语句来生成主库数据块的checksum,把相同的sql语句传递到从库执行,并在从库上计算相同数据块的checksum,最

mysql双主问题-紧急求助:生产环境,mysql双主结构,备机同步DDL语句成功,但是同步DML语句失败

问题描述 紧急求助:生产环境,mysql双主结构,备机同步DDL语句成功,但是同步DML语句失败 问题描述:双主架构环境,最近在主机上执行DDL语句能成功同步到备机,但是在主机上执行DML语句失败,请各位帮忙看一下,谢谢! Linux版本: Red Hat Enterprise Linux Server release 5.4 (Tikanga) mysql版本 +----------------------------+ | @@version | +---------------------

《构建高可用Linux服务器 第3版》—— 3.6 生产环境下的Shell脚本分类

3.6 生产环境下的Shell脚本分类 生产环境下的Shell脚本作用还是挺多的,这里根据3.1节所介绍的日常工作中Shell脚本的作用,将生产环境下的Shell脚本分为备份类.监控类.统计类.开发类和自动化类.前面3类从字面意义上看比较容易理解,后面的我稍微解释一下:开发类脚本是用Shell来配合PHP做一些非系统类的管理工作,比如SVN的发布程序等:而自动化类脚本则利用Shell自动来替我们做一些繁琐的工作,比如自动生成及分配密码给开发组的用户或自动安装LNMP环境等.下面我会就这些分类举一

mysql参数调优

为何要调整参数 不同服务器之间的配置.性能不一样 不同业务场景对数据的需求不一样 Mysql的默认参数只是个参考值,并不适合所有的应用场景 优化之前我们需要知道什么 服务器相关的配置 服务器型号 操作系统版本 内核版本 磁盘存储介质(sas sata ssd) 业务相关的情况 读多写少,读少写多 业务数据增长量 mysql相关的配置 服务器上需要关注那些 硬件情况 cpu(几核.超线程) 内存 磁盘(容量.性能) 操作系统版本(是否为稳定版) CPU.网卡节电模式(建议数据库应用的服务器,关闭节

生产环境中Docker的持久化存储模式

本文讲的是生产环境中Docker的持久化存储模式[编者的话]在生产环境中使用Docker实现持久化存储一直是业界的热点问题,本文从到配置文件.机密材料.数据库.共享数据等方面做了些探讨,文中也谈到了一些需要避免的问题以及尽量将应用设计为无状态服务的原则. 一般看法认为容器对于无状态的应用程序是很好的,但是不适合有持久化数据的有状态应用.如果这是真的,这并不是因为技术不到位,而是因为管理持久化数据和有状态应用程序的模式并不总是为人们所熟知.你面临的挑战很多不是关于持久化状态的,而是如此操作不会影响

全网无感知迁移生产环境到VPC

背景 今年年初,我们将预发布环境迁移至VPC,测试了平滑迁移服务到VPC的可行性.当时的结论是:要达到用户无感知,迁移过程非常繁琐,除非阿里云在基础设施一层提供支持,否则很难应用到生产环境.详见<如何将服务从经典网络迁移到VPC>. 但在今年年中,阿里云推出了一系列有利于VPC迁移的功能,我们认为将整个生产环境迁移至VPC的条件已经成熟. 迁移 迁移难点 在<如何将服务从经典网络迁移到VPC>结尾提到,将服务迁移平滑迁移至VPC最大的障碍在于: 迁移数据源到VPC 使用DTS可以很

使用IBM性能分析工具解决生产环境中的性能问题

序言 企业级应用系统软件通常有着对并发数和响应时间的要求,这就要求大量的用户能在高响应时间内完成业务操作.这两个性能指标往往决定着一个应用系统软件能否成功上线,而这也决定了一个项目最终能否验收成功,能否得到客户认同,能否继续在一个行业发展壮大下去.由此可见性能对于一个应用系统的重要性,当然这似乎也成了软件行业的不可言说的痛 -- 绝大多数的应用系统在上线之前,项目组成员都要经历一个脱胎换骨的过程. 生产环境的建立包含众多方面,如存储规划.操作系统参数调整.数据库调优.应用系统调优等等.这几方面互

基于WebSphere Commerce的电子商务应用性能优化(6) 生产环境性能管理

WebSphere Commerce 生产环境性能管理 以 WebSphere Commerce 为核心的电子商务网站是由多种软硬件产品共同组成的复杂系统.为了保证系统 健康地运行,运维团队需要对整个网站做全面的性能监控,并且采取必要的主动措施以保持系统性能.本文将 介绍一些 WebSphere Commerce 电子商务网站性能监控和性能维护的最佳实践. WebSphere Commerce 电子商务网站的性能监控 性能监控就是通过各种监控工具了解当前应用系统运行的状况,发现已经存在的性能问题