LoginSignup
1
3

More than 5 years have passed since last update.

MySQL サーバー1つで複数DBを起動する

Posted at

複数起動する意味というか実用性はまったくない
ただ開発環境でマスタスレーブのレプリケーション環境を構築したかっただけ
一応開発環境のバックアップ的要素にはなるかも

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
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3