- MHA(Master High Availability)是一個免費的開源工具,使用Prel開發(fā)。
- MHA更多關注點是主從復制中的主DB.
- 當主DB崩潰時,快速的在從服務器中找到最佳服務器。
- 在MySQL故障切換過程中,MHA能做到在0~30秒之內(nèi)自動完成數(shù)據(jù)庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證數(shù)據(jù)的一致性,以達到真正意義上的高可用。
- 主服務器宕機時,MHA會嘗試從主服務器盡可能多的保存二進制日志,最大程度保證事務的不丟失。如果主服務器硬件或者網(wǎng)絡出現(xiàn)問題(ssh無法訪問),肯定也就無法保存二進制日志了
- MHA可以與半同步復制結(jié)合起來
MHA功能
MHA主從切換過程
- 2可以手動設置從服務器不參與選舉
- 3彌補其他從服務器數(shù)據(jù)差異
- 4如果重復的主鍵等會使MHA停止進行故障轉(zhuǎn)移
- 5虛擬IP切換
MHA提供兩個主要優(yōu)點:
- 自動故障切換:有助于意外的主站故障,崩潰等等(故障切換也可以手動完成)。
- 快速在線主切換:在執(zhí)行內(nèi)核更新,MySQL升級,硬件升級等常規(guī)計劃或計劃維護操作時有用。
MHA演示架構(gòu)(基于GTID)
MHA配置步驟
- SSH->故障轉(zhuǎn)移過程中保存原主服務器二進制日志,配置虛擬IP地址等
- 日志點和GTID(推薦)
- ssh和復制鏈路的監(jiān)測
MHA實例
確保gtid在集群中所有的服務器中啟動
show variables like 'gtid_mode';
建立復制用戶
從數(shù)據(jù)庫初始化(略,備份,看上一篇)
從服務器啟動復制鏈路
show slave status ;
MHA配置
重復1,2步驟在每臺服務器執(zhí)行一遍
生成密鑰之后,進行免密鑰密碼的配置
1 主服務器生成ssh密鑰
2 主服務器拷貝ssh密鑰到從服務器(主服務器的密鑰驗證也要配置)
3安裝包下載
4 安裝prel支持包
數(shù)據(jù)節(jié)點只需要這幾個包,每天服務器都安裝
yum -y install perl-DBD-MYSQL nctfp perl-DBI.x86
每天服務器都安裝node節(jié)點包
rpm -ivh mha.....rpm
監(jiān)控服務器安裝依賴(上面的那個命令(監(jiān)控節(jié)點))
安裝監(jiān)控包rpm -ivh mha.....rpm
4 MHA配置(只需要在監(jiān)控服務器配置就行)
- 創(chuàng)建配置文件保存目錄
- 創(chuàng)建mha工作目錄
- 創(chuàng)建配置文件
- 服務器默認信息
- mha主從管理用戶(在主數(shù)據(jù)庫(節(jié)點1)建立)
- 密碼
- 管理服務工作目錄
- remote_workdir遠程服務器工作目錄(手動在每個服務器建立)
- ssh用戶(啟動mha時的用戶)
- 復制用戶和密碼
- ping_interval 檢查主數(shù)據(jù)庫是否可以連通的時間間隔
- master_binlog_dir目錄
- show variables like ‘%log%’; -> log_bin_basename(主服務器查看位置)
- master_ip_failover_script執(zhí)行腳本,完成主從切換之后,虛擬IP漂移
- secondary_check_script(MHA默認只通過monitor服務器來監(jiān)控主服務器是否可用),該腳本可以通過多網(wǎng)絡路徑來監(jiān)測主服務器是否可用(當網(wǎng)絡抖動時,避免錯誤切換)
- 主機信息
- hostname
- 參加master選舉的服務器(不參加選舉)
腳本
5 監(jiān)測MHA配置
查看ssh免認證是否配置正確
masterha check ssh --conf= /etc/mha/mysql_mha
監(jiān)測主從復制的結(jié)構(gòu)(環(huán)境)
masterha check repl --conf= /etc/mha/mysql_mha
6 啟動MHA
MHA不會自動的配置虛擬IP,所以需要手動配置
nohup(放到后臺) masterha manager --conf=/etc/mha/mysql_mha.cnf & [1] ps -ef ifconfig eth0:1 192.168.3.90/24 配置虛擬IP
7 測試MHA
停止數(shù)據(jù)庫/etc/init.d/mysql stopip addr 查看虛擬IP是否轉(zhuǎn)移 ORshow slave status 監(jiān)控服務器
8 MHA優(yōu)缺點
- 優(yōu)點
- Perl,開源
- 支持GTID
- MHA在故障轉(zhuǎn)移時不易產(chǎn)生數(shù)據(jù)丟失(加強數(shù)據(jù)安全性)
- 同一個監(jiān)控節(jié)點可以監(jiān)控多個集群
- 缺點
- 沒有虛擬IP的配置
- (腳本)->增加MHA工具復雜度
- 第三方工具,失去自動從多個從服務器去選取最優(yōu)服務器的功能,增加集群部署的復雜性
- MHA運行時不監(jiān)控復制鏈路,也就無法發(fā)現(xiàn)問題(復制鏈路中斷,主從延遲增大)。
- MMM在主從鏈路出現(xiàn)問題時,通過切換故障服務器讀VIP方式來排除故障服務器
讀寫分離
Mysql主從復制配置一個主要目的:為了分擔主庫的讀負載(讀>>寫)
那么讀寫分離的目的:寫負載是不能分擔的,只能在主上進行寫操作(讀操作,主從都可以)
兩種讀寫分離方式
- 由程序?qū)崿F(xiàn)讀寫分離
- 架構(gòu)簡單,易于維護
- DBA和開發(fā)(控制讀寫分離)之間溝通成本的增加(重上線,重啟程序)
- 由中間件實現(xiàn)讀寫分離
- mysql-proxy(實驗項目,一直沒正式上線) maxScale(MariaDB)
- 依賴中間層的性能(損耗比較嚴重,最好上線前進行一些基準測試,QPS降低50%到70%),故障點
- 加入提示關鍵字,對程序修改->從而對程序不再透明
負載均衡
- 程序輪詢
- 軟件:LVS Haproxy MaxScale
- 硬件 : F5
MaxScale Core
- Authentication
- 認證連接:后端數(shù)據(jù)庫讀取Mysql.user->緩存到MS服務器端->用戶連接->判斷是否通過驗證 ->無此用戶->對后端數(shù)據(jù)進行更新再進行驗證
- Protocal:負責MS和外部接口的協(xié)議
- 客戶端到MS的接口(mysql客戶端協(xié)議插件)
- MS到后端數(shù)據(jù)的接口(mysql服務端協(xié)議插件)
- Router
- readconnroute(多臺服務器負載均衡)
- readwritesplit(讀寫分離)
- Monitor 對后端數(shù)據(jù)庫進行實時監(jiān)控(前端請求->正確的后臺數(shù)據(jù)庫)
- Filter 數(shù)據(jù)庫防火墻(對sql過濾和改寫,sql容錯和自動轉(zhuǎn)換)
MaxScale Core安裝和配置
演示環(huán)境:一主兩從,主:192.168.3.101,從:192.168.3.100,192.168.3.102賬號的建立(監(jiān)控模塊,路由模塊 )
加密密碼(略)
修改配置文件
cd /etc/ls -l maxscale*
- threads 進程(8)
- 服務器信息(全部)
- 監(jiān)控模塊的配置(加密密碼填寫,略)
- 讀負載模塊(略)
- 讀寫分離模塊(也能實現(xiàn)讀負載)
- 最大可用從服務器數(shù)量(默認:all)
- 從服務器最大的延遲 (當延遲大于60s后,從服務器不再參與讀寫分離)
- 監(jiān)聽
- 讀監(jiān)聽
- 讀寫模塊監(jiān)聽(獨立服務器,3306端口)
MaxScale Core啟動
maxscale --config=/etc/maxscale.cnf確認ps -ef | grep maxscalenetstat -ntelp
默認用戶admin,密碼:mariadb
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。