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中,增強可用性。原來是記錄在檔案裡。
支援延遲複製。