CLOVER🍀

That was when it all began.

MySQL 5.7でレプリケーションを構成する

MySQL 5.7で、レプリケーション構成を組んでみます。

MySQLサーバーは、以下の2つを用意。

  • MySQL 5.7.17 - Master - 172.17.0.2
  • MySQL 5.7.17 - Slave - 172.17.0.3

レプリケーションに使用するユーザーは「repl」とします。

Master側の設定

Master側のmy.cnfには、少なくとも次の設定を入れておきます。

## gtid
gtid_mode = on
enforce_gtid_consistency = on

## binary log
log-bin = mysql-bin

## replication
server_id = 1
log_slave_updates

GTIDを使った設定にすることにしました。

Slave側の設定

Slave側の設定は、次のように。

## gtid
gtid_mode = on
enforce_gtid_consistency = on

## binary log
log-bin = mysql-bin

## replication
server_id = 2
log_slave_updates
read_only = on

一応、Slaveは読み取り専用にしています。

レプリケーション用のユーザーの作成

Master側でレプリケーション用のユーザーの作成を行います。

今回作成するユーザーは、以下としました。

repl / password

では、実行。

CREATE USER 'repl'@'172.17.0.0/255.255.255.0' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.17.0.0/255.255.255.0';

接続元は、今回は「172.17.0.0/255.255.255.0」の範囲で許可するものとします。

レプリケーションの設定

ここまでできたら、あとはSlave側でMasterへの接続設定と、レプリケーションの開始を指示します。

Slave側で、以下のコマンドを実行。

CHANGE MASTER TO MASTER_HOST = '172.17.0.2', MASTER_PORT = 3306, MASTER_AUTO_POSITION = 1, MASTER_HEARTBEAT_PERIOD = 60;
START SLAVE USER = 'repl' PASSWORD = 'password';

「SHOW SLAVE STATUS」を実行し

mysql> SHOW SLAVE STATUS\G

「Slave_IO_Running」と「Slave_SQL_Running」がともに「Yes」となっていれば、レプリケーション設定が完了です。

             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

あとは更新系のSQLを実行して、変更内容がSlaveに伝播していることを確認しましょう。