業務で複数MySQLの開発環境が必要になりました。VM作っても良かったのですが、いちいち立ち上げたくなかったのと、Mac1台で完結させたかったのでTwitterでその旨つぶやいたら、とある方からmysqld_multiというものを教えて頂きました。
私はHomebrewでMySQL5.1を入れていたのですが、
$ ll /usr/local/Cellar/mysql51/5.1.58/bin/ | grep mysqld_multi
-r-xr-xr-x 1 dataich staff 24334 11 1 14:17 mysqld_multi
おお、既に入ってました。
でmy.cnfに設定を書いてあげます。[mysqld1][mysqld2][mysqld3]という感じでオプショングループを書いてあげてそれぞれの設定を記述します。
[mysqld_multi] | |
mysqld = /usr/local/bin/mysqld_safe # 使用するmysqldバイナリへのフルパス | |
mysqladmin = /usr/local/bin/mysqladmin # mysqladminへのフルパス | |
user = XXXX # 全てのサーバで使えるSHUTDOWN権限のあるユーザとパスワード | |
password = XXXX | |
[mysqld1] | |
server-id = 1 # 連番で良いはず | |
port = 3306 # 使用するポート | |
datadir = /usr/local/var/mysql_multi/1 # データディレクトリ(分けておかないと大変なことになるはず) | |
socket = /private/tmp/mysql.sock1 | |
pid-file = /usr/local/var/mysql_multi/1/mysqld.pid | |
log=/usr/local/var/log/mysql/query1.log | |
[mysqld2] | |
server-id = 2 | |
port = 3307 | |
datadir = /usr/local/var/mysql_multi/2 | |
socket = /private/tmp/mysql.sock2 | |
pid-file = /usr/local/var/mysql_multi/2/mysqld.pid | |
log=/usr/local/var/log/mysql/query2.log | |
[mysqld3] | |
server-id = 3 | |
port = 3308 | |
datadir = /usr/local/var/mysql_multi/3 | |
socket = /private/tmp/mysql.sock3 | |
pid-file = /usr/local/var/mysql_multi/3/mysqld.pid | |
log=/usr/local/var/log/mysql/query3.log |
この状態で
$ mysqld_multi start
とすれば全部立ち上がります。
またマニュアルにもありますが、特定のサーバだけ立ち上げることも可能です。
なんで今まで知らなかったのかと後悔してます。
まあアプリ側がちゃんとポート指定に対応していないと残念なことにはなりますが、非常に便利に使えそうです。
ちなみにWindows開発環境では、多分別の社員さんが書いてくれると思います。