mysql のスキーマをバージョン管理したい

移転先モンロー効果 - g.o.a.t


そろそろ積み上げ式の管理も限界。そのうち絶対事故る。


RoR とかだと楽なんでしょうけど、、、

で調べたところ
liamstask / goose — Bitbucket
ってのがひっかかりました。


go も初めてなので、ついでにちょっとやってみようと思います。

go と goose のインストール

sqlを修正

実行

確認


なるほど...

mysql> select * from goose_db_version;
+----+----------------+------------+---------------------+
| id | version_id     | is_applied | tstamp              |
+----+----------------+------------+---------------------+
|  1 |              0 |          1 | 2015-02-10 17:30:43 |
|  2 | 20150210171844 |          1 | 2015-02-10 17:31:52 |
+----+----------------+------------+---------------------+
2 rows in set (0.00 sec)
ロールバック
$ goose down
goose: migrating db environment 'development', current version: 20150210171844, target: 0
OK    20150210171844_create_first.sql
mysql> select * from goose_db_version;
+----+----------------+------------+---------------------+
| id | version_id     | is_applied | tstamp              |
+----+----------------+------------+---------------------+
|  1 |              0 |          1 | 2015-02-10 17:30:43 |
|  2 | 20150210171844 |          1 | 2015-02-10 17:31:52 |
|  3 | 20150210171844 |          0 | 2015-02-10 17:39:09 |
+----+----------------+------------+---------------------+

mysql> show tables;
+------------------+
| Tables_in_mig_db |
+------------------+
| goose_db_version |
+------------------+
1 row in set (0.00 sec)

なるほどなるほど...そういう事か...
インストールも楽だし、汚れないし、一から作るよりは断然楽ですね。
git と jenkins とゴニョって
Adam Spiers / MySQL-Diff - search.cpan.org
このあたりを使えば、デプロイの管理を楽に移行できそう。

その他

path とか env の指定。指定したpathの直下に dbconf.yml が必要みたい。src 見たけど、その辺りの細かい指定の仕方は無かった。(気がする)

$ goose -path="other_db_info_dir" -env="test" up
...(snip)...