MySQLスレーブサーバー追加

概要
masterdb.example.com 10.0.0.1 MySQL 5.5
slavedb01.example.com 10.0.0.2 MySQL 5.5

があって既にレプリケーション環境は出来ている状態です。


ここに2台目のスレーブサーバー

slavedb02.example.com 10.0.0.2 MySQL 5.5

を追加する手順です。

  • masterdbのMySQLデーモンは止めない(無停止)。
  • slavedb01はメンテナンス中はスレーブ機能は停止する。


手順

1. slavedb01に対しての参照をmasterdbへ向ける

レプリケーションが停止するので参照をスレーブではなくマスターに向け直します。

2. slavedb01のレプリケーションを停止
STOP SLAVE;


3. slavedb01でMaster_Log_File、ポジション情報確認
show slave status\G

必ず、STOP SLAVE;後に行う。

Master_Log_File: mysqld-bin.000391
Read_Master_Log_Pos: 637218407

Slave_IO_Running: No
Slave_SQL_Running: No

になっていることを確認します。
以下の手順は上記のファイル名、ポジション番号を使用します。

4. masterdbへslavedb02用のレプリケーションユーザを作成
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'10.0.0.3' IDENTIFIED BY 'password';


5. slavedb01からslavedb02へデータコピー

slavedb01の/var/lib/mysql以下をそのままslavedb02にコピーします。

6. slavedb01のレプリケーション再開

データコピーが完了したら、スレーブを再開させます。

START SLAVE;

一応ここでSHOW SLAVE STATUS¥Gで同期されているか確認しておきます。
問題がなければ同期がマスターに追いつきます。

7. slavedb02のレプリケーション設定
CHANGE MASTER TO MASTER_HOST = '10.0.0.1',MASTER_USER = 'replication',MASTER_PASSWORD = 'password',MASTER_LOG_FILE = 'mysqld-bin.000391',MASTER_LOG_POS = 637218407; 


8. slavedb02のレプリケーション開始

レプリケーションを開始します。

START SLAVE;


SHOW SLAVE STATUS¥G

で同期されているか確認します。

以上でスレーブサーバー追加作業は完了です。

9. masterdbに対しての参照をslavedb01, slavedb02に向け直す

手順1で参照をマスターに向けていましたが、スレーブに向け直します。