为解决变更数据库表结构时的锁表问题,数据管理DMS推出了无锁结构变更功能,该功能可以较好地规避因锁表以致于阻塞业务和数据库原生OnlineDDL带来的主备延迟问题。本文介绍通过提交无锁变更工单实现数据库无锁结构变更的方法。
前提条件
注意事项
- 使用具备读写权限的数据库账号或高权限数据库账号。如果当前数据库账号权限不足,您可以:
- 授权数据库账号权限。更多信息,请参见MySQL数据库账号权限管理。
说明 为数据库账号添加ALL PRIVILEGES权限或以下读写权限:
ALTER、CREATE、DELETE、DROP、INDEX、INSERT、LOCK TABLES、SELECT、TRIGGER、UPDATE、REPLICATION CLIENT和REPLICATION SLAVE权限。
- 更换数据库账号。更多信息,请参见编辑实例。
- 授权数据库账号权限。更多信息,请参见MySQL数据库账号权限管理。
- 确保数据库磁盘空间充足:由于需要在目标数据库中新建临时表用于数据拷贝,请确保磁盘剩余空间为目标表的两倍以上,磁盘空间不足将导致实例被锁定。更多信息,请参见数据库性能。
- 目标表中有主键或唯一键:在执行无锁结构变更时,主键或唯一键用于全量拷表分段操作及后续增量更新。
说明 如果目标表中仅有主键或唯一键,在执行结构变更期间更新主键或唯一键,将导致任务执行失败。
- 目标表名的长度不能超过56个字符。