當mysql數據庫主數據庫down掉后,如何進行主從切換。


mysql主從切換

在真實的生產環境中,總會有一些意外。

當企業的數據庫集群有機器不幸down掉的時候,怎么把從庫切換成主庫呢。

可以總結為如下步驟

 

一.登錄從庫關閉io進程,確保relay log已被完全執行,並根據當前pos選取出下一個master。

mysql -uroot -ptqw961110

stop slave io_thread;    #關閉io進程

show processlist;          #查看還有什么進程在運行。

當進程運行到最后,顯示Slave has read all relay log; waiting for more updates,則證明relay  log已被完全讀取並執行完畢。

show slave status \G;   查看從庫slave狀態

看到從庫關於master的信息全部寫在mysql.slave_master_info中

select * from mysql.slave_master_info; 

看到master_log的pos記錄是155.

這時我們需要登錄上所有的從庫,並重復上述查看master信息的步驟,對比各自pos的值,並選取最大值得從庫作為下一個master。

 

二.清除從庫的master信息,配置從庫成為master。

選取到目標slave后,登上數據庫,停掉slave;

mysql  -uroot  -ptqw961110

stop slave;

drop table  mysql.slave_master_info;                                                                  #刪除master_info信息表

create user 'test'@'%' identified with mysql_native_password by 'tqw961110';   #創建一個新的用戶

grant replication slave on *.* to 'test'@'%';                                                           #授權

flush privileges;                                                                                                     #刷新

退出數據庫,進入數據庫目錄。

刪除relay log

rm -f *relay*

編輯配置文件

vim /etc/my.cnf

log-bin=mysql-bin
server-id=1

如果有log-slaves-updates和read-only則要注釋掉

重啟mysql

systemctl  restart  mysql

登錄上mysql

執行

reset  master  (也可以不執行)

show master status ;    #查看master信息

 

四.修改其余從庫的master信息

登錄其余數據庫

stop  slave;

change master to master_host='172.16.1.22', master_user='test', master_user='tqw961110', master_log_file='mysql-bin.000001', master_log_pos=155;

start  slave;

show slave status \G;

假如io和sql兩個線程都啟動了,證明切換成功。

 


免責聲明!

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



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