検討!目論見検討委員会

最近はコミケの締切情報メイン

mysqld_multiで複数立ち上げた時に、mysqlコマンドで接続しようとして大いにはまった

ただのメモ。

/etc/my.cnfで、datadirとport、pid、socketをそれぞれ指定。こんな感じ。

[mysqld_multi]
mysqld     = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user       = mysql

[mysqld1]
socket     = /tmp/mysql.1.sock
port       = 3306
pid-file   = /usr/local/mysql/var/hostname.pid2
datadir    = /usr/local/mysql/var
user       = mysql

[mysqld2]
socket     = /tmp/mysql.2.sock
port       = 3307
pid-file   = /usr/local/mysql/var2/hostname.pid3
datadir    = /usr/local/mysql/var2
user       = mysql

my.cnfの例は本家を参照:MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.3.4 mysqld_multi — 複数の MySQL サーバーの管理

/usr/local/mysql/bin/mysqld_multi start 1,2

とやって、port 3306と3307で起動しているところまで確認。
mysqlが立ち上がっている同じマシンで、下のコマンドラインで接続しようとしたら、なぜかport 3306のmysqlに接続される。

mysql -u user -p -P 3307

とか、

mysql -u user -p -h localhost -P 3307

解決

mysql -u user -p -h 127.0.0.1 -P 3077

ちょいとググってみたら、

127.0.0.1 と ポート番号 を指定するのがキモ。

http://www.avant-tokyo.com/solaris/mysql_parallel.html

と、書いてあったので解決した。THX。

mysqlへ接続するphpを書いていて、

$conn = mysql_connect("localhost", "user", "password");

だと/tmp/mysql.sockが無いよエラー。
以下は接続できた。

$conn = mysql_connect(":/tmp/mysql.2.sock", "user", "password");

もういっちょ接続できる例

$conn = mysql_connect("127.0.0.1:3307", "user", "password");

IP指定とソケット指定があるのか。mysqlのマニュアルでも見てみるか。

やっぱ問題が(追記:2009/07/01)

/usr/local/mysql/bin/mysqld_multi stop 1,2

これが聞かない。reportしてもrunnninngになっている。
しばらく待っても落ちる様子がないのでkillしてる。
原因は、追う時間がないのでまた今度。