需求是这样的 环境是 mysql
因为多人开发。而且是项目刚起步。数据库会经常变动。每次变动 sql 语句传递比较烦人。
1
liuxu 2019-04-13 16:15:44 +08:00
laravel 的 migration?
|
2
9hills 2019-04-13 16:16:26 +08:00 via iPhone
migration,很多语言都有库支持
|
3
mmdsun 2019-04-13 16:16:37 +08:00 via Android
navicat 有个数据库结构对比功能。可以生成差异 SQL
本地库修改没有问题就可以用 navicat 更新到测试库。 |
4
allanzhuo 2019-04-13 16:23:20 +08:00
migration 吧
|
5
shoaly 2019-04-13 16:32:03 +08:00
虽说有, 但是个人建议 还是别把数据库弄成谁都能插一列这么随意把.... 最后删起来很伤
|
6
janxin 2019-04-13 17:32:21 +08:00
存在,migration
具体参考你们在用的语言工具。当然也有独立工具可以使用。 |
7
mandy0119 2019-04-13 17:41:54 +08:00
难道。 你们的开发环境的数据库是运行在本地的?
|
8
agoodob 2019-04-13 17:43:20 +08:00
Ruby on Rails 里 migration 的概念可以参考下
|
10
neoblackcap 2019-04-13 17:50:28 +08:00 via iPhone
存在很多,但是数据库迁移不像代码,你数据库里面有数据,你改表是有可能锁表的,还是先了解数据库,然后再寻求这些解决方案。
|
11
luozic 2019-04-13 17:54:07 +08:00
database migration solutions: ruby/python 多一點,Java 也有兩個,其他的沒聼説過
|
12
rayingecho 2019-04-13 17:58:02 +08:00
flyway
|
13
mandy0119 2019-04-13 18:35:36 +08:00
。。。 建议你们如果没有测试环境 就把其中某一个人的电脑(长期放在公司那种 ) 作为共用的测试数据库。。。
|
14
xiangyuecn 2019-04-13 19:45:43 +08:00
[占个楼提个问] :
好奇大家本地和生产服务器上的数据库结构存在差异时是怎么处理? 我一直是一个表一个表手工对,累死个人 比如:开发了个把月,积累了一定量的数据库结构变化,要上线的时候,该如何把本地的结构同步到线上生产服务器上,还能保证不能遗漏? ------------ 还有一个一直没搞明白的问题,新旧版本都用到的同一个表有改动,并且这个改动不兼容老版本,感觉升级过程中都要暂停服务才行,那么还怎么进行灰度发布,或者从头到尾的流程就是错的? @liuxu @9hills @mmdsun @allanzhuo @shoaly @janxin @mandy0119 @agoodob @blakejia @neoblackcap @luozic @rayingecho |
15
tomczhen 2019-04-13 20:02:05 +08:00 via Android
数据库有架构前移工具,MySQL 的那个官方客户端就有,SQLServer 的话 vs 里面有,可以生成变更语句。另外,SQLServer 还可以用 redgate 的工具(收费)。
有些框架也有迁移支持,migration,比如 laravel 和 django,再有就是一些独立工具。 要注意的是版本回退时如果牵扯到字段增加,最好人工干预生成(框架工具都有支持)回退脚本,不然字段会被删除,数据就没了。数据类型变更也会牵扯到数据丢失(长度,精度)。涉及索引还会牵扯到索引生成或重建。 还要说一下,online DDL 风险很多,没有测试 QA 流程,做好备份是必须的,至少还有后悔药吃。 |
16
neoblackcap 2019-04-13 20:27:25 +08:00
@xiangyuecn 很多工具都有生成迁移 SQL 的功能,据我了解 MySQL Wrokbench 就有这样的功能。不过也就生成 SQL 而已,不要想着它会帮你想好什么回滚措施。
我非常同意 15 楼的意见,online DDL 风险大,自己首先要做好数据备份,没有备份千万不要动! 同时你还可以考虑一下 Percona toolkit 里面的 pt-online-schema-change,他们毕竟还是专家,会更好一些。不过就算这样还是要备份,备份是最重要的的 |
17
gz911122 2019-04-14 14:51:21 +08:00
|
18
bringyou 2019-04-15 21:20:10 +08:00
有种变更管控的思路,可以看看这个项目: https://github.com/myide/see
|