最近更新时间:2026-04-29 23:36:46
数据库管理平台KDMP提供无锁结构变更功能,通过将单一DDL语句拆分为多个小批量执行,实现在不锁表的情况下完成表结构变更。客户只需在控制台发起无锁变更流程,系统便会自动执行Online DDL操作,兼顾执行效率,并尽量降低对数据库性能与存储空间的占用。该功能帮助用户在不影响业务正常运行的前提下,安全、高效地执行表结构变更。
需在线修改表结构且业务不能中断的场景。
大数据量表结构变更,避免锁表阻塞的场景。
已创建云数据库MySQL版实例和账号,并在KDMP的实例管理中添加该MySQL实例。
已在KDMP的用户管理中添加该子账号并授权。
本流程当前仅支持 无锁结构变更。
如需执行多条变更语句,请使用 英文分号(;)进行分隔;系统将按照您提交的顺序依次执行,单次变更最多支持50条SQL语句。
请选择业务低峰期发起变更任务,以最小化对业务运行性能的潜在影响。
变更MySQL实例的版本不小于5.7。
任务启动前,请确认目标数据库中不存在未提交的长事务及耗时的大查询。此类操作可能导致变更任务因无法获取元数据锁而失败。尝试获取锁期间,数据库将出现间断性读写不可用,影响时长:锁表超时时间 × 2 × 重试次数。(相关参数可在系统配置中调整)
任务启动前,请确保:
磁盘剩余空间不低于所有变更表总数据量的一倍,建议两倍。以容纳临时表及日志文件。
数据库实例的 CPU 及内存使用率均低于 80%,为变更任务预留充足的计算资源。
添加主键或唯一索引时,必须预先校验目标字段是否存在重复数据。若存在重复值,变更过程可能导致数据丢失。请务必谨慎操作,并提前做好数据备份。
不建议在同一数据库实例上同时运行多个无锁变更任务,以防止因资源竞争引发性能抖动或数据异常。
无锁变更任务执行期间,严禁对目标数据库实例进行主备切换、规格变更或重启等运维操作,此类操作将直接导致变更任务中断失败。
登录数据库管理平台KDMP。
在左侧导航栏,选择流程中心> 新建流程 。
在新建流程页面,单击【数据变更】-无锁变更,跳转到无锁变更流程创建页面。
在创建流程页面,需要配置以下参数。
基本信息参数如下:
参数 | 说明 |
流程标题 | 默认为流程名称-MMMM-MM-DD。如“无锁变更-2026-04-29”,必填。最大支持 64 个字符。 |
实例选择 | 选择产品线及可选实例。 |
选择数据库 | 选择需要变更的数据库名称。 |
备注说明 | 默认为空,最大支持 500 个字符。 |
影响行数 | 仅支持输入数字,默认为“0”,必填。 |
执行时间 | 暂时仅支持手动执行。即流程结束后手动执行流程。 |
执行SQL | 暂时仅支持SQL输入。即在SQL脚本窗口输入变更SQL。 |
SQL脚本 | 输入无锁结构变更的 SQL 语句。必填。 说明: 多条S0L语句请用英文分号;分隔,最多支持50条S0L。 |
参数配置参数如下:
参数名称 | 类型 | 默认值 | 是否需要重启 | 参数描述 |
切换表时锁表超时间 | int | 2(秒) | 是 | 变更任务在cut-over阶段最大的锁等待时间,当锁超时时,变更任务的cut-over将重试。 |
全量拷贝chunk大小 | int | 1000(行) | 否 | 在每次迭代中处理的行数量。 |
切换表完成后原表清理策略 | bool | 否 | 是 | 变更任务操作结束后,是否清理旧表。 |
binlog同步最大重连尝试次数 | int | 60(次) | 是 | master节点挂掉后,binlog重连的最大次数。 |
线程数检查保护 | int | 0 | 否 | 当状态超过阈值时,变更任务不会退出,应用程序将限制写入,等待到负载在阈值以下继续运行。 |
线程数临界阈值 | int | 0 | 否 | 当超出阈值时,变更任务会立即停止迁移避免系统过载。 |
线程数临界阈值检查时间间隔 | int | 0 | 是 | 当值为0时,当达到线程数临界阈值时,变更任务立即退出。当值不为0时,当达到线程数临界阈值,变更任务会在线程数临界阈值检查时间间隔指定的时间后后,再次进行检查,再次检查依旧达到临界阈值时,变更任务将会退出 |
主从复制最大延迟时间 | int | 600000(毫秒) | 否 | 主从复制最大延迟时间,当主从复制延迟时间超过该值后,变更任务将采取节流(throttle)措施。 |
重试次数 | int | 5(次) | 是 | 各种操作在panic前的重试次数,包括:1.写change log失败;2.清理临时表失败。 |
单击保存并预检查。
在预检查栏目,可查看与预检查结果及每一条SQL的检查结果,检查项包含数据库连通性检查、版本检查、binlog格式检查、语句合法性检査、库表存在性检査、资源检查、账户权限检查和表结构检査。
预检查通过后自动拆分执行SQL,流程状态变更为等待执行。
点击执行,手动执行SQL任务,在执行过程中可以暂停任务、继续任务、修改执行参数等操作。
纯净模式
