若您需要在不锁表的前提下变更大量表数据,您可使用数据管理DMS的无锁变更。该功能通过将单个SQL拆分成多个批次执行,以实现不锁表进行表数据变更,同时也可以减少DML操作对数据库性能,空间等的影响。本文介绍在DMS中进行无锁数据变更的方法。
前提条件
支持的数据库类型:
- MySQL:RDS MySQL、PolarDB MySQL版、MyBase MySQL、PolarDB分布式版、其他来源MySQL
- PostgreSQL:RDS PostgreSQL、PolarDB PostgreSQL版、MyBase PostgreSQL、其他来源PostgreSQL
- MariaDB:RDS MariaDB、其他来源MariaDB
- OceanBase MySQL模式
- PolarDB PostgreSQL版(兼容Oracle)
实例的管控模式为稳定变更或安全协同。更多信息,请参见查看管控模式。
注意事项
DML无锁变更仅支持单表、简单的SQL操作(例如UPDATE、DELETE等)。
操作步骤
- 登录数据管理DMS 5.0。
在顶部菜单栏中,选择 。
说明若您使用的是极简模式控制台,请单击左上角的图标,在导航栏中选择
。配置无锁变更工单,配置完成后,单击提交申请。部分参数信息说明如下:
说明以安全协同实例举例配置。自由操作或稳定变更管控模式的实例,在配置时仅需配置数据库与变更SQL。
配置项
是否必填
说明
数据库
是
搜索并选择目标数据库。
说明您需要有目标数据库的变更权限。更多信息,请参见查看我的权限。
执行方式
是
选择工单的执行方式:
审批通过后,提交者执行。
审批通过后,自动执行。
最后一个审批人执行。
说明管理员可以在配置管理。
中,修改执行方式列表。具体操作,请参见变更SQL
是
输入DML(Data Manipulation Language),例如
UPDATE
、DELETE
、INSERT_SELECT
。说明如果变更SQL输入的是DDL,则您进行的是DDL无锁结构变更任务。更多信息请参见通过无锁变更工单实现无锁结构变更。
SQL文本
否
若变更SQL选择了文本,才会出现该配置项。在SQL文本框中,输入可直接执行的SQL语句。
说明多条SQL之间, 请用英文分号(;)隔开。
提交工单时会自动校验SQL语法正确性,不正确则无法提交。
附件
否
若变更SQL选择了附件,才会出现该配置项。上传变更SQL附件。
说明附件仅支持.txt、.zip和.sql的文件类型,最大不能超过15 MB。
回滚SQL
否
可直接执行的SQL语句,变更脚本对应的逆向脚本。
SQL文本
否
回滚SQL选择了文本,才会出现该配置项。输入回滚SQL,回滚SQL为变更SQL对应的逆向脚本。
附件
否
回滚SQL选择了附件,才会出现该配置项。单击上传文件,上传回滚SQL附件。
说明附件仅支持.txt、.zip和.sql的文件类型,最大不能超过15 MB。
变更相关人
否
设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
工单附件
否
上传工单附件,补充当前工单信息。
提交申请后,您可以开启主备延迟检查并确定阈值、修改SQL。
(可选)开启主备延迟检查、设置阈值。设置主备延迟检查并确定阈值,以避免主备延迟过大,从而影响主备实例切换。
您可以在基本信息区域,单击分批执行配置,设置合理的主备延迟阈值(单位:秒)。如果主备延迟大于阈值时,将中断SQL执行。
说明目前仅支持RDS MySQL数据库使用该功能。
(可选)修改SQL。
提交申请后,系统将自动进行SQL预检查。如果预检查失败,您可以根据失败原因修改SQL,修改后重试。
单击提交审批。安全协同实例会根据设置的审批规则进行审批,稳定变更实例将自动通过审批。
等待审批通过后,在工单详情页的执行区域,单击执行变更。
说明您可以在工单详情页的审批区域,查看审批进展。
配置任务执行参数。
配置项
说明
执行策略
立即执行:系统默认,单击确认执行后立即执行工单任务。
定时执行:选择任务开始执行时间。单击确认执行后,在指定的时间执行该任务。
指定结束时间
开启:选择任务结束时间。如果任务在指定结束时间之前没有执行完毕,则系统将不再继续执行未完成的SQL任务,防止高峰期执行任务,影响业务运作。
关闭:系统默认。
单击确定执行。
说明已暂停的任务重启后,会重新开始执行任务。
您可以在执行区域,查看任务执行状态、任务设置、详情和调度日志。
相关文档
在进行无锁数据变更后,您还可能需要进行如下操作:
无锁数据变更的相关API如下:
常见问题
Q:无锁数据变更是否支持复杂的SQL操作?
A:不支持。例如CREATE_INDEX和多表操作(例如DELETE语句中包含JOIN)。更多支持的SQL类型,请参见使用限制。