这是我可以使用 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.
实施:我已经在一个很小的本地表上测试了上述内容,并且没有出现故障。
问题:假设我有磁盘空间来保存临时唯一主键并且可以处理负载等,那么在大表上运行它有什么问题吗?