mysqld_multiで複数のインスタンスを起動する【MariaDB】
mysqld_multiで複数のMySQLサーバーを起動する
MariaDBで複数のMySQLのインスタンスを起動するには「mysqld_multi」を利用するとできます。
検証したサーバーは、少し古くCentOS 7系で、MariaDBのバージョンは「mariadb 5.5」と少し古いバージョンです。
今のCentOS 8系の「mariadb 10.3」でも、同じ設定でできるかと思います
1.既存の設定及びDBをバックアップする
複数のMySQLサーバーを起動する前に既存の設定をバックアップしておきます
# DBをバックアップ $ sudo mysqldump -u root -p --all-databases --lock-all-tables > /var/tmp/dbdump.db # my.cnf のバックアップ $ sudo cp /etc/my.cnf /etc/my.cnf.bak
2.新しいMySQLのディレクトリを作成する
新しいMySQL用のDB等を保存するディレクトリを作成します
# 新しいMySQL用のデータディレクトリ作成 $ sudo mkdir /var/lib/mysql2 # データディレクトリを初期化 $ sudo mysql_install_db --user=mysql --datadir=/var/lib/mysql2 # 所有者を「mysql」に変更 $ sudo chown -R mysql:mysql /var/lib/mysql2
mysqld_multi 用に my.cnf を変更
「/etc/my.cnf」を「mysqld_multi」のセクションの追加と「mysqld」の設定を「mysqld1」に変更して、複数起動する「mysqld2」、「mysqld3」とか設定していきます
$ sudo vim /etc/my.cnf [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin user = multi_admin password = multipass [mysqld] [mysqld1] port = 3306 datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock pid-file = /var/run/mariadb/mariadb.pid log-error = /var/log/mariadb/mariadb1.log # slave [mysqld2] port = 3307 datadir = /var/lib/mysql2 socket = /var/lib/mysql2/mysql2.sock pid-file = /var/run/mariadb/mariadb2.pid log-error = /var/log/mariadb/mariadb2.log
mysqld_multiを起動する
通常のMariaDBを停止してから、mysqd_multiを起動します。
$ sudo systemctl stop mariadb.service $ sudo mysqld_multi start $ sudo mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld1 is running MySQL server from group: mysqld2 is running
mysqld_multi stopを実行するユーザーの追加
mysqld_multi stopを実行するユーザーを作成します。SHUTDOWN権限をmulti_adminに付与します
$ mysql -u root -p MariaDB [(none)]> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass' WITH GRANT OPTION; MariaDB [(none)]> flush privileges; $ mysql -h 127.0.0.1 -P 3307 -u root -p MariaDB [(none)]> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass' WITH GRANT OPTION; MariaDB [(none)]> flush privileges;
multi_adminで、mysqld_multi stopできるか確認します
$ sudo mysqld_multi stop $ sudo mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld1 is not running MySQL server from group: mysqld2 is not running $ sudo mysqld_multi start $ sudo mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld1 is running MySQL server from group: mysqld2 is running
複数のMySQLサーバーにログインする方法
通常の3306ポートで起動しているMySQLには、通常取りにクライアントから接続できますが、通常と違うポートに接続するにはポートをしてする必要があります。ポートを指定するには「-P ポート番号」とします
# ポートが3307の場合は「-P 3307」とします $ mysql -h 127.0.0.1 -P 3307 -u root -p
ディスカッション
コメント一覧
まだ、コメントがありません