読者です 読者をやめる 読者になる 読者になる

tumblr

tumblr(タンブラー)は、メディアミックスブログサービス。ブログとミニブログ、そしてソーシャルブックマークを統合したマイクロブログサービスである。アメリカのDavidville.inc(現: Tumblr, Inc.)により2007年3月1日にサービスが開始された。

複数バージョンの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














https://github.com/xaicron/mysqlenv


ほぼ同時期というか同時刻に全く同じ名前のものをさいくろんさんがつくっていました。
コマンドぐんもぼくがつくったやつよりもすごくいいかんじです。
ぼくもこっちをつかおうとおもうのでみなさんもさいくろんさんバージョンをつかいましょう。
しにたい。