mysqld_multiで複数起動してみる

VirtualBoxにCentOSをとりあえずインストール
の続き

mysqld_multiで複数起動してみる。
今回は2つ起動する。

【参考】
mysqld_multiで複数のインスタンスを立ち上げ - ngの日記
http://ngyuki.hatenablog.com/entry/20120321/p1

MySQLサーバ複数起動メモ - Wikimura
http://www.kimura-lab.net/wikimura/index.php/MySQL%E3%82%B5%E3%83%BC%E3%83%90%E8%A4%87%E6%95%B0%E8%B5%B7%E5%8B%95%E3%83%A1%E3%83%A2

virtualbox(centos)でMYSQLインストールメモ(mysqld_multiで複数インスタンス起動まで) - Qiita
http://qiita.com/ryurock/items/73df4ab45c96092b63b8

MySQLのインストール

とりあえずrootになって、MySQLをインストールする。

$ su -
# yum -y install mysql-server

複数起動の設定

念のためmy.cnfのコピーをとっておく。

# cp /etc/my.cnf /etc/my.cnf.bk

my.cnfをmysqld_multi用に書き換える。

# vi /etc/my.cnf
[mysqld]
#datadir=/var/lib/mysql		←コメントアウト
#socket=/var/lib/mysql/mysql.sock	←コメントアウト
・・・

↓↓↓以下追加↓↓↓
[mysqld_multi]
mysqld=/usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin

[mysqld1]
port = 3306
datadir = /var/lib/mysql1
socket = /var/lib/mysql1/mysql.sock
pid-file = /var/lib/mysql1/mysql.pid

[mysqld2]
port = 3307
datadir = /var/lib/mysql2
socket = /var/lib/mysql2/mysql.sock
pid-file = /var/lib/mysql2/mysql.pid

MySQLのデータのディレクトリを設定する。

# mysql_install_db --datadir=/var/lib/mysql1 --user=mysql
# mysql_install_db --datadir=/var/lib/mysql2 --user=mysql
# chown -R mysql:mysql /var/lib/mysql1 /var/lib/mysql2

mysqld_multiの確認

以上で、mysqld_multiを起動できる。

# mysqld_multi start

1と2が起動しているのが確認できる。

# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running

stopで停止。

# mysqld_multi stop
# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is not running
MySQL server from group: mysqld2 is not running

起動スクリプト

起動スクリプトを作成する。

# vi /etc/init.d/mysqld_multi
#!/bin/sh

# Mysql daemon start/stop script.
#
# chkconfig: 2345 90 90
# description: A very fast and reliable SQL database engine.

MYSQLDIR=/usr
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:$MYSQLDIR/bin
MYSQLID=1,2
export PATH

case "$1" in
start)
echo -n "Starting mysqld: "
$MYSQLDIR/bin/mysqld_multi start $MYSQLID
echo
;;
stop)
echo -n "Shutting down mysqld: "
$MYSQLDIR/bin/mysqld_multi stop $MYSQLID
echo
;;
status)
$MYSQLDIR/bin/mysqld_multi report $MYSQLID
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac

exit 0

実行できるようにする。

# chmod 755 /etc/init.d/mysqld_multi

これで、serviceコマンドから起動できる。

# service mysqld_multi start

chkconfigもできるようにする。

# chkconfig --add mysqld_multi

これで、自動起動の設定ができる。

# chkconfig mysqld_multi on

以上で、設定完了。

# exit
/etc/init.d/mysqld_multi
のファイルに
# chkconfig: 2345 90 90
# description: A very fast and reliable SQL database engine.
のコメントが無いと、
「サービス mysqld_multi は、chkconfig をサポートしていません。
のエラーになる。

接続

下記のようにホストとポート番号を指定すると、MySQLに接続できる。

$ mysql -h 127.0.0.1 -P 3306 -u root
mysql>
ホストを指定しないと下記のようなエラーになる。
$ mysql -P 3306 -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)