› 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
Livid
400.16D
567.36D
V2EX  ›  MySQL

关于 MySQL 数据库结构比较工具

  •  
  •   Livid ·
    PRO
    · Mar 30, 2011 · 14213 views
    This topic created in 5684 days ago, the information mentioned may be changed or developed.
    在快速迭代开发的过程中,有的时候可能会需要比较本地开发机器上的 MySQL 数据库和远程服务器上的有什么结构上的不同。

    大家有什么好的工具或是方法推荐么?
    16 replies  •  2016-10-27 21:12:57 +08:00
    bruce
        1
    bruce  
       Mar 30, 2011 via Android
    导出 diff
    flytwokites
        2
    flytwokites  
       Mar 30, 2011
    我用的脚本片断:

    dump_schema() {
    mysqldump -uroot --skip-opt --no-data --skip-add-drop-table --skip-comments $2 | grep -v -e '^/\*!' >$1
    }

    dump_schema "$new_db.schema.sql" $new_db
    dump_schema "$old_db.schema.sql" $old_db

    meld "$new_db.schema.sql" "$old_db.schema.sql"
    TheOnly92
        3
    TheOnly92  
       Mar 30, 2011
    @flytwokites 何时开始 export old schema?这个方法挺不错,想学学看。
    muxi
        4
    muxi  
       Mar 30, 2011
    Navicat
    muxi
        5
    muxi  
       Mar 30, 2011
    @flytwokites 求完整脚本
    flytwokites
        6
    flytwokites  
       Mar 30, 2011
    FILE: dbup
    ==========
    #!/bin/bash

    new_db=${1:?miss db name}
    old_db=${new_db}_old
    old_db_dumpfile=${new_db}_old.$2.sql

    # load old db
    if [ -f "$old_db_dumpfile" ]; then
    mysql -uroot <<SQL
    drop database if exists $old_db;
    create database $old_db charset utf8;
    SQL

    echo "loading old db..."
    mysql -uroot $old_db <$old_db_dumpfile || exit 1

    echo "upgrading..."
    ./upgrade || exit 1
    fi

    # compare
    dump_schema() {
    mysqldump -uroot --skip-opt --no-data --skip-add-drop-table --skip-comments $2 | grep -v -e '^/\*!' >$1
    }

    dump_schema "$new_db.schema.sql" $new_db
    dump_schema "$old_db.schema.sql" $old_db

    sleep 1s
    meld "$new_db.schema.sql" "$old_db.schema.sql" &

    ============
    用法:
    先把原先的数据库导出为dbname_old..sql,可以含数据,然后写一个upgrade脚本(改数据库结构/迁移数据),然后就
    $ ./dbup dbname
    如果发现upgrade写得不对,改了后再次运行直到没问题,然后把upgrade传上服务器上运行。
    aligo
        7
    aligo  
       Mar 30, 2011
    用常用的mysql gui工具就可以干这个啊,例如mysql workbench啊navicat啊(一般用它)

    如果要比较简单的:
    http://dbsynch.g6.cz/ (在线)
    https://github.com/dsyph3r/php-mysql-diff/ (php)
    https://bitbucket.org/stepancheg/mysql-diff/ (scala)
    楼上那个用meld也不错
    Livid
        8
    Livid  
    MOD
    OP
    PRO
       Mar 30, 2011
    @aligo 刚刚下载了最新版本的 MySQL Workbench 试了试。果然很强大。

    最早 MySQL 的各种 GUI 在 03/04 年出来的时候,还十分简陋,当时试过之后就没有再用了。不过现在看来 Workbench 确实相当靠谱。

    有介绍 Workbench 比较好的书么?大家推荐几本吧。感谢。
    iugo
        9
    iugo  
       Mar 30, 2011
    不是放弃PHP了吗?
    Livid
        10
    Livid  
    MOD
    OP
    PRO
       Mar 30, 2011
    @iugo MySQL 不是 PHP 的专用数据库吧?
    iugo
        11
    iugo  
       Mar 30, 2011
    @Livid 嗯。只是 PHP+MySQL 的组合多一些。我下意识地以为 L 看到了什么特别的东西从而又去鼓捣 PHP 了。
    cluries
        12
    cluries  
       Mar 30, 2011
    SQLYog~~
    很好用的说..
    huacnlee
        13
    huacnlee  
       Mar 30, 2011
    以前Windows里面的时候我用过 SQL Delta 非常给力.不过是 SQL Server 的,结构数据,完美处理.不知现在有没有 MySQL 的.

    不过 Ruby on Rails 搞的不怕这个问题, Migration 完美解决!
    bed
        14
    bed  
       Mar 30, 2011
    @Livid 官方文档就足够了http://dev.mysql.com/doc/index-gui.html
    mysql在macosx下的管理工具除了Navicat和workbench之外还有一个sequelpro
    http://www.sequelpro.com/

    此外最靠谱的mysqlschema管理还是需要有类似Rails的migration的机制

    php中也有 https://github.com/davejkiger/mysql-php-migrations 以前是在 http://code.google.com/p/mysql-php-migrations/
    此外 http://www.yiiframework.com/ 现在也集成了migration操作,也可以单独拿出来用。

    以前我们用mysql-php-migration
    现在用yii的migration
    bed
        15
    bed  
       Mar 30, 2011
    @huacnlee 我打了一大段的文字,被你抢楼了-。-
    JiaFeiX
        16
    JiaFeiX  
       Oct 27, 2016 via iPhone
    到了 2016 年,大家有什么新的推荐和最佳实践吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1625 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 16:41 · PVG 00:41 · LAX 09:41 · JFK 12:41
    ♥ Do have faith in what you're doing.