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。
$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してる。
原因は、追う時間がないのでまた今度。