オープンソースこねこね

Webプログラミングなどについてあれこれ。

複数のmysqldプロセスを起動するinit.dスクリプト

一つのサーバで複数のmysqldプロセスを起動させたいときがあります。 この用途のために標準でmysqld_multiというコマンドがあるのですが、

mysqld_multi — 複数のMySQL サーバ管理

このコマンドによるmysqldの起動、停止処理は即時レスポンスを返してしまって、プロセスが完全に立ち上がるのを待ってくれません。 というわけで、起動処理をちゃんと待ってレスポンスを返すような起動スクリプトが欲しかったのでinitd.dスクリプトを自作しました。

以下のスクリプトファイルを/etc/init.d/配下に実行権限つきでおいてやってください。

設定ファイルは

  • /etc/my.multi.foo.cnf
  • /etc/my.multi.bar.cnf

のようにmy.multi.#name#.cnfという形式で複数用意し、datadirpid-fileの設定などをそれぞれユニークにした設定を記述します。(MySQLのドキュメントにもあるように同じデータを複数プロセスで読み書きするのはできません)

あとは

$ sudo /etc/init.d/mysqld_multi start

を実行すれば

mysqld.foo を起動中:                                 [  OK  ]
mysqld.bar を起動中:                                 [  OK  ]

のように複数のプロセスが起動してくれます。