› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
blakejia
V2EX  ›  MySQL

数据库存在版本管理工具么?类似代码里面的 git

  •  
  •   blakejia · Apr 13, 2019 · 8522 views
    This topic created in 2725 days ago, the information mentioned may be changed or developed.

    需求是这样的 环境是 mysql

    因为多人开发。而且是项目刚起步。数据库会经常变动。每次变动 sql 语句传递比较烦人。

    18 replies  •  2019-04-15 21:20:10 +08:00
    liuxu
        1
    liuxu  
       Apr 13, 2019
    laravel 的 migration?
    9hills
        2
    9hills  
       Apr 13, 2019 via iPhone
    migration,很多语言都有库支持
    mmdsun
        3
    mmdsun  
       Apr 13, 2019 via Android
    navicat 有个数据库结构对比功能。可以生成差异 SQL
    本地库修改没有问题就可以用 navicat 更新到测试库。
    allanzhuo
        4
    allanzhuo  
       Apr 13, 2019
    migration 吧
    shoaly
        5
    shoaly  
       Apr 13, 2019
    虽说有, 但是个人建议 还是别把数据库弄成谁都能插一列这么随意把.... 最后删起来很伤
    janxin
        6
    janxin  
       Apr 13, 2019
    存在,migration
    具体参考你们在用的语言工具。当然也有独立工具可以使用。
    mandy0119
        7
    mandy0119  
       Apr 13, 2019
    难道。 你们的开发环境的数据库是运行在本地的?
    agoodob
        8
    agoodob  
       Apr 13, 2019
    Ruby on Rails 里 migration 的概念可以参考下
    blakejia
        9
    blakejia  
    OP
       Apr 13, 2019
    @mandy0119 #7 是的。我们开发是本地测试开发。没问题。再变更数据库
    neoblackcap
        10
    neoblackcap  
       Apr 13, 2019 via iPhone
    存在很多,但是数据库迁移不像代码,你数据库里面有数据,你改表是有可能锁表的,还是先了解数据库,然后再寻求这些解决方案。
    luozic
        11
    luozic  
       Apr 13, 2019
    database migration solutions: ruby/python 多一點,Java 也有兩個,其他的沒聼説過
    rayingecho
        12
    rayingecho  
       Apr 13, 2019
    flyway
    mandy0119
        13
    mandy0119  
       Apr 13, 2019
    。。。 建议你们如果没有测试环境 就把其中某一个人的电脑(长期放在公司那种 ) 作为共用的测试数据库。。。
    xiangyuecn
        14
    xiangyuecn  
       Apr 13, 2019
    [占个楼提个问] :

    好奇大家本地和生产服务器上的数据库结构存在差异时是怎么处理?

    我一直是一个表一个表手工对,累死个人

    比如:开发了个把月,积累了一定量的数据库结构变化,要上线的时候,该如何把本地的结构同步到线上生产服务器上,还能保证不能遗漏?

    ------------

    还有一个一直没搞明白的问题,新旧版本都用到的同一个表有改动,并且这个改动不兼容老版本,感觉升级过程中都要暂停服务才行,那么还怎么进行灰度发布,或者从头到尾的流程就是错的?

    @liuxu
    @9hills
    @mmdsun
    @allanzhuo
    @shoaly
    @janxin
    @mandy0119
    @agoodob
    @blakejia
    @neoblackcap
    @luozic
    @rayingecho
    tomczhen
        15
    tomczhen  
       Apr 13, 2019 via Android
    数据库有架构前移工具,MySQL 的那个官方客户端就有,SQLServer 的话 vs 里面有,可以生成变更语句。另外,SQLServer 还可以用 redgate 的工具(收费)。

    有些框架也有迁移支持,migration,比如 laravel 和 django,再有就是一些独立工具。

    要注意的是版本回退时如果牵扯到字段增加,最好人工干预生成(框架工具都有支持)回退脚本,不然字段会被删除,数据就没了。数据类型变更也会牵扯到数据丢失(长度,精度)。涉及索引还会牵扯到索引生成或重建。

    还要说一下,online DDL 风险很多,没有测试 QA 流程,做好备份是必须的,至少还有后悔药吃。
    neoblackcap
        16
    neoblackcap  
       Apr 13, 2019
    @xiangyuecn 很多工具都有生成迁移 SQL 的功能,据我了解 MySQL Wrokbench 就有这样的功能。不过也就生成 SQL 而已,不要想着它会帮你想好什么回滚措施。
    我非常同意 15 楼的意见,online DDL 风险大,自己首先要做好数据备份,没有备份千万不要动!
    同时你还可以考虑一下 Percona toolkit 里面的 pt-online-schema-change,他们毕竟还是专家,会更好一些。不过就算这样还是要备份,备份是最重要的的
    gz911122
        17
    gz911122  
       Apr 14, 2019
    @xiangyuecn
    技术评审时定好改动的 sql
    开发测试完毕上线时把要执行的 sql 给运维
    bringyou
        18
    bringyou  
       Apr 15, 2019
    有种变更管控的思路,可以看看这个项目: https://github.com/myide/see
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4537 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 03:57 · PVG 11:57 · LAX 20:57 · JFK 23:57
    ♥ Do have faith in what you're doing.