SchemaSync - Generate the SQL necessary to migrate the schema of a source database to a target database

SchemaSync 使用方式如下:

schemasync [options] <source> <target>

# source/target format: mysql://user:pass@host:port/database
# output format: <database>[_<tag>].YYYYMMDD.(patch|revert)[_<version>].sql
-h, --help            show this help message and exit
-V, --version         show version and exit.
-r, --revision        increment the migration script version number
                      if a file with the same name already exists.
-a, --sync-auto-inc   sync the AUTO_INCREMENT value for each table.
-c, --sync-comments   sync the COMMENT field for all tables AND columns
--tag=TAG             tag the migration scripts as <database>_<tag>.
                      Valid characters include [A-Za-z0-9-_]
                      directory to write the migration scrips.
                      The default is current working directory.
                      Must use absolute path if provided.
                      set the directory to write the log to.
                      Must use absolute path if provided.
                      Default is output directory.
                      Log filename is schemasync.log

簡單的說就是帶入來源資料庫位置與目的資料庫位置,SchemaSync 即會連入來源與目的資料庫進行比對,產生對應的腳本檔案。

其它像是帶入 -r 參數增加腳本檔案的版本號、帶入 -c 參數指定連帶 Comment 一起產進腳本、帶入 –tag 參數指定腳本檔案的 Tag 部份。

這邊實際運行看看,可看到跑完後會產生了一個 patch 用的腳本,一個是 revert 用的腳本。

如果 patch 的腳本是新增資料表。

那 revert 的腳本就會是刪除資料表。

如果 source 與 target 資料庫位置互換,那產出來的腳本也會跟著互換。