2014/03/14

mysql replication 移行 昇格

■移行前すべてslaveの状態を確認

すべてのスレーブがリレー ログ内のクエリを処理したかどうかを確認してください。
それぞれのスレーブでは、STOP SLAVE IO_THREAD を発行して、Has read all relay log を確認できまるまで、
SHOW PROCESSLIST の出力をチェックします。
すべてのスレーブでこれが確認できたら、これらを新たな設定として構成できます。

show slave status\G
・readMasterPostion,execMasterPositionは同じであること

■slaveをマスターに
・log-slave-updateは無効であること
stop slave
RESET MASTER


■マスター変換
stop slave;
reset slave;
CHANGE MASTER TO 
 MASTER_HOST='',
 MASTER_USER=''
 MASTER_PASSWORD=''
 MASTER_PORT=
 MASTER_LOG_FILE='?'
 MASTER_LOG_POS=?;
start slave;
show slave status\G;

※移行じゃないの場合:
CHANGE MASTER では、Slave1 のバイナリ ログ名や読み込み先のバイナリ ログ位置を指定する必要はありません。

※移行じゃないの場合:
CHANGE MASTER のデフォルトでは、一番初めのバイナリ ログ、そして位置は 4 です。

==>とりあえず、MASTER_LOG_FILEとMASTER_LOG_POSを指定する方が無難


■A(master)ー>B(master+slave)ー>C(slave)
 Bでlog-slave-updateを有効にする必要、じゃなと、binログに内容を出力しない
 

■安全措置
・結果を予測できないない、skip-slave-startで起動時slaveを無効にして、
readMasetLogPosition,execMasterLogPositionを記録する

・relay-bin.infoで上記の情報もある。