MySQLでレプリケーションしてみる(mysqld_multi)

mysqld_multiで複数起動してみる
の続き

mysqld_multiでレプリケーションしてみる。

共通設定

レプリケーションの設定をする。

$ sudo vi /etc/my.cnf
[mysqld1]
・・・
server-id=1	←追加
log-bin		←追加

[mysqld2]
・・・
server-id=2	←追加

下記の手順で、設定を反映する。

mysqldを停止。

$ sudo service mysqld_multi stop

ちょっと待って、止まってるのが確認できたら、

$ ps aux | grep mysql

起動し直す。

$ sudo service mysqld_multi start
restartだとなぜか反映されなかった。
$ sudo service mysqld_multi restart

マスター側の設定

レプリケーション用のユーザーを作成し、ロックした後、FileとPositionを確認する。

$ mysql -h 127.0.0.1 -P 3306 -u root
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@localhost IDENTIFIED BY 'password';
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      254 |              |                  |
+------------------+----------+--------------+------------------+
mysql> quit

ダンプを取得する。。

$ mysqldump -h 127.0.0.1 -P 3306 -u root --all-databases --lock-all-tables > dump.db

ロックを解除する。

$ mysql -h 127.0.0.1 -P 3306 -u root
mysql> UNLOCK TABLES;
mysql> quit

スレーブ側の設定

ダンプを取り込む。

$ mysql -h 127.0.0.1 -P 3307 -u root < dump.db

マスターの情報を設定し、レプリケーションを開始する。

$ mysql -h 127.0.0.1 -P 3307 -u root
mysql> CHANGE MASTER TO
       MASTER_HOST='127.0.0.1',
       MASTER_PORT=3306,
       MASTER_USER='repl',
       MASTER_PASSWORD='password',
       MASTER_LOG_FILE='mysql-bin.000001',	←覚えておいたFile
       MASTER_LOG_POS=254;	←覚えておいたPosition
mysql> START SLAVE;

両方YesになっていればOK。

mysql> SHOW SLAVE STATUS\G
・・・
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
・・・

確認

マスター側でデータベースを作成。

$ mysql -h 127.0.0.1 -P 3306 -u root
mysql> create database sample;
mysql> quit

スレーブ側で作成されているのが確認できる。

$ mysql -h 127.0.0.1 -P 3307 -u root
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| sample             |
| test               |
+--------------------+