はじめに
MacOS上でレプリケーションを試してみるために、mysqld_multiを使ってMySQLを複数立ち上げようと思いました。
mysqld_multiに関する記事はいくつかありましたが、ハマった点が多くあったので、自分が最終的に出来たやり方をご紹介します。
やり方
/etc/my.cnfという設定ファイルを作成する
>shell sudo vim /etc/my.cnf
/etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = password
[mysqld]
[mysqld1]
server-id = 1
socket = /tmp/mysql.sock
port = 3306
pid-file = /usr/local/var/mysql/my.local.pid
datadir = /usr/local/var/mysql
user = root
[mysqld2]
server-id = 2
socket = /tmp/mysql.sock2
port = 3307
pid-file = /usr/local/var/mysql2/my.local.pid2
datadir = /usr/local/var/mysql2
user = root
mysql用のディレクトリを作成する
>shell cd /usr/local/var
>shell sudo mkdir mysql
>shell sudo mkdir mysql2
各ディレクトリにおいてmysqlを初期化する
1つ目初期化
>shell mysql_install_db --defaults-file=/etc/my.cnf --datadir=/usr/local/var/mysql --basedir=/usr/local/Cellar/mysql/5.7.18
1つ目パスワード確認(メモっておこう)
>shell cat ~/.mysql_secret
# Password set for user 'root@localhost' at 2017-06-27 13:15:32
k>,gLo3sw;>p
2つ目も同様に
>shell mysql_install_db --defaults-file=/etc/my.cnf --datadir=/usr/local/var/mysql2 --basedir=/usr/local/Cellar/mysql/5.7.18
>shell cat ~/.mysql_secret
mysqld_multiでmysqlを立ち上げる
現状を確認
>shell mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is not running
MySQL server from group: mysqld2 is not running
mysqlを立ち上げる
>shell mysqld_multi start
>shell mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running
mysqlにログインしてみる
以下の操作を両方のmysqlで行いましょう。
まずはログイン
>shell mysql -h 127.0.0.1 -P 3306 -u root -p
Enter password:
パスワードが聞かれるので、先ほど確認したものを入力しましょう。
パスワード変更
初期パスワードのままだと、他の操作をしようとするたびにエラーになるので、先ずは変更しましょう。
alter user root@localhost IDENTIFIED BY 'password';
mysqlをstopする用のユーザーを作成する
>mysql grant shutdown on *.* to multi_admin@localhost identified by 'password';
mysqlをstopする
>shell mysqld_multi --user=multi_admin --password='password' stop