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