目標:主庫宕機了,從庫提升為主庫
准備環境:
1台web服務器
3台MySQL服務器
環境說明:
1.web上跑著bbs網站服務,由MySQL-01提供數據庫服務
2.MySQL-02和-03是MySQL-01的從庫
突發事件:
這個時候,MySQL機器宕機,bbs.teddy.com是打不開的,提示無法連接數據庫
一主多從宕機從庫切換主繼續和從同步過程步驟:
確保所有的relay log全部更新完畢
在每個從庫上執行stop slave io_thread; show processlist;
直到看到Has read all relay log,則表示從庫更新都執行完畢了
所有的relay log全部更新完畢
登陸所有從庫,查看master.info文件,對比選擇pos最大的作為新的主庫,這裡我們選擇mysql-02為新的主庫
登陸mysql-02,執行stop slave; 並進入數據庫目錄,刪除Info和relay-log.info文件, 配置my.cnf文件,開啟log-bin,如果有log-slaves-updates和read-only則要注釋掉;提升從庫為主庫,執行reset master,
創建用於同步的用戶
grant replication slave on *.* to rep@’10.0.0.%’ indentified by ‘123456’; flush privileges;
創建用於bbs網站使用的用戶
GRANT ALL ON bbs.* TO ‘bbs’@’Web-01’ IDENTIFIED BY ‘123456’; flush privileges;
更新所有機器上的hosts文件
[root@web-01 teddylu]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ###########by teddylu########### 10.0.0.201 LVS-DR-01 10.0.0.202 LVS-DR-02 10.0.0.203 Web-01 10.0.0.204 Web-02 #10.0.0.205 MySQL-01 #10.0.0.206 MySQL-02 10.0.0.206 MySQL-01 #bbs的網站程序中關於數據庫的信息裡,MySQL-01是數據庫的地址 10.0.0.207 NFS-Share
登陸其他從庫操作,即mysql-03
CHANGE MASTER TO MASTER_HOST=’10.0.0.205′, MASTER_PORT=3306, MASTER_USER=’rep’, MASTER_PASSWORD=’123456′, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=107; start slave;
最後,檢查是否主從同步了,網站是否能打開了
總結:從主庫宕機,到從庫接管,一共只花費了不到3分鐘的時間(如果前期的系統架構做的好的話,時間會更少)。通過master.info文件來確定新的主庫,這樣,你的數據庫的一致性和完整性就更高
a