mysql记录超300W条,修改表结构超时,有什么好办法。

时间:2022-11-14 14:43:20
mysql记录超300W条,修改表结构超时(增加2列),有什么好办法。

查到可通过新建一个表,改好结构,导入旧数据的方法,但觉得时间上稍有些长。

10 个解决方案

#1


1、导出到TXT文件,修改完后,再LOAD;
2、试试
create table newtt as
select tt.*,新列1,新列2 from tt

#2


最简单的方法就是直接用alter语句,但是会阻塞读写,阻塞时间看你的机器性能和表结构复杂度

如果想在线更改表结构 需要用perconal的第三方工具

pt-online-schema-change

http://www.percona.com/doc/percona-toolkit/2.1/

#3


建议还是找个凌晨停业务 稳点

#4


看你的表结构,300W记录不算多,DDL在普通的服务器上有个1-2分钟也够了。在业务不繁忙的时候做alter table操作。

如果你有MASTER-SLAVE结构,先在SLAVE上做,然后把APP切到SLAVE上,再改MASTER的

#5


to zuoxingyu2012 ,谢谢先。

确定在300W条记录上,做过alter table么?
我试了,20多分钟,也没有反应。

然后就ctr+c 了。

当时大约有5-10人在使用数据库。

#6


但数据访问量,相对300W,应该极小的。

#7


表结构?约30个字段,有4-5个索引。

#8


建议不要做alter table

ALTER TABLE本质上MYSQL还是先创建一个新的表与原来表结构相同,然后添加需要的列,再复制数据。复制完成后删除旧表,再将临时表改名为原表名。

#9


版主,你提建议方法,是什么呢?

#10


试试淘宝,或者PT的那个在线DDL的工具。

#1


1、导出到TXT文件,修改完后,再LOAD;
2、试试
create table newtt as
select tt.*,新列1,新列2 from tt

#2


最简单的方法就是直接用alter语句,但是会阻塞读写,阻塞时间看你的机器性能和表结构复杂度

如果想在线更改表结构 需要用perconal的第三方工具

pt-online-schema-change

http://www.percona.com/doc/percona-toolkit/2.1/

#3


建议还是找个凌晨停业务 稳点

#4


看你的表结构,300W记录不算多,DDL在普通的服务器上有个1-2分钟也够了。在业务不繁忙的时候做alter table操作。

如果你有MASTER-SLAVE结构,先在SLAVE上做,然后把APP切到SLAVE上,再改MASTER的

#5


to zuoxingyu2012 ,谢谢先。

确定在300W条记录上,做过alter table么?
我试了,20多分钟,也没有反应。

然后就ctr+c 了。

当时大约有5-10人在使用数据库。

#6


但数据访问量,相对300W,应该极小的。

#7


表结构?约30个字段,有4-5个索引。

#8


建议不要做alter table

ALTER TABLE本质上MYSQL还是先创建一个新的表与原来表结构相同,然后添加需要的列,再复制数据。复制完成后删除旧表,再将临时表改名为原表名。

#9


版主,你提建议方法,是什么呢?

#10


试试淘宝,或者PT的那个在线DDL的工具。