user icon

mysqld_multiを使って同一マシンに複数のMySQLサーバを立てる

業務で複数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
view raw my.cnf hosted with ❤ by GitHub

この状態で

$ mysqld_multi start

とすれば全部立ち上がります。
またマニュアルにもありますが、特定のサーバだけ立ち上げることも可能です。

なんで今まで知らなかったのかと後悔してます。
まあアプリ側がちゃんとポート指定に対応していないと残念なことにはなりますが、非常に便利に使えそうです。
ちなみにWindows開発環境では、多分別の社員さんが書いてくれると思います。

Facebooktwitterlinkedintumblrmail

コメントは受け付けていません。