DMS为解决结构变更时的锁表问题而推出的无锁结构变更功能,能较好地规避因数据库变更导致锁表以至于阻塞业务的现象、以及数据库原生Online DDL带来的主备延迟现象,主要原理为:创建临时表(变更后的表结构),往临时表中拷贝全量数据,同步增量binlog数据,切换临时表为正式表。
前提条件
目标实例已开启DMS无锁表结构变更策略,具体操作,请参见
开启无锁结构变更。
说明 本示例中,您需要提前对模拟开发环境的RDS MySQL实例开启DMS无锁表结构变更策略。
操作步骤
本示例通过无锁结构变更功能将big_table
表的long_text_a
字段类型从varchar(1024)
改为text(1024)
。
- 普通用户提交工单。
- 以普通用户账号,登录数据管理DMS 5.0。
- 在顶部菜单栏中,选择。
- 配置如下信息,并单击提交申请。

参数名 | 说明 |
---|
数据库(必填) | 选择poc_dev 库。 |
原因类别(必填) | 选择数据变更的原因,方便后续查找。 |
业务背景(必填) | 详细描述变更原因或目标,减少沟通成本。 |
执行方式(必填) | 选择最后审批人执行。 |
影响行数(必填) | 预估本次更新会影响的数据行数,可在SQLConsole以count 统计。 |
变更SQL(必填) | 输入如下ALTER 语句。ALTER TABLE `big_table`
MODIFY COLUMN `long_text_a` text(1024) NULL AFTER `name`;
说明 将long_text_a 字段的类型从varchar(1024) 改为text(1024) 。 |
回滚SQL(选填) | 可直接执行的SQL语句,变更SQL的对应逆向SQL。 |
变更相关人(选填) | 设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。 |
- 在工单详情页中,确认工单详情信息。
说明 您可以在工单详情页中,查看工单的详情信息,同时系统也会对将要执行的SQL进行执行前的预检查,包括SQL语法解析、安全规则中的SQL类型校验、工单提交人的权限检查、预计检查扫描行数等。
- 确认信息无误且预检查通过后,单击提交审批,并在弹窗中单击确认。
重要 在提交审批前,您可以修改工单内容,一旦提交审批后,将不能修改相关信息。

- 管理员审批并执行工单。
- 以管理员账号,登录数据管理DMS 5.0。
- 在DMS控制台首页我的工单区域,单击待处理工单。
- 在我的工单页面,单击目标工单号。
- 在工单详情页,确认工单变更信息,单击同意。
- 在审批意见文本框中输入具体意见,并单击确定。
- 单击执行变更,在弹窗中配置如下信息,并单击确定执行。

配置项 | 说明 |
---|
是否立即执行 | 选择是否立即执行,支持:- 立即执行:提交即刻执行。
- 定时执行:按需指定在业务特定时间执行。
默认为立即执行。 |
是否事务控制 | 选择是否打开事务控制开关:- 打开:遇到失败则全部回滚(仅支持DML语句,不支持DDL语句)。
- 关闭:逐条提交,遇到失败则终止但不回滚。
默认为关闭。 |
是否备份数据 | 选择是否打开备份数据开关:- 打开:针对本次变更中被
UPDATE和 DELETE 语句影响的数据,系统将生成对应的INSERT 脚本,以对原数据进行备份。 - 关闭:不对上述数据生成备份脚本。
默认为开启。 |
管理员查看任务进展并验证
- 以管理员账号,登录数据管理DMS 5.0。
- 在顶部菜单栏中,选择。
- 在请先选择数据库弹框中,搜索并选择
poc_dev
数据库,单击确认。 - 在SQL Console窗口中,输入如下语句(查看当前库下的表),单击执行。
SHOW TABLES;

说明 系统在进行无锁结构变更时,生成了两张临时表。
- 在顶部菜单栏中,选择。
- 单击目标任务号,进入任务执行详情页。
- 单击目标任务操作列下的进度按钮。
- 在无锁结构变更页,查看当前的整体拷贝进度。
- 变更完成后,对表结构进行验证。
big_table
的表结构已变更,临时表已被删除。