環境
OS: Windows Server 2019
MySQLバージョン: 8.0
サーバー1: 10.20.6.90
サーバー2: 10.20.6.99
1. my.iniファイルの編集
設定ファイルは C:\ProgramData\MySQL\MySQL Server 8.0\my.ini に配置します。
サーバーA(10.20.6.90)の設定:
[mysqld]
server-id=1
log_bin= MASTER01-bin
binlog-do-db = target_database
log-slave-updates
sync_binlog = 1
auto_increment_increment=2
auto_increment_offset=1
replicate-do-db=target_database
サーバーB(10.20.6.99)の設定:
[mysqld]
server-id=2
log_bin= MASTER02-bin
binlog-do-db = target_database
log-slave-updates
sync_binlog = 1
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=target_database
設定を反映させる:
net stop mysql80
net start mysql80
2. レプリケーションユーザーの作成
サーバーA側:
コマンドプロンプトで MySQL の bin ディレクトリ(C:\Program Files\MySQL\MySQL Server 8.0\bin)に移動し、MySQLにログインします。
mysql -u root -pパスワード
ログイン後、以下のSQLを実行してレプリケーションユーザーを作成します:
mysql> CREATE USER 'syncuser'@'10.20.6.99' IDENTIFIED BY 'pass12345';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'syncuser'@'10.20.6.99';
mysql> FLUSH PRIVILEGES;
サーバーB側:
同様にMySQLにログインし、以下のSQLを実行します:
mysql> CREATE USER 'syncuser'@'10.20.6.90' IDENTIFIED BY 'pass67890';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'syncuser'@'10.20.6.90';
mysql> FLUSH PRIVILEGES;
3. バイナリログ情報の確認
サーバーAで実行:
mysql> SHOW MASTER STATUS\G;
出力される File と Position の値を記録します。
サーバーBで実行:
mysql> SHOW MASTER STATUS\G;
同様に File と Position の値を記録します。
4. スレーブ接続の設定
サーバーAからサーバーBへのレプリケーション設定:
mysql>
CHANGE MASTER TO
MASTER_HOST='10.20.6.99',
MASTER_USER='syncuser',
MASTER_PASSWORD='pass12345',
MASTER_LOG_FILE='MASTER02-bin.000001',
MASTER_LOG_POS=307;
サーバーBからサーバーAへのレプリケーション設定:
mysql>
CHANGE MASTER TO
MASTER_HOST='10.20.6.90',
MASTER_USER='syncuser',
MASTER_PASSWORD='pass67890',
MASTER_LOG_FILE='MASTER01-bin.000001',
MASTER_LOG_POS=321;
5. レプリケーションの起動と確認
サーバーA:
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G;
以下の2つの項目が Yes となっていることを確認します:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
サーバーB:
同様のコマンドを実行して確認を行います。
もし No が表示される場合は、Last_Error の内容を参考に設定を修正してください。