MySQLマルチマスターマルチスレーブ構成の実装

構成概要

MySQLの高可用性クラスターを実現するための多層構成として、相互にマスタースレーブ関係を持つ複数ノードのセットアップ方法を解説します。本構成は既存の主従レプリケーション技術を拡張し、2つのマスターノードと2つのスレーブノードで構成されるクラスターを構築します。

ネットワーク構成

各ノードの/etc/hostsファイルに以下のエントリを追加します。


#IPアドレス   ホスト名
192.168.1.10  masterA
192.168.1.11  masterB
192.168.1.12  slaveX
192.168.1.13  slaveY

マスターノード設定

masterA (192.168.1.10)

[mysqld]
server-id=100
gtid_mode=ON
enforce_gtid_consistency=1
auto_increment_offset=5
auto_increment_increment=10
binlog_ignore_db=mysql
binlog_ignore_db=information_schema

masterB (192.168.1.11)

[mysqld]
server-id=101
gtid_mode=ON
enforce_gtid_consistency=1
auto_increment_offset=10
auto_increment_increment=10
binlog_ignore_db=mysql
binlog_ignore_db=performance_schema

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

CREATE USER 'replica_user'@'192.168.1.%' IDENTIFIED BY 'ReplicaPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'192.168.1.%';
FLUSH PRIVILEGES;

マスターレプリケーション構築

masterAからmasterBへのレプリケーション設定

CHANGE MASTER TO
MASTER_HOST='192.168.1.11',
MASTER_PORT=3306,
MASTER_USER='replica_user',
MASTER_PASSWORD='ReplicaPass123!',
MASTER_AUTO_POSITION=1;

レプリケーション開始:START SLAVE;

masterBからmasterAへのレプリケーション設定

CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_PORT=3306,
MASTER_USER='replica_user',
MASTER_PASSWORD='ReplicaPass123!',
MASTER_AUTO_POSITION=1;

レプリケーション開始:START SLAVE;

スレーブノード設定

slaveX (192.168.1.12)

[mysqld]
server-id=200
read_only=1
gtid_mode=ON
enforce_gtid_consistency=1
replicate_ignore_db=mysql

slaveY (192.168.1.13)

[mysqld]
server-id=201
read_only=1
gtid_mode=ON
enforce_gtid_consistency=1
replicate_ignore_db=performance_schema

スレーブレプリケーション構築

slaveXの設定

CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_PORT=3306,
MASTER_USER='replica_user',
MASTER_PASSWORD='ReplicaPass123!',
MASTER_AUTO_POSITION=1;

レプリケーション開始:START SLAVE;

slaveYの設定

CHANGE MASTER TO
MASTER_HOST='192.168.1.11',
MASTER_PORT=3306,
MASTER_USER='replica_user',
MASTER_PASSWORD='ReplicaPass123!',
MASTER_AUTO_POSITION=1;

レプリケーション開始:START SLAVE;

構成検証

  • レプリケーション状態確認:SHOW SLAVE STATUS\G
  • マスターステータス確認:SHOW MASTER STATUS;
  • マスターノードでCREATE DATABASE test_db;を実行し、すべてのノードで反映を確認
  • スレーブノードでのみ読み取り専用状態を検証

タグ: MySQLレプリケーション 高可用性構成 マルチマスターコンフィギュレーション

7月9日 22:59 投稿