数据管理DMS的DML无锁变更可以在不锁表的情况下对表进行数据变更。本文介绍在DMS中进行DML无锁数据变更的方法。

前提条件

  • 支持的数据库类型:
    • MySQL:RDS MySQLPolarDB MySQL引擎MyBase MySQLPolarDB-X、其他来源MySQL
    • PostgreSQL:RDS PostgreSQLPolarDB PostgreSQL引擎MyBase PostgreSQL、其他来源PostgreSQL
    • MariaDB:RDS MariaDB、其他来源MariaDB
    • OceanBase MySQL模式
    • PolarDB O引擎
  • 实例的管控模式为稳定变更或安全协同。更多信息,请参见查看管控模式

背景信息

DML无锁数据变更基于强大的DMS引擎将单个SQL拆分成多个批次执行,能更好地满足业务方对大量数据变更的需求,例如历史数据清理、全表更新字段等,保证执行效率的同时,减小对数据库性能、数据库空间等的影响。更多信息,请参见DML无锁变更概览

注意事项

DML无锁变更仅支持单表、简单的SQL操作(例如UPDATE、DELETE等),不支持CREATE_INDEX和多表操作(例如DELETE语句中包含JOIN)。更多支持的SQL类型,请参见使用限制

操作步骤

  1. 登录数据管理DMS 5.0
  2. 在顶部菜单栏中,选择数据库开发 > 数据变更 > 无锁变更
    说明 若您使用的是极简模式控制台,请单击左上角的function图标,在导航栏中选择全部功能 > 数据库开发 > 数据变更 > 无锁变更
  3. 配置无锁变更工单。
    说明 以实例的管控模式为安全协同举例配置。自由操作或稳定变更管控模式的实例,在配置时仅需配置数据库与变更SQL。
    配置项是否必填说明
    数据库搜索并选择目标数据库。
    说明 您需要有目标数据库的变更权限。更多信息,请参见查看我的权限
    关联迭代单击选择/切换迭代,在目标迭代名称的操作列,单击关联,关联迭代。
    原因类别选择数据变更的原因,方便后续查找。
    业务背景详细描述变更原因或目标,减少沟通成本。
    执行方式选择工单的执行方式:
    • 审批通过后,提交者执行。
    • 审批通过后,自动执行。
    • 最后一个审批人执行。
    说明 管理员可以在运维管理 > 配置管理中,修改原因类别列表。具体操作,请参见配置管理
    变更SQL输入DML(Data Manipulation Language),例如UPDATEDELETEINSERT_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除外)。
    工单附件上传工单附件,补充当前工单信息。
  4. 单击提交申请
    系统将自动进行SQL预检查。如果预检查失败,您可以根据失败原因,单击修改SQL,修改SQL后重试。
  5. 等待审批通过后,在工单详情页的执行区域,单击执行变更
    说明 您可以在工单详情页的审批区域,查看审批进展。
  6. 配置任务执行参数。
    配置项说明
    执行策略
    • 立即执行:系统默认,单击确认执行后立即执行工单任务。
    • 定时执行:选择任务开始执行时间。单击确认执行后,在指定的时间执行该任务。
    指定结束时间
    • 开启:选择任务结束时间。如果任务在指定结束时间之前没有执行完毕,则系统将不再继续执行未完成的SQL任务,防止高峰期执行任务,影响业务运作。
    • 关闭:系统默认。
  7. 单击确定执行
    说明 已暂停的任务,重启后,会重新开始执行任务。
    您可以在执行区域,查看任务执行状态、任务设置、详情和调度日志。