全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

【数据变更】无锁变更

最近更新时间:2026-04-29 23:36:46

数据库管理平台KDMP提供无锁结构变更功能,通过将单一DDL语句拆分为多个小批量执行,实现在不锁表的情况下完成表结构变更。客户只需在控制台发起无锁变更流程,系统便会自动执行Online DDL操作,兼顾执行效率,并尽量降低对数据库性能与存储空间的占用。该功能帮助用户在不影响业务正常运行的前提下,安全、高效地执行表结构变更。

适用场景

  • 需在线修改表结构且业务不能中断的场景。

  • 大数据量表结构变更,避免锁表阻塞的场景。

前提条件

  • 已创建云数据库MySQL版实例和账号,并在KDMP的实例管理中添加该MySQL实例。

  • 已在KDMP的用户管理中添加该子账号并授权。

注意事项

  • 本流程当前仅支持 无锁结构变更。

  • 如需执行多条变更语句,请使用 英文分号(;)进行分隔;系统将按照您提交的顺序依次执行,单次变更最多支持50条SQL语句。

  • 请选择业务低峰期发起变更任务,以最小化对业务运行性能的潜在影响。

  • 变更MySQL实例的版本不小于5.7。

  • 任务启动前,请确认目标数据库中不存在未提交的长事务及耗时的大查询。此类操作可能导致变更任务因无法获取元数据锁而失败。尝试获取锁期间,数据库将出现间断性读写不可用,影响时长:锁表超时时间 × 2 × 重试次数。(相关参数可在系统配置中调整)

  • 任务启动前,请确保:

    • 磁盘剩余空间不低于所有变更表总数据量的一倍,建议两倍。以容纳临时表及日志文件。

    • 数据库实例的 CPU 及内存使用率均低于 80%,为变更任务预留充足的计算资源。

  • 添加主键或唯一索引时,必须预先校验目标字段是否存在重复数据。若存在重复值,变更过程可能导致数据丢失。请务必谨慎操作,并提前做好数据备份。

  • 不建议在同一数据库实例上同时运行多个无锁变更任务,以防止因资源竞争引发性能抖动或数据异常。

  • 无锁变更任务执行期间,严禁对目标数据库实例进行主备切换、规格变更或重启等运维操作,此类操作将直接导致变更任务中断失败。

操作步骤

  1. 登录数据库管理平台KDMP

  2. 在左侧导航栏,选择流程中心> 新建流程

  3. 新建流程页面,单击【数据变更】-无锁变更,跳转到无锁变更流程创建页面。

  4. 创建流程页面,需要配置以下参数。

    基本信息参数如下:

    参数

    说明

    流程标题

    默认为流程名称-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.清理临时表失败。

  5. 单击保存并预检查

  6. 预检查栏目,可查看与预检查结果及每一条SQL的检查结果,检查项包含数据库连通性检查、版本检查、binlog格式检查、语句合法性检査、库表存在性检査、资源检查、账户权限检查和表结构检査。

  7. 预检查通过后自动拆分执行SQL,流程状态变更为等待执行

  8. 点击执行,手动执行SQL任务,在执行过程中可以暂停任务、继续任务、修改执行参数等操作。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈