公司有些表数据量特别大,大概 3000w,现在需要增加一列,如果直接使用 alter,需要 10min 才能完成,这是完全不能接受的。所以除了新建表和停机,还有什么好的方法?
PS:数据库使用的事 MySQL 。
|  |      1clf      2020-10-22 17:33:35 +08:00 读写频繁的话主从切换。 读写频率一般的话可以考虑一下 pt-osc,gh-ost 这两个工具增加字段。 最新的 MYSQL8 我记得是可以实现秒级添加字段。 | 
|  |      2qiayue PRO 加列是一个很频繁的操作吗? 如果几个月一次的话,1 小时也可以接受。 | 
|  |      5skymei      2020-10-22 17:49:50 +08:00 同样有疑问,蹭个贴 | 
|  |      6x4400177      2020-10-22 17:54:22 +08:00 停服 | 
|      7CrazyEight      2020-10-22 17:57:08 +08:00 高性能 MySQL 讲到过: ( 1 )不想担风险:在一台不提供服务的机器完成新表的数据同步,再切换机器。 ( 2 )锁住表,拷贝.frm 文件并做出对应修改,再用新的.frm 文件替换掉旧的.frm 文件。有风险。 | 
|  |      9redtea      2020-10-22 17:58:33 +08:00 via iPhone 借此机会分表吧,500 万就该分了。 | 
|      10CODEWEA      2020-10-22 18:01:10 +08:00 原表叫 a,复制一个表叫 b,然后给这个表 b 增加列,最后补全表 b 数据 | 
|      11CODEWEA      2020-10-22 18:02:34 +08:00 其实就是空间换时间 |