複数起動する意味というか実用性はまったくない
ただ開発環境でマスタスレーブのレプリケーション環境を構築したかっただけ
一応開発環境のバックアップ的要素にはなるかも
mysqld_multiを利用してmysqlを複数起動します
mysql-serverをyumなんかでインストールしてれば入ってるはず
環境
- CentOS release 6.6 (Final)
- mysql 5.6.22
手順
マスタ、スレーブDB作成
既にmysqlがインストールされていて起動していればそれをそのまま利用することも可能
今回はマスタ、スレーブともに新しく作ります
# マスタ用
mkdir /var/lib/mysql-master
chown mysql.mysql /var/lib/mysql-master
mysql_install_db --datadir=/var/lib/mysql-master
# スレーブ用
mkdir /var/lib/mysql-slave
chown mysql.mysql /var/lib/mysql-slave
mysql_install_db --datadir=/var/lib/mysql-slave
my.confの設定
# 念のため元の設定ファイルとっておく
cp /etc/my.cnf /etc/my.cnf.org
# mysqld_multiの設定例を表示
# これを元に設定します
mysqld_multi --example
# 設定した内容
cat /etc/my.cnf
[mysqld_multi]
mysqld=/usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
[mysqld1]
port = 3306
datadir = /var/lib/mysql-master
socket = /var/lib/mysql-master/mysql.sock
pid-file = /var/lib/mysql-master/mysql.pid
log-error = /var/log/mysql-master.log
[mysqld2]
port = 3307
datadir = /var/lib/mysql-slave
socket = /var/lib/mysql-slave/mysql.sock
pid-file = /var/lib/mysql-slave/mysql.pid
log-error = /var/log/mysql-slave.log
起動と確認、停止など
# DBステータスを確認
mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is not running
MySQL server from group: mysqld2 is not running
# 起動(初回は初期化処理が走ります)
mysqld_multi start
mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running
# 停止
mysqld_multi stop
各デーモンのコンソールにアクセスする方法
ソケットを指定してアクセスします
# MasterDB
mysql --socket=/var/lib/mysql-master/mysql.sock
# SlaveDB
mysql --socket=/var/lib/mysql-slave/mysql.sock
レプリケーションの設定
あとはmy.cnfいじってレプリケーションの設定をする
設定かくのめんど…割愛します!
起動スクリプトの作成と設定
vim /etc/init.d/mysqld_multi
chmod 766 /etc/init.d/mysqld_multi
cat /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
# 自動起動設定
chkconfig mysqld_multi on