MySQL MHA 高可用叢集部署及故障切換 (帶圖細說,小白閉著眼都能理解)
MySQL MHA 高可用叢集部署及故障切換
1、概念
2、搭建MySQL + MHA
1、概念:
a)MHA概念 :
MHA(MasterHigh Availability)是一套優秀的MySQL高可用環境下故障切換和主從複製的軟體。
MHA 的出現就是解決MySQL 單點的問題。 MySQL故障切換過程中,MHA能做到0-30秒內自動完成故障切換操作。
MHA能在故障切換的過程中最大程度上保證資料的一致性,以達到真正意義上的高可用。
b)MHA 的組成 :
MHA Node(資料節點) MHA Node 執行在每臺 MySQL 伺服器上。
MHA Manager(管理節點)
也可以部署在一臺 slave 節點上。
MHA Manager 會定時探測叢集中的 master 節點。當 master 出現故障時,它可以自動將最新資料的 slave 提升為新的 master,
然後將所有其他的 slave 重新指向新的 master。整個故障轉移過程對應用程式完全透明。
c)MHA 的特點 :
自動故障切換過程中,MHA試圖從宕機的主伺服器上儲存二進位制日誌,最大程度的保證資料不丟失
使用半同步複製,可以大大降低資料丟失的風險,如果只有一個slave已經收到了最新的二進位制日誌,
MHA可以將最新的二進位制日誌應用於其他所有的slave伺服器上,因此可以保證所有節點的資料一致性
目前MHA支援一主多從架構,最少三臺服務,即一主兩從
2、搭建MySQL + MHA:
實驗思路:
mha架構 、一主2從 、MHA搭建
故障模擬:
主庫失效 、備選主庫成為主庫 、源故障主庫恢復重新加入到MHA成為從庫
實驗所需環境:
4臺伺服器:一臺MHAmanager (一臺主伺服器 2 臺從伺服器)
伺服器較多,所以有的地方不過多截圖 注意註釋,很多都是同步操作,我會註明
實驗步驟:
所有伺服器全部關閉防火牆安全機制基本操作了:
systemctl stop firewalld systemctl disable firewalld setenforce 0
修改主伺服器 從伺服器1 、 2 節點的主機名:
hostnamectl set-hostname mysql1 su hostnamectl set-hostname mysql2 su hostnamectl set-hostname mysql3 su
修改三臺MySQL伺服器的主配置檔案/etc/my.cnf
主伺服器的配置:
vim /etc/my.cnf [mysqld] server-id = 2 log_bin = master-bin log-slave-updates = true systemctl restart mysqld ln -s /usr/local/mysql/bin/mysql /usr/sbin/ ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
從伺服器1 、2的配置:是一樣的 server-id不要重複就行
vim /etc/my.cnf server-id = 3 #server-id = 3 mysql3則為4,三臺伺服器 server-id 不能一樣 log_bin = master-bin relay-log = relay-log-bin relay-log-index = slave-relay-bin.index systemctl restart mysqld ln -s /usr/local/mysql/bin/mysql /usr/sbin/ ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
配置mysql 一主2從:所有mysql伺服器進行授權,就不過多截圖了
grant replication slave on *.* to 'myslave'@'20.0.0.%' identified by 'abc123'; grant all privileges on *.* to 'mha'@'20.0.0.%' identified by 'manager'; grant all privileges on *.* to 'mha'@'mysql1' identified by 'manager'; grant all privileges on *.* to 'mha'@'mysql2' identified by 'manager'; grant all privileges on *.* to 'mha'@'mysql3' identified by 'manager';
在主伺服器檢視二進位制檔案和偏移量:每個人都不一樣
show master status;
從伺服器1、2 同步執行操作:
change master to master_host='20.0.0.41',master_user='myslave',master_password='abc123',master_log_file='master-bin.000001',master_log_pos=1585; start slave; show slave status\G;
從伺服器1、2同步執行設定為只讀模式:
set global read_only=1;
主從複製驗證:
主伺服器建立庫test007 ,從伺服器查詢是否存在
主從複製搭建完成!!!!
接著 安裝MHA軟體:
所有伺服器上都安裝 MHA 依賴的環境,首先安裝 epel 源,需要線上源安裝,再在所有伺服器上安裝 node 元件
自古英雄多磨難