LoginSignup
45
44

More than 5 years have passed since last update.

mysql_multi「を・・使わない」で同一サーバ内に複数インスタンスを立ち上げる方法

Last updated at Posted at 2014-03-08

oracleの mysqld_multi — 複数のMySQL サーバ管理の方法はスタンダードな複数起動の方法なのですが、これを運用でやると、むちゃくちゃ使いづらい。あくまでも個人レベルの使いづらいなので、大半の方は使いやすいのかもしれないが、個人的にはテスト環境と本番環境を可能な限り近い設定にしたい場合のmy.cnfの設定が本番と乖離しすぎていてしんどい。。なので、もっと簡単な方法で複数起動する運用にしている。まあ、結果としてはやっていることは同じなんですけどね。^^;

以下の3つの設定を行えば、ポート毎の複数起動ができます

1. ポート毎のデータディレクトリを作成する

ポートの名前でデータディレクトリを作成します。

# mkdir -p /var/lib/mysql/{3306,3307,3308} 
# chown -Rf mysql:mysql /var/lib/mysql/{3306,3307,3308} 
# su - mysql

$ mysql_install_db --datadir=/var/lib/mysql/3306
$ mysql_install_db --datadir=/var/lib/mysql/3307
$ mysql_install_db --datadir=/var/lib/mysql/3308

2. my.cnf をポート毎に設定する

私はこんな感じでmy.cnf + ポート番号のファイルを作成しております

# ll /etc/my.cnf.*                                                                                     
-rwxr-xr-x 1 root root 43073 Jan  6 04:54 /etc/my.cnf.3306
-rwxr-xr-x 1 root root 43047 Nov 29 11:04 /etc/my.cnf.3307
-rwxr-xr-x 1 root root 43047 Nov 29 11:04 /etc/my.cnf.3308

上記ファイルでポートとソケットの部分はユニークな値にします。私は、3306,3307,3308にしました。

# generic configuration options
port            = 3306
socket          = /var/lib/mysql/3306/mysql.sock

3. ポート毎にMySQLを起動します

起動は、以下のように3306,3307,3308それぞれ起動します。

# mysqld_safe --defaults-file=/etc/my.cnf.3306 --datadir=/var/lib/mysql/3306 --socket=/var/lib/mysql/3306/mysql.sock --port=3306 &

# mysqld_safe --defaults-file=/etc/my.cnf.3307 --datadir=/var/lib/mysql/3307 --socket=/var/lib/mysql/3307/mysql.sock --port=3307 &

# mysqld_safe --defaults-file=/etc/my.cnf.3308 --datadir=/var/lib/mysql/3308 --socket=/var/lib/mysql/3308/mysql.sock --port=3308 &

以上で、3ポートでそれぞれプロセスが起動したかと思います。尚、当該ポート毎のインスタンスに接続する際は、

  • DBサーバローカルから接続する場合
mysql -u root -p -S /var/lib/mysql/3306/mysql.sock

みたいな感じで
* リモートから接続する場合

mysql -u root -p -h xxx.xxx.xxx.xxx -P 3306

みたいな感じで行います。

尚、ポート毎に、インスタンスを停止する場合は、

mysqladmin -u root -p -S /var/lib/mysql/3306/mysql.sock shutdown

にして実行しますと、指定したポートのインスタンスが停止します。

なれると簡単なのでぜひお試しアレ。

45
44
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
45
44