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


mysql雙主熱備,也稱主主互備,目的是mysql數據庫高可用,只支持雙機,原因是mysql的復制是一主多從,但一個從服務器只能有一個主服務器。
雙機熱備的條件是雙機mysql版本必須一致。
服務器分別為A(172.16.9.212)、B(172.16.9.213),配置步驟如下:
一、A->B主從備份
1、在主服務器A上創建從服務器備份的用戶,IP地址為B的IP
grant replication slave on *.* to 'wuwei'@'172.16.9.213' identified by '123456';
2、打開主服務器A的二進制日志binarylog
vim /etc/my.cnf
新增配置如下:
要同步的數據庫為smartmon
配置好保存后需重啟mysql
3、如果初態不同,則要同步初態
先鎖定 smartmon數據庫:
FLUSH TABLES WITH READ LOCK;
  
然后導出smartmon數據:
mysqldump --master-data -uroot -p smartmon > /root/smartmon.sql
解除鎖定:
UNLOCK TABLES;
  
 
4、查看主服務器A的binary日志位置,配置從服務器需要用到:
show master status\G
  
 
5、打開從服務器B的中繼日志relay_log
新增配置如下:
  
 
設置要備份的數據庫為smartmon
保存,重啟mysql
6、導入主服務器A的數據庫初態
拷貝A生成的smartmon.sql到B服務器,再導入
mysql -uroot -p smartmon < smartmon.sql
然后可以在mysql環境中查看到數據庫的數據是一樣的
7、在從服務器B上開啟主從同步,host為A的IP,用戶密碼是在主服務器A上設置備份用戶,log_file和log_pos是主服務器master的binary看到的信息。
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;
  
 
8、在從服務器B上查看slave狀態
show slave status\G
 
  
 
圖中的紅框, 兩個都是Yes, 說明開啟成功。
從A到B的主從復制就完成了,所有在A中的修改都能自動同步到B,但是對B的修改卻不能同步到A。因為是單向的,如果需要雙向同步的話,需要再做一次從B到A的復制。
 
二、B->A主從備份
實際就是步驟一的逆向操作。將B(172.16.9.213)作為主服務器,A(172.16.9.212)作為從服務器。步驟基本和上面一樣:
1、在B中創建備份用戶
grant replication slave on *.* to 'wuwei'@'172.16.9.212' identified by '123456';
2、打開 /etc/my.cnf , 開啟B的binarylog:
新增配置如下:
  
 
3、不需要導出B的初態同步到A上了,因為A和B的初態是一樣的(步驟一實現的),查看master日志狀態。
show master status\G
  
 
4、登錄到A服務器開啟中繼relay_log
  
 
5、在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為B的IP地址,user、password是在B上創建的備份用戶,log_file、log_pos是在B上看到的master狀態信息。
6、在A上查看slave status.
  
 
如果IO進程和SQL進程都為YES,說明從B到A的同步成功。
 
如果為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了。
 
配置完成。


免責聲明!

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



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