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