構成概要
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;を実行し、すべてのノードで反映を確認 - スレーブノードでのみ読み取り専用状態を検証