由於最近公司服務器要遷移;原來的數據庫架構是一主一從的架構(主庫A---從庫C);增長多一臺從庫服務器B。數據庫
如今要把從庫B替換主庫A;從庫C繼續做爲B的從庫。服務器
一主2從簡單說一下步驟;具體步驟省略。架構
首先搭建好從庫B,配置好my.cnf 的server_idspa
1,先停掉從庫C.stop slave日誌
2,記住從庫C的同步狀態。 show slave status\G 記住Master_Log_File 和Read_Master_Log_Pos 的位置和點。server
3,備份從庫C,備份完成後導入從庫B。blog
4,主庫A受權用戶從庫B。ip
5,從庫B change master 作主從複製。(用從庫C的 位置和點)同步
以上操做完成後,如今的架構是 一主兩從的架構;如今要把從庫B升級爲從庫c的主庫變爲級聯架構。it
首先從庫B要開啓二進制日誌。而且還要加上參數 log_slave_updates = 1 在受權一個複製用的賬號給從庫C。
當從庫log_slave_updates參數沒有開啓時,從庫的binlog不會記錄來源於主庫的操做記錄。只有開啓log_slave_updates,從庫binlog纔會記錄主庫同步的操做日誌。
- 先在從庫C上執行STOP SLAVE。show slave status \G查看從庫C複製主庫A的位置Exec_Master_Log_Pos。
- 在從庫B上執行show slave status \G;查看從庫B上的Exec_Master_Log_Pos是否已經大於從庫C上的Exec_Master_Log_Pos,若是大於,則執行stop slave停掉從庫B的複製,這時須要記下從庫B上的 Relay_Master_Log_File: tex-bin.003882 ,Exec_Master_Log_Pos: 322474479 兩個值,在從庫B上執行show master status,記下BINLOG文件名字File(B)以及位置Position(B),而後start slave開啓複製。
- 在從庫C上執行start slave until master_log_file='tex-bin.003882',master_log_pos=322474479; 讓從庫C複製到從庫B的位置。 show slave status \G 查看從庫C上的Until_Log_Pos與Exec_Master_Log_Pos是否相等,若是相等則stop slave關閉複製。而後把從庫C的主庫指向從庫B,change master to
master_host='B_ip',
master_port=3306,
master_user='rep',
master_password='xxxx',
master_log_file=File(B),
master_log_pos=Position(B),
master_connect_retry=3;
而後start slave開啓複製。OK,結束了,就是這樣!