线上现在运行的 mysql 里面的字段名需要增加一些,本地已经增加好了 如何加到线上版本比较优雅.
1
Suaxi 8 天前 via Android
1. 和 dba 沟通需求
2. dba 就是自己的话那就直接 Navicat 结构同步/手动写 sql |
2
mark2025 8 天前
生产库在线添加字段当心搞出大事故
1. mysql DDL 不支持事务,无法回滚( v8.0 好像支持了,但 mysql 无处不是坑) 2. mysql 添加字段是先把原表数据全部写入一张了临时表,添加完字段之后再改名回去。如果原表数据量非常大,那么耗时会很长…… |
3
Rache1 8 天前 1
在满足一些条件的情况下,MySQL 8 可以做到秒加字段了。
MySQL 8 秒加字段初探 | 似水年华--沉浮 https://idber.github.io/2020/03/19-MySQL%208%20%E7%A7%92%E5%8A%A0%E5%AD%97%E6%AE%B5%E5%88%9D%E6%8E%A2.html |
4
k9982874 8 天前 via Android
简单业务小数据量直接加就是,大数据量复杂业务半夜停服维护。
做任何操作之前确保有备份! |
5
Vegetable 8 天前
看数据规模,小无所谓,大的话交给 dba 。
通常会使用 pt-osc / gh-ost 之类的工具实现。新版本的 MySQL 不清楚,老版本干这个是真折磨。 |
6
VeryZero 8 天前
8.0+的话加到最后一列,不要加中间,否则会锁表
|
7
pollux 7 天前
使用 pt-online-schema-change --dry-run 可以在线增加字段和索引
|
8
qinxi 6 天前 via iPhone
不设定字段相对顺序,不加默认值。 新的 mysql 都是秒加
|
9
EricXuu 6 天前
https://dev.mysql.com/blog-archive/mysql-8-0-instant-add-and-drop-columns/
上面各位的知识该更新了,8.029 就支持任意位置的 instant add/drop column 了(本来对默认值也没有要求 文章里也提到一些不适用的情况。这时候考虑 pt-osc / gh-ost 这些成熟的 online ddl 工具。 |