SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【MySQL】mysqld_multiで複数のmysqldを起動する

問題

1台のマシンに複数のMySQLサーバーを起動したい。

解答例

ポートなどの設定を変えて、複数のmysqlサーバーを起動することができる。

1つのMySQLサーバーインスタンスが1つのデータベースで、いわゆるMySQLのデータベースはスキーマに相当するようなものなので、複数のデータベースが欲しいときは、複数インスタンス起動するのが正解なのではないかと思う。

とにかく、その方法。

1、設定ファイル

/etc/my.cnf をコピーして /etc/my-3307.cnf などを作るのは気持ち悪いので避ける。

mysqld_multi を使って複数起動させてみる。

mysqld_multi で複数サーバーを起動する場合は 通常の設定ファイル /etc/my.cnf に、[mysqld_multi]のセクションと、[mysqld1]、[mysqld2]、[mysqld3]…のセクションを追加すればよい。

・記述例

#これは /etc/my.cnf に通常ある、1つ目のインスタンス用の設定
[mysqld]
port = 3306
socket = /tmp/mysql.sock
<中略>

#mysql_multi用の設定
[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
#user       = multi_admin
#password   = multipass

#別のインスタンス用の設定のセクションを[mysqldN]形式で欲しいだけ追加
[mysqld1]
port = 3307
socket = /tmp/mysql.sock1
pid-file = /usr/local/mysql/var1/softel.pid1
datadir = /usr/local/mysql/var1
mysqld = mysqld
ledir = /usr/local/mysql/libexec 必要だったり必要じゃなかったり
user = mysql

2、データベースを作る(データディレクトリを初期化)

# mysql_install_db --user=mysql --datadir=/usr/local/mysql/var1

3、起動&停止

これだけ!

# mysqld_multi start 1
# mysqld_multi stop 1

4、クライアントから接続

ローカルの場合、ポートを指定したいのでIPも指定する。

$ mysql -h 127.0.0.1 -P 3307 -u xxxuser -p

いつも使っている方はいつもどおりで。

$ mysql -u xxxuser -p

関連するメモ

コメント