这是Can I use pt-online-schema-change to change a primary key?的后续行动。
目标:我想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
var select =('<?php echo implode('","', $select); ?>');
var label='"X"'+ ',"'+select+'"';
g = new Dygraph(
// containing div
document.getElementById("graphdiv"),allData,
{
labels: [label], // I tried it with and without the brackets, no difference
legend:'always',
title:'Abweichung der Messerte',
titleHeight:32,
ylabel:'<?php echo $art?>',
xlabel:'Zeit',
showRangeSelector: true,
digitsAfterDecimal: 5,
strokeWidth: 1.5,
drawPoints: true,
}
);
。实施:我在一个很小的本地桌子上测试了上面的内容,它没有任何故障。
问题:假设我有磁盘空间来容纳临时唯一主键并且可以处理负载等,那么在大型表上运行它是否有任何问题?
答案 0 :(得分:1)
是的,您可以使用pt-online-schema-change修改PRIMARY KEY。以下是pt-online-schema-change的工作原理:
任何一张桌子都没有丢失PRIMARY KEY。无需添加UNIQUE键。你需要执行的只是你的集合中的#2,这样就可以了。