1. 程式人生 > 其它 >MySQL MHA 高可用叢集部署及故障切換 (帶圖細說,小白閉著眼都能理解)

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(管理節點)

MHA Manager 可以單獨部署在一臺獨立的機器上,管理多個 master-slave 叢集;

也可以部署在一臺 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 元件

  

  

  

  

  

  

自古英雄多磨難