Mysql雙機熱備實現數據庫高可用

mysql雙主熱備,也稱主主互備,目的是mysql數據庫高可用,只支持雙機,緣由是mysql的複製是一主多從,但一個從服務器只能有一個主服務器。
雙機熱備的條件是雙機mysql版本必須一致。
服務器分別爲A(172.16.9.212)、B(172.16.9.213),配置步驟以下:
1、A->B主從備份
一、在主服務器A上建立從服務器備份的用戶,IP地址爲BIP
grant replication slave on *.* to 'wuwei'@'172.16.9.213' identified by '123456';
二、打開主服務器A的二進制日誌binarylog
vim /etc/my.cnf
新增配置以下:

要同步的數據庫爲smartmon
配置好保存後需重啓mysql
三、若是初態不一樣,則要同步初態
先鎖定 smartmon數據庫:
FLUSH TABLES WITH READ LOCK;
  
而後導出smartmon數據:
mysqldump --master-data -uroot -p smartmon > /root/smartmon.sql
解除鎖定:
UNLOCK TABLES;
  
 
四、查看主服務器A的binary日誌位置,配置從服務器須要用到:
show master status\G
  
 
五、打開從服務器B的中繼日誌relay_log
新增配置以下:
  
 
設置要備份的數據庫爲smartmon
保存,重啓mysql
六、導入主服務器A的數據庫初態
拷貝A生成的smartmon.sqlB服務器,再導入
mysql -uroot -p smartmon < smartmon.sql
而後能夠在mysql環境中查看到數據庫的數據是同樣的
七、在從服務器B上開啓主從同步,hostAIP,用戶密碼是在主服務器A上設置備份用戶,log_filelog_pos是主服務器masterbinary看到的信息。
MariaDB [smartmon]> change master to
    -> master_host='172.16.9.212',
    -> master_user='wuwei',
    -> master_password='123456',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=2338575;
  
 
八、在從服務器B上查看slave狀態
show slave status\G
 
  
 
圖中的紅框, 兩個都是Yes, 說明開啓成功。
從A到B的主從複製就完成了,全部在A中的修改都能自動同步到B,可是對B的修改卻不能同步到A。由於是單向的,若是須要雙向同步的話,須要再作一次從B到A的複製。
 
2、B->A主從備份
實際就是步驟一的逆向操做。將B(172.16.9.213)做爲主服務器,A172.16.9.212)做爲從服務器。步驟基本和上面同樣:
一、在B中建立備份用戶
grant replication slave on *.* to 'wuwei'@'172.16.9.212' identified by '123456';
二、打開 /etc/my.cnf , 開啓Bbinarylog
新增配置以下:
  
 
三、不須要導出B的初態同步到A上了,由於AB的初態是同樣的(步驟一實現的),查看master日誌狀態。
show master status\G
  
 
四、登陸到A服務器開啓中繼relay_log
  
 
五、在A服務器上開啓同步:
MariaDB [smartmon]> change master to
    -> master_host='172.16.9.213',
    -> master_user='wuwei',
    -> master_password='123456',
    -> master_log_file='mysql-bin.000003',
    -> master_log_pos=2394;
host爲BIP地址,userpassword是在B上建立的備份用戶,log_filelog_pos是在B上看到的master狀態信息。
六、在A上查看slave status.
  
 
若是IO進程和SQL進程都爲YES,說明從BA的同步成功。
 
若是爲NO或者執行步驟5失敗的,則須要查看mysql日誌文件/var/lib/mysql/主機名.err文件查找錯誤
  
 
圖中的error信息是說找不到中繼日誌文件。
這是由於咱們在配置A的中繼文件時改了中繼文件名,可是mysql沒有同步。解決辦法:
先停掉mysql服務,而後刪掉/var/lib/mysql下的relay-log.info、主機名-relay-bin.000001、主機名-relay-bin.index,再啓動mysql查看slave status就變爲YES了。
 
配置完成。
相關文章
相關標籤/搜索