複数バージョンのMySQLを管理・実行できるmysqlenv作った
主に開発環境でMySQLを複数バージョン同時に動かしたいということがあると思います。
なので複数環境でも動くやつ作りました。
https://github.com/shim0mura/mysqlenv
名前から分かるようにrbenvのコマンドインターフェースを真似ています。
すでにあるkamipoさんの作ったmysql-buildは当時のruby-buildをほとんどコピってきたとのことなので、それを真似してrbenvをほぼ丸々パクろうかと思ったけど、ソース見た感じ真似るのに時間掛かりそうなのでコマンドインターフェースとか複数コマンドの実行フローらへんの抽象的に使えそうな部分だけ真似て適当に実装しました。
インストール
$ git clone git://github.com:shim0mura/mysqlenv.git
お好きなディレクトリにcloneしたあとは以下を.bashrcにでも追加してください。
export PATH=/path/to/mysqlenv:$PATH eval "$(mysqlenv init)"
コマンド
- init
- install
- global
- version
- start
- stop
- info
startとstopとinfoは完全オリジナルです。
mysqlenv install 5.5.30
欲しいバージョンのmysqlをインストールします。
あと-lオプションだけつけるとmysql-build側でインストール可能なバージョンを一覧できます。
mysqlenv global 5.5.30
指定バージョンのmysqlのbinディレクトリをパスに追加します。
globalが設定されていればinitでそのbinディレクトリにパスを合わせてもくれます。
当初は実装出来なかったので諦めてましたがmitukiii大先生のおかげで実装できました。
mitukiii++
mysqlenv version
今globalに設定されているバージョンを表示します。
mysqlenv start 5.5.30
指定バージョンのmysqlを動かします。
-aオプションでmysqlenv経由でインストールしたものを全部同時実行します。
socketはバージョンごとに別の場所においてあるのでそっちは問題ないのですが、port指定が各バージョンでかぶってるとスタートしてくれないみたい。
mysqlenv stop 5.5.30
止めます。
startと同じく-aで全バージョンの停止ができます。
msyqlenv info 5.5.30
指定バージョンのsocketとmy.cnfの読み込み場所を表示します。
各バージョンのsocketとmy.cnfの場所が自分でわかりにくかったので、それを表示するためにつけてみた。
1,2日で作ったとは言え設計がアホすぎたのとソースがぐちゃぐちゃなので、ちょっとこれはリファクタリングなりなんとかしたいなあと思っています。pull reqお待ちしています。(他人任せ)
追記 2013/4/17 17:05
今日MySQLCasualなのか。もう少し早く作ってコード綺麗にしておけばLT出来たかもしれんのに…
!?????????!?!?!!!!?!?!????????????!?!?!??!?!?!?!!!!!!!!!!
この感覚……久しく忘れていたよ……死にたい……
いま新宿の甲州街道にいてトラックやバスがビュンビュン通ってるけど、ここ飛び出したら死ねるかな
https://github.com/xaicron/mysqlenv
ほぼ同時期というか同時刻に全く同じ名前のものをさいくろんさんがつくっていました。
コマンドぐんもぼくがつくったやつよりもすごくいいかんじです。
ぼくもこっちをつかおうとおもうのでみなさんもさいくろんさんバージョンをつかいましょう。
しにたい。