这是我可以使用 pt-online-schema-change 更改主键吗?.
目标:我想ALTER
使用pt-online-schema-change
. 具体来说,我想从单列主键迁移(a)
到复合主键(a,b)
(a
两种情况下都是同一列)。
想法:我理解pt-online-schema-change
当主键和唯一键都丢失时通常不起作用。为此,我的计划是:
- 添加唯一键:
pt-online-schema-change --alter "ADD UNIQUE tmp_unique_key(a)" D=mydb,t=mytable,u=root --execute
- 修改主键:
pt-online-schema-change --alter "DROP PRIMARY KEY, ADD PRIMARY KEY (a, b)" D=mydb,t=mytable,u=root --execute --check-alter
. (--check-alter
需要忽略DROP PRIMARY KEY
错误) - 修改唯一键:
pt-online-schema-change --alter "DROP KEY tmp_unique_key" D=mydb,t=mytable,u=root --execute
.
实施:我已经在一个很小的本地表上测试了上述内容,并且没有出现故障。
问题:假设我有磁盘空间来保存临时唯一主键并且可以处理负载等,那么在大表上运行它有什么问题吗?