方案一
按照新结构创建表,并进行数据迁移。该方案较简单,但对于实时性有一定要求。
方案二
利用唯一索引作为过渡,修改主键,步骤如下:
- 克隆表+结构,用于测试
drop table if exists mytable_test;
create table mytable_test like mytable;
insert into mytable_test
select * from mytable;
- 添加key_id,并添加唯一索引(唯一索引必须包含分区字段),利用mysql唯一索引不检查空值的特点作为过渡
alter table mytable_test add column key_id bigint, add unique key tt(key_id,alarmlog_occur_time);
- key_id更新为自增
alter table mytable_test modify column key_id int(11) null auto_increment first;
- 删除原主键
alter table mytable_test drop primary key;
- 添加新联合主键
alter table mytable_test add primary key (key_id,alarmlog_occur_time);
- 删除过渡使用的唯一索引
alter table mytable_test drop key tt;
- 数据检验、结构检验
select * from mytable_test;
show create table mytable_test;