MySQLマスター・スレーブ構築ガイド

MySQL 5.7を例として、マスター・スレーブ構成の設定手順を説明します。

3台のMySQLサーバーを準備します:192.168.1.115(マスター)、192.168.1.116(スレーブ)、192.168.1.117(スレーブ)。デフォルトポートはすべて3306です。

  1. MySQLのデプロイ:

重要な前提条件として、3台のマシンでserver-idは必ず異なる値に設定する必要があります。

192.168.1.115:
server-id: 1

192.168.1.116:
server-id: 2

192.168.1.117:
server-id: 3

server-idの変更後、MySQLを再起動してください。

もちろん、他のパラメータも変更可能です:

[mysqld]
# バイナリログを有効化
log-bin=ecommerce-mysql-bin
# server-idを設定(スレーブと重複しないこと)
server-id=1
# 使用するバイナリログ形式を設定(row=行レベル;statement=文レベル;mixed=混合レベル)
binlog-format=mixed
# 同步するデータベース名を設定。未設定の場合はすべてのデータベースを同期
## binlog-do-db=db1
# 同步しないデータベース名を指定
binlog-ignore-db=mysql
# バイナリログが使用するメモリサイズ(トランザクション単位)
binlog_cache_size=1M
# バイナリログの自動削除期間。デフォルト0は自動削除なし
expire_logs_days=7
# マスター・スレーブレプリケーションで発生するエラーを無視
## 例:1062エラーコードは主キーの重複;1032エラーコードはデータ不一致
slave_skip_errors=1062

上記の中で、server-idとlog-binは各サーバーで異なる値に設定する必要があります。

  1. ユーザー作成:

マスター側で、データ同期用のユーザーを作成し、権限を付与します。

CREATE USER 'replicator'@'%' IDENTIFIED BY 'secure_password';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicator'@'%';

flush privileges;
  1. マスター状態の確認(fileとpositionを記録)

show master status;

FileとPositionの値を記録してください。この後、マスター側で操作を行わないでください。そうするとマスター状態が変化し、FileとPositionの値も変わってしまいます。

  1. スレーブノードの設定と同期開始

スレーブ側のMySQLクライアントに接続し、以下のコマンドを実行してください。(注意:master-log-posの位置は一致させる必要があります)

change master to master_host='192.168.1.115', master_user='replicator', master_password='secure_password', master_port=3306, master_log_file='ecommerce-mysql-bin.000003', master_log_pos=154, master_connect_retry=30;

上記パラメータの説明:

コマンドの説明:
master_host:マスターデータベースのアドレス
master_port:マスターのポート番号
master_user:データ同期に使用するユーザー名
master_password:同期用ユーザーのパスワード
master_log_file:スレーブがどのログファイルからデータを複製し始めるか指定(上記のFile値)
master_log_pos:どのPositionから読み始めるか指定(上記のPosition値)
master_connect_retry:接続に失敗した場合の再試行間隔(秒単位、デフォルトは60秒)

4.1. マスター・スレーブレプリケーションの開始

スレーブ側で以下を実行します:

start slave;

4.2. 状態の確認

show slave status\G

Slave_IO_RunningとSlave_SQL_Runningはマスター・スレーブが正常に動作しているか確認するための重要なフィールドです。デフォルトではYESとなり、マスター・スレーブの状態が正常であることを示します。

タグ: MySQLレプリケーション マスター・スレーブ構成 データベース同期 高可用性

6月30日 18:26 投稿