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