Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

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

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

hit
なんとなくデータベースエンジニア。なんとなくメモしてます
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした