1. 程式人生 > >Mha-Atlas-MySQL高可用

Mha-Atlas-MySQL高可用

Mha-Atlas-MySQL高可用

一、MHA簡介

1、軟體介紹

MHA在MySQL高可用是一個相對成熟的解決方案,是一套優秀的作為mysql高可用
環境下故障切換和主從提升的高可用軟體,在MySQL故障切換過程中,
MHA能做到0~30秒內自動完成資料庫的故障切換操作,並且在進行故障
切換過程中,MHA能最大程度上保證資料庫的一致性,以達到真正意義上的高可用。

2、MHA組成

MHA由兩部分組成:MHA Manager(管理節點)和MHA Node(資料節點)。
MHA Manager可以獨立部署在一臺獨立的機器上管理多個Master-Slave叢集,
也可以部署在一臺Slave上。當Master出現故障時,它可以自動將最新資料的


Slave提升為新的Master,然後將所有其他的Slave重新指向新的Master。

3、MHA工作流程

①從宕機崩潰的master儲存二進位制日誌時間(binlog events);
②識別含有最近更新的slave;
③應用差異的中繼日誌(relay log)到其他的slave;
④應用從master儲存的二進位制日誌事件(binlog events);
⑤提升一個slave為新的master;
⑥使其它的slave連線新的master進行復制;

流程詳解

1)複製主庫binlog日誌出來
2)找出relaylog日誌最全的從庫
3)將最全的relaylog日誌在所有從庫中同步(第一次同步資料)


4)將之前最全的從庫提升為主庫
5)將複製出來的binlog日誌,放到新提升的主庫裡
6)其他所有從庫重新指向新提升的主庫,繼續主從複製

4、MHA工具介紹

MHA軟體由兩部分組成:Manager工具包(管理端)和Node工具包(節點端)

(1)Manager主要包括以下幾個工具:

masterha_check_ssh  ==>檢查MHA的SSH配置狀況
masterha_check_repl  ==>檢查MySQL複製狀況
masterha_check_status  ==>檢測當前MHA執行狀態
masterha_master_monitor  ==>檢測master是否宕機


masterha_manger  ==>啟動MHA
masterha_master_switch  ==>控制故障轉移(自動或手動)
masterha_conf_host  ==>新增或刪除配置的server資訊
masterha_secondary_check  ==>試圖建立TCP連線從遠端伺服器
masterha_stop  ==>停止MHA

(2)Node主要包括以下幾個工具:

save_binary_logs  ==>儲存和複製master的二進位制日誌
apply_diff_relay_logs  ==>識別差異的中繼日誌事件
filter_mysqlbinlog  ==>去除不必要的ROLLBACK事件
purge_relay_logs  ==>清除中繼日誌

二、MHA環境準備

1、準備三臺mysql虛擬機器

主機名 IP地址(NAT) 描述
mysql-db01 eth0:192.168.200.51 系統:CentOS6.5 安裝:mysql5.6
mysql-db02 eth0:192.168.200.52 系統:CentOS6.5 安裝:mysql5.6
mysql-db03 eth0:192.168.200.53 系統:CentOS6.5 安裝:mysql5.6

2、軟體包

mha管理節點安裝包

mha4mysql-manager-0.56-0.el6.noarch.rpm
mha4mysql-manager-0.56.tar.gz

mha node節點安裝包

mha4mysql-nade-0.56-0.el6.noarch.rpm
mha4mysql-node-0.56.tar.gz

mysql中介軟體

Atlas-2.2.1.el6.x86_64.rpm

mysql原始碼安裝包

mysql-5.6.17-linux-glibc2.5-x86_64tar

3、主機名對映

三臺虛擬機器,都需要對映三個IP域名

三、MySQL環境準備

  三臺虛擬機器都需要安裝MySQL

安裝mysql二進位制
直接解壓即可:解壓到/usr/local/
建立使用者:

useradd -s /sbin/nologin -M mysql

進入/usr/local/mysql-5.5.32-linux/
做個軟連線方便使用==>

ln -s mysql-5.5.32-linux /usr/local/mysql

複製配置檔案:

/bin/cp support-files/my-small.cnf /etc/my.cnf

  做初始化:

建立mysql資料檔案目錄==>

mkdir -p /usr/local/mysql/data

授權mysql使用者管理mysql的安裝目錄==>

chown -R mysql.mysql /usr/local/mysql

安裝初始化mysql依賴包==>

yum -y install libaio

初始化mysql資料庫檔案==>

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

複製mysql啟動指令碼到mysql的命令路徑==>

cd /usr/local/mysql
cp support-files/mysql.server /etc/init.d/mysqld

加x許可權,使指令碼可執行==>

chmod +x /etc/init.d/mysqld

啟動mysql==>

/etc/init.d/mysqld start

給mysql命令做軟連線==>

ln -s /usr/local/mysql/bin/* /usr/local/bin

給mysql新增密碼==>

mysqladmin -uroot password '123123'

四、配置GTID主從複製

1、GTID主從複製

自動追蹤

2、GTID全域性事物識別符號

 

是一個唯一的識別符號,他建立並與源伺服器(主)上提交的每個事物相關聯。
GTID實際上是由UUID+TID組成的。其中UUID是一個MySQL例項的唯一標識。

 

 

3、GTID的新特性

 

支援多執行緒複製,每個庫有一個單獨的(sql執行緒)
支援啟用GTID,無需再知道binlog和POS點,只需知道master的IP/埠/賬號密碼即可
基於Row複製只儲存改變的列,大大節省磁碟空間,網路,記憶體等
支援把master和slave的相關資訊記錄在table中,增強可用性。原來是記錄在檔案裡。
支援延遲複製。