DMS普通数据变更功能支持直接执行或定时执行SQL语句来修改数据库中的数据,例如INSERT、UPDATE、DELETE、TRUNCATE、CREATE TABLE等SQL。DMS可以在预检查阶段对SQL的正确性进行校验、在审批阶段检查待执行的SQL是否会影响数据库性能及是否允许提交工单者执行此SQL,有效控制SQL变更的风险。本文介绍如何提交普通数据变更工单。
前提条件
实例的管控模式为稳定变更或安全协同模式。更多信息,请参见管控模式。
注意事项
无论工单审批通过与否均可关闭工单,避免审批通过后误执行工单任务。
建议您在测试环境执行数据变更也通过工单进行管理。通过工单进行变更会有数据备份、行数校验等保障,如果操作不符合预期可以快速恢复。
说明如果担心审批工单影响研发效率,可以设置无审批。具体操作,请参见SQL变更。
如果已配置逻辑库、逻辑表、路由算法,您可以通过一个工单便捷的提交分库分表的变更操作,无需逐个物理库表提交。
带路由算法配置且更新条件带路由字段的书写,可快速根据条件自动路由到具体物理库表执行。
若不带路由算法配置或变更条件里不带路由字段、路由字段书写类型与结构定义不符合这三种场景会造成SQL在每一个分库分表上逐一执行,执行时间会较久。
操作步骤
- 登录数据管理DMS 5.0。
在顶部菜单栏中,选择 。
说明若您使用的是极简模式的控制台,请单击控制台左上角的图标,选择
。在数据变更工单申请页面,配置工单参数。部分参数说明如下:
说明以选择安全协同模式的RDS MySQL数据库举例。
配置项
是否必填
说明
数据库
是
搜索并选择有变更权限的数据库。
原因类别
是
选择数据变更的原因,方便后续查找。
说明管理员可以在配置管理。
中,修改原因类别列表。具体操作,请参见业务背景
是
详细描述变更原因或目标,以减少沟通成本。
执行方式
是
选择工单的执行方式:
审批通过后,提交者执行。
审批通过后,自动执行。
最后一个审批人执行。
说明管理员可以在配置管理。
中,修改执行方式列表。具体操作,请参见影响行数
是
预估本次变更会影响的数据行数。
变更SQL
是
您可选择文本或附件。
SQL文本
是
若变更SQL选择了文本,才会出现该配置项。在SQL文本框中,输入可直接执行的SQL语句。
说明多条SQL之间, 请用英文分号(;)隔开。
提交工单时会自动校验SQL语法正确性,不正确则无法提交。
附件
是
若变更SQL选择了附件,才会出现该配置项。上传变更SQL附件。
说明附件仅支持.txt、.zip和.sql的文件类型,最大不能超过15 MB。
回滚SQL
否
您可选择文本或附件。
SQL文本
否
若回滚SQL选择了文本,才会出现该配置项。输入回滚SQL,回滚SQL为变更SQL对应的逆向脚本。
附件
否
若回滚SQL选择了附件,才会出现该配置项。单击上传文件,上传回滚SQL附件。
说明附件仅支持.txt、.zip和.sql的文件类型,最大不能超过15 MB。
变更相关人
否
设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
工单附件
否
上传工单附件,补充当前工单信息。
单击提交申请。
提交工单后,系统会自动进行预检查,如果预检查没有通过,根据提示修改SQL,然后重试。
预检查通过后,单击提交审批,在提示对话框中单击确认。
说明数据变更默认审批模板的审批人为DBA。更改默认审批模板,请参见修改默认审批模板。
审批通过后,单击执行变更,在任务设置对话框中设置任务执行参数,并单击确定执行。
说明创建工单时,如果执行方式选择审批通过后,自动执行,系统会自动跳过此步骤。
已暂停的任务重启后,将从暂停位置继续执行脚本。
配置项
说明
执行策略
选择执行策略:
立即执行:单击确定执行后,立即执行工单任务。
定时执行:指定任务开始执行的时间。例如,在2024年05月22日0时执行任务。
开启整体事务
选择是否开启整体事务,默认关闭。
开启:执行失败则全部回滚(仅限DML,DDL不在范围内)。
关闭:逐条提交SQL任务,执行失败则终止任务,但不回滚。
开启备份
选择是否开启备份,默认开启。
说明仅执行UPDATE和DELETE语句时,支持备份数据。
MongoDB和Redis不支持备份数据。
开启:执行
UPDATE
、DELETE
语句前,系统自动生成对应的备份脚本附件。如果数据库类型为MySQL和MariaDB,生成
REPLACE INTO
备份语句。说明MySQL包括:RDS MySQL、PolarDB MySQL版、PolarDB分布式版、其他来源MySQL。
如果数据库类型为除MySQL、MariaDB外的其他引擎,生成
INSERT
备份语句。
关闭:不生成备份附件。
说明SQL任务的执行会受到安全规则中SQL执行控制模块的监控,例如SQL执行前数据库锁超时机制、数据库负载检查、SQL执行后Sleep策略等。如需修改默认的检测点设置,请参考配置SQL执行控制。
工单执行成功后,在操作列单击详情,可查看工单执行状态、执行次数、影响行数、执行脚本、日志等信息。
工单执行成功后,您可以进入目标数据库的SQL窗口,查看数据变更是否符合预期。
可选:若数据变更不符合预期,且在设置任务执行参数时,开启了备份,则可根据如下步骤快速恢复源数据。
在操作列,单击下载备份,下载备份文件。
备份文件主要包含以下几部分内容:
变更的原始SQL语句。
数据变更的查询SQL语句。
数据变更备份SQL。
例如:
/* [Database]: rds@rm-bp144d5ky4l4rli0417****.mysql.rds.aliyuncs.com:3306【rds mysql】 */ /* [SQL]: UPDATE t_order SET product_id = 88 WHERE id = 10054 [BACKUP SQL]: SELECT * FROM t_order WHERE id = 10054 */ REPLACE INTO `t_order`(`id`,`product_id`,`gmt_create`,`gmt_modified`,`customer_id`,`price`,`status`,`province`) VALUES (10054,81,'2021-12-14 09:44:44','2021-12-14 09:44:44',71,63.45,'Success','杭州');
在备份文件中提取备份语句,确认备份语句无误后,重新提交普通数据变更工单并根据实际情况进行数据恢复。
说明如果是
UPDATE
语句的误操作,且备份语句为INSERT
,需要自行确认恢复的方式。验证变更是否符合预期。
在工单详情页的基本信息区域,将鼠标悬浮在数据库名称上,单击查询。
跳转至SQL Console查询表数据是否符合预期。