概要
mysqld_multiとは、端的に言うと一つのサーバーで複数のmysqlのプロセスを管理できるプログラムです。レプリケーションやバックアップ目的で、複数個のmysqlを使いたいときに、サーバーが一つしかないなどの場合には特に良く使います。
この記事では、そのmysqld_multiで、複数のmysql動かしていきましょう。
設定
まず、設定ファイルの作成をします。# vi /etc/my.cnf
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
log = /var/log/mysql/multi.log
[mysqld]
character-set-server = utf8
default-storage-engine = INNODB
log-warnings
general_log
[mysqld1]
port = 3306
datadir = /var/lib/mysql1
pid-file = /var/lib/mysql1/mysql.pid
socket = /var/lib/mysql1/mysql.sock
log-error = /var/log/mysql/error1.log
general_log_file = /var/log/mysql/query1.log
[mysqld2]
port = 3307
datadir = /var/lib/mysql2
pid-file = /var/lib/mysql2/mysql.pid
socket = /var/lib/mysql2/mysql.sock
log-error = /var/log/mysql/error2.log
general_log_file = /var/log/mysql/query2.log
このように、上からmysqld_multiの設定、インスタンスすべての共通設定、それぞれのインスタンスの設定、といった感じで設定していきます。
あとはデータのディレクトリを作成して、ログのディレクトリを作成すれば起動するだけです。
今回は/var/lib配下で指定したので、そこにデータディレクトリを作成していきます。
# 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
ログのディレクトリも作成していきます。今回は/var/log/mysql配下ですね。
# mkdir /var/log/mysql
権限も同様に変えます。
# chown mysql:mysql /var/log/mysql
上記が終了したら、mysqld_multiコマンドで起動させます。
# mysqld_multi start
ちなみに、ひとつずつ起動させたいときは
# mysqld_multi start 2
等、指定してあげるとそれだけを起動させることができます。
総括
mysqld_multi、レプリケーションの練習やバックアップの取得などに役に立ちます。レプリケーションの方法がわからなかったときに、本番環境ではさすがにできないので、こういった方法を使って練習をすることができますし、バックアップも一つのサーバーに何個も起動させておいて、それぞれに複数のデータベースのバックアップを一ヶ所に集約して管理することもできるので、便利です。