数据管理DMS为解决结构变更时的锁表问题推出了DDL无锁变更功能,较好地规避因数据库变更导致锁表以至于阻塞业务的现象,以及数据库原生Online DDL带来的主备延迟现象。

前提条件

实例已开启DMS无锁结构变更优先功能

开启该功能后,您通过以下方式执行数据变更,均会以无锁的方式进行:

功能限制

限制项 说明
数据库类型 支持自建MySQL、RDS MySQL、PolarDB MySQL。
数据库引擎 必须是如下数据库引擎:
  • InnoDB
  • Rocksdb
  • X-Engine
管控模式 必须为如下管控模式
  • 稳定变更
  • 安全协同
数据库账号权限 需要为高权限账号或具备读写权限的数据库账号,具体权限如下:

ALL PRIVILEGES权限或ALTER、CREATE、DELETE、DROP、INDEX、INSERT、LOCK TABLES、SELECT、TRIGGER、UPDATE、REPLICATION CLIENT、REPLICATION SLAVE权限。

说明
磁盘空间 由于需要在目标数据库新建表拷贝数据,大表变更时需要保证磁盘有足够的剩余空间。
说明 RDS实例空间不足将导致实例被锁定。
日志格式 需开启Binlog日志。
说明 PolarDB默认未开启Binlog,开启的具体操作,请参见 PolarDB-如何开启Binlog
源表上有主键或唯一键 在执行DDL无锁变更时,主键或唯一键将用于全量拷表分段操作及后续增量更新的依据。
  • 如果表上仅有主键:在执行变更期间,不能更新(UPDATE)主键,否则将导致任务失败并退出。
  • 如果表上没有主键,有唯一键:在执行变更期间,不能更新(UPDATE)唯一键,否则将导致任务失败并退出。
  • 如果表上没有主键和唯一键:请在实例上先添加主键或唯一键后,重新提交DDL无锁更变任务。

操作步骤

  1. 登录新版DMS控制台
  2. 在页面顶部,选择全部功能 > 数据方案 > 无锁变更
  3. 配置数据变更工单的相关信息。
    图 1. 数据变更工单申请
    数据变更工单申请
    表 1. 数据变更参数说明
    参数名 说明
    数据库(必填) 选择目标数据库。
    说明 您需要有该库的变更权限,若您只有目标数据库的只读权限或只有表的变更权限则无法提交工单。更多信息,请参见 查看我的权限
    原因类别(必填) 选择数据变更的原因,方便后续查找。
    业务背景(必填) 详细描述变更原因或目标,减少沟通成本。
    执行方式(必填) 默认为审批通过后,提交者执行,可选审批通过后,自动执行最后审批人执行
    变更SQL(必填) 可直接执行的SQL语句,产品在提交时会自动校验语法正确性,不正确则阻断无法提交。
    说明 请在此输入DDL(Data Definition Language),例如 ALTER TABLEOPTIMIZE。若您在此次输入DML(Data Manipulation Language),请参见 DML无锁变更
    回滚SQL(选填) 可直接执行回滚操作的SQL语句,即数据变更脚本对应的逆向脚本。支持的选项为:
    • 文本:在SQL文本框中输入。
    • 附件:单击上传文件进行上传,支持txt、SQL文件类型。
    变更相关人(选填) 设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
    工单附件(选填) 您可以上传图片或文档对本次的数据变更操作进行补充说明。
  4. 单击提交申请
    系统将执行SQL预检查。
  5. 单击提交审批,等待审批通过。
    说明
    • 在提交审批前,您可以修改工单内容和定时配置;提交审批后,您将不能修改相关信息。
    • 您可以在工单详情页的审批区域查看审批进展。
  6. 待工单审批后,在工单详情页中,单击执行变更,并配置是否立即执行任务。
    说明 在创建工单时,若 执行方式选择为 审批通过后,自动执行,系统会自动跳过此步骤。
    配置项 说明
    是否立即执行 选择是否立即执行,支持的选项:
    • 立即执行(默认):提交即刻执行。
    • 定时执行:按需指定特定时间执行该任务。
  7. 单击确定执行
    在执行过程中(执行成功后),您可以单击 详情调度详情查看任务进展、执行日志详细(执行语句、执行所用时间、调度详情等信息)。
    说明 数据Owner也可以在 系统管理 > 任务管理中进行流程管理,具体操作,请参见 管理变更流程
    正在执行

管理变更流程

在DDL无锁变更任务执行时,数据Owner可通过如下步骤进行流程管理。

  1. 登录新版DMS控制台
  2. 在页面顶部,选择全部功能 > 系统管理 > 任务管理
    进入 任务管理页面。
  3. 单击目标任务号,进入任务执行详情页。
  4. 单击目标任务操作列下的进度按钮。
    说明
    • 该按钮仅在任务进行时显示。
    • 您也可以在当前页面下查看脚本语句或执行日志,或选择跳过该任务或修复任务
  5. 无锁结构变更页,查看当前的整体拷贝进度。
    说明 如果您的业务特殊,需要额外配置单次拷贝大小,可以联系售后了解该功能。

附录

请参见DDL无锁变更附录