mysql如果主庫宕機,如何解決?


兩種情況服務器down機,數據庫down機

如果此時需要切從庫

1、先show processlist\G,查看狀態

如果看到兩個狀態,說明此時的從庫和主庫是同步的
state: waiting for master to send event   I/O線程
state:has read all relay log;waiting for the slave I/O thread to update it    sql線程

2、登錄從庫分別查看:
cat /data/3306/data/master.info
cat /data/3307/data/master.info
看哪個從庫的哪個master.info哪個更新,就說明哪個從庫一致性更高,所以此時就確定最新的庫為主庫。

選個pos最大的作為主庫
或利用半同步的功能,直接選擇做實時同步的這個從庫。

1、確保所有relay log全部更新完畢。
在每個從庫上執行stop slave io_thread;show processlist;
直到看到has read all relay log;表示從庫更新都執行完畢

2、登錄從庫
mysql -uroot -p123 -S /data/3306/mysql.sock
stop slave;
reset master;
quit;


3、進入數據庫數據目錄,刪除master.info relay-log.info
cd /data/3306/data/master
rm -f master.info relay-log.info
檢查授權表,類似read-only參數

4、3306提升從庫為主庫
vim /data/3306/my.cnf
開啟:
log-bin =/data/3306/mysql-bin
//如果存在log-slave-updates  read-only等參數一定要注釋掉。
/data/3306/mysql  stop
/data/3306/mysql  start
到此,提升主庫完畢



5、如果主庫服務器沒down,需要去主庫拉取bin-log補全提升主庫的從庫


6、其他從庫操作

已檢查(同步user rep均存在)
登錄從庫
stop slave;
change master to master_host='192.168.1.32'; //如果不同步,就指定位置點
start slave;
show slave status\G;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM