mysql 5.7 MHA安裝與配置
1. 概述
它由日本DeNA公司youshimaton(現就職於Facebook公司)開發,MHA來保證資料庫系統的高可用.在宕機的時間內(通常10—30秒內),完成故障切換,部署MHA,可避免主從一致性問題,節約購買新伺服器的費用,不影響伺服器效能,易安裝,不改變現有部署。
還支援線上切換,從當前執行master切換到一個新的master上面,只需要很短的時間(0.5-2秒內),此時僅僅阻塞寫操作,並不影響讀操作,便於主機硬體維護。
工作原理
(1)從宕機崩潰的master儲存二進位制日誌事件(binlog events);
(2)識別含有最新更新的slave;
(3)應用差異的中繼日誌(relay log)到其他的slave;
(4)應用從master儲存的二進位制日誌事件(binlog events);
(5)提升一個slave為新的master;
(6)使其他的slave連線新的master進行復制;
2. 搭建環境
1. 架構說明:
IP | 主機名 | 資料庫ID | 型別 |
192.168.2.51 | mysql01 | 251 | MySQL Master + mha-node |
192.168.2.52 | mysql02 | 252 | Mha-node+ Candidate Slave |
192.168.2.53 | mysql03 | 223 | Mha-node |
192.168.2.54 | mysql-mha01 | mha-manager |
OS:CentOS 6.9
Mysql:5.7.20
Mha:0.57
2:配置/etc/my.cnf相關引數,在3各節點中分別配置GTID
log-bin=binlog
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
重新初始化MySQL(非必須,這部是由於自動化指令碼無法判定密碼,要自動化必須剔除密碼)
mysqld --initialize-insecure --user=mysql
service mysqld restart
設定root密碼,建立複製使用者:
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";
mysql> GRANT GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by '123456';
mysql> grant all privileges on *.* to 'mha'@'%' identified by '123456';
mysql> flush privileges;
在主匯出mysqldump -uroot -p --all-databases --triggers --routines --events > /root/all.sql
在備庫匯入
3:在mysql2、mysql3配置Gtid複製
CHANGE MASTER TO
MASTER_HOST = '192.168.2.51',
MASTER_PORT = 3306,
MASTER_USER = 'repl',
MASTER_PASSWORD = '123456',
MASTER_AUTO_POSITION = 1;