【MySQL】分区表增加自增主键方法

659 阅读1分钟

方案一

按照新结构创建表,并进行数据迁移。该方案较简单,但对于实时性有一定要求。

方案二

利用唯一索引作为过渡,修改主键,步骤如下:

  1. 克隆表+结构,用于测试
drop table if exists mytable_test;
create table mytable_test like mytable;
insert into mytable_test
select * from mytable;
  1. 添加key_id,并添加唯一索引(唯一索引必须包含分区字段),利用mysql唯一索引不检查空值的特点作为过渡
alter table mytable_test add column key_id bigint, add unique key tt(key_id,alarmlog_occur_time);
  1. key_id更新为自增
alter table mytable_test modify column key_id int(11) null auto_increment first;
  1. 删除原主键
alter table mytable_test drop primary key;
  1. 添加新联合主键
alter table mytable_test add primary key (key_id,alarmlog_occur_time);
  1. 删除过渡使用的唯一索引
alter table mytable_test drop key tt;
  1. 数据检验、结构检验
select * from mytable_test;
show create table mytable_test;