MySQLのレプリケーションやってみた
読んでる本にMySQLは冗長化必須ですみたいなことがたくさん書いてあってなるほどという感じだったのだけどやったことなかったのでやってみた。
slaveを追加する時は、masterをtable lockする必要があり、lock中にmasterのメタ情報をslaveに書き込んで同期を始める感じ。
lockが必須というかそのままダンプするとlockされてしまう感じみたい。
- master = 192.168.56.1
- slave = 193.168.56.101
手順
1) master側でslaveからの接続用ユーザを作成する。
grant replication slave on *.* to 'repl'@'192.168.56.101' identified by 'pass';
1.5) my.confを修正する。
masterとslaveに一意になるようなserveri-idを設定する。 && restartする。
[mysqld]
log-bin=mysql-bin
server-id=1001
2) masterのダンプをslaveにリストアする
mysqldump -uroot mydb | ssh koji@192.168.56.101 mysql -urepl mydb --password=pass;
3) slaveにmasterのメタ情報を設定する
CHANGE MASTER TO
MASTER_HOST='192.168.56.1',
MASTER_USER='repl',
MASTER_PASSWORD='pass',
MASTER_LOG_FILE='mysql-bin.000005',
MASTER_LOG_POS=154;
MASTER_LOG_FILE, MASTER_LOG_POSは、masterでshow master status
の結果からもってくる。
4) 同期を開始する
slaveから次のコマンドを実行する。
start slave ;
syslogとか見たりエラー起きてないかなど動作確認する。
できるまで間違ったこと
- masterでユーザ作成で間違っててslaveからmasterに接続できなかった。
- server-idが重複してた。
無停止なるほど => http://qiita.com/hit/items/7747394e8f2f6a515535
RDSすげえ。
-
tags: