Philosophy is to the real world as ...

インフラ関連がメインです。

mysql5.7 Replicationについて(2)

今回は非同期レプリケーションについて実際にやってみた。

環境構築

AWS上に下記の環境を2台用意

  • CentOS 7.2 x 2
  • MySQL 5.7 インストール (インストール方法は下記を参照)

weblabo.oscasierra.net

  • MySQLの初期設定を実施

weblabo.oscasierra.net

masterの設定

  • my.cnfを下記の通り設定し、サーバRestart
log-bin=mysql-bin   # バイナリログのファイル名prefix
server-id=1  # MySQLサーバ固有のID(1 〜 (2^32)−1)
  • mysqlにログインしユーザ作成 (ユーザ名、パスワード、ホストは適当な値にする)
  • masterのバイナリログファイルのpositionを確認
[centos@ip-192-168-120-242 ~]$ mysql -u root -p
Enter password:
...
mysql> use mysql
mysql> create user 'repl'@'192.168.120.%' IDENTIFIED BY 'xxxx';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.120.%';
Query OK, 0 rows affected (0.00 sec)

mysql> select Host,User from user;
+---------------+-----------+
| Host          | User      |
+---------------+-----------+
| 192.168.120.% | repl      | <===ユーザが作成されている
| localhost     | mysql.sys |
| localhost     | root      |
+---------------+-----------+

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      325 |              |                  |                   | <===positionを確認
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

slave側での設定

  • my.cnfを下記の通り設定し、MySQLをRestart
server-id=2
[centos@ip-192-168-120-49 ~]$ mysql -u root -p
Enter password:
...
mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.120.242',
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='xxxx',
    -> MASTER_LOG_FILE='mysql-bin.00001',
    -> MASTER_LOG_POS=325;

mysql> exit
Bye
[centos@ip-192-168-120-49 ~]$ sudo systemctl restart mysqld.service

動作確認

  • masterにてデータベース作成
mysql> create database repltest;
Query OK, 1 row affected (0.00 sec)
mysql> create database repltest;
Query OK, 1 row affected (0.00 sec)

ということで非同期レプリケーションは実際に確認できた。
また、その他の機能でマルチマスターレプリケーションとかバイナリログの記録形式とか設定できるようだけれどもそれはまたの機会とする。