1. 程式人生 > >mysql 5.7 MHA安裝與配置

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;