マスター側設定
レプリケーション用のユーザーを作成
GRANT REPLICATION SLAVE ON *.* TO repl@% IDENTIFIED BY 'password';
my.cnf(winの場合はmy.ini)を修正(追加)
[mysqld]
log-bin = mysql-bin
server-id = 1001
mysqlを再起動
service mysqld restart
mysqlのスナップショットを作成
mysqlにて
# DBロック
FLUSH TABLES WITH READ LOCK;
# 現在のバイナリポジションを取得
SHOW MASTER STATUS;
# File、Positionはスレーブ側の設定に必要なので控えておく
別ターミナル等でDBのバックアップを取る(mysqldumpを利用)
mysqldump -u user -p --all-databases --lock-all-tables > snapshot.db
DBロックを解除
mysqlにて
UNLOCK TABLES;
スレーブ側設定
my.cnfを修正(追加)
[mysqld]
log-bin=mysql-bin
log_slave_updates #このスレーブを他のマスターとして使いたい場合追加
server-id=1002
マスタで作成したスナップショットを復元
mysql -u user -p < snapshot.db
mysqlを再起動
service mysqld restart
マスタ情報を登録
CHANGE MASTER TO
MASTER_HOST='sample.com',
MASTER_USER='rep-user',
MASTER_PASSWORD='passwd',
MASTER_LOG_FILE='mysql-bin.000001', #マスターのFIle
MASTER_LOG_POS=98; #マスターのPosition
スレーブをスタート
START SLAVE;
# STOP SLAVE;RESTART SLAVE;RESET SLAVE;
起動確認
SHOW SLAVE STATUS\G