mysql のスキーマをバージョン管理したい
そろそろ積み上げ式の管理も限界。そのうち絶対事故る。
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)...