MySQL 高可用
Master HA 或多主模型
- MMM:Multi Master MySQL,基于主從復(fù)制實(shí)現(xiàn)
- MHA:Master High Availability,對主節(jié)點(diǎn)進(jìn)行監(jiān)控偏螺,可實(shí)現(xiàn)自動故障轉(zhuǎn)移至其它從節(jié)點(diǎn);通過提升某一從節(jié)點(diǎn)為新的主節(jié)點(diǎn)丢胚,基于主從復(fù)制實(shí)現(xiàn)销钝,還需要客戶端配合實(shí)現(xiàn),目前 MHA 主要支持一主多從的架構(gòu)酱固,藥搭建 MHA械念,要求一個復(fù)制集群中必須最少有三臺數(shù)據(jù)庫服務(wù)器,一主二從运悲,即一臺充當(dāng) master龄减,一臺充當(dāng)備用 master,另外一臺充當(dāng)從庫班眯,出于機(jī)器成本的考慮希停,淘寶進(jìn)行了改造,目前淘寶TMHA已經(jīng)支持一主一從
官網(wǎng):https://code.google.com/archive/p/mysql-master-ha/ - Galera Cluster:wresp
通過wresp協(xié)議在全局實(shí)現(xiàn)復(fù)制署隘;任何一節(jié)點(diǎn)都可讀寫宠能,不需要主從復(fù)制,實(shí)現(xiàn)多主可讀可寫
MHA 集群架構(gòu)
MHA集群架構(gòu)
MHA集群架構(gòu)
MAH 工作原理
MHA原理
- 從宕機(jī)崩潰的 mater 保存二進(jìn)制日志事件(binlog events)
- 識別含有最新更新的 slave
- 應(yīng)用差異的中繼日志(relay log)到其他的 slave
- 應(yīng)用從 master 保存的二進(jìn)制日志事件(binlog events)
- 提升一個 slave 為新的 master
- 使其他的 slave 連接新的 master 進(jìn)行復(fù)制
MHA
MHA 軟件由兩部分組成磁餐,Manager 工具包和 Node 工具包
Manager 工具包主要包括以下幾個工具:
-
masterha_check_ssh
:檢查 MHA 的 SSH 配置狀況 -
masterha_check_repl
:檢查 MySQL 復(fù)制狀況 -
masterha_manager
:啟動 MHA -
masterha_check_status
:檢查當(dāng)前 MHA 運(yùn)行狀態(tài) -
masterha_master_monitor
:檢測 master 是否宕機(jī) -
masterha_master_switch
:故障轉(zhuǎn)移(自動或手動) -
masterha_conf_host
:添加或刪除配置的 server 信息
Node 工具包:這些工具通常由 MHA Manager 的腳本觸發(fā)违崇,無需人為操作,主要包括以下幾個工具:
-
save_binary_logs
:保存和復(fù)制 master 的二進(jìn)制日志 -
apply_diff_relay_logs
:識別差異的中繼日志事件并將其差異的事件應(yīng)用于其它的 slave -
filter_mysqlbinlog
:去除不必要的 ROLLBACK 事件(MHA已不再使用此工具) -
purge_relay_logs
:清除中繼日志(不會阻塞SQL線程)
注意:為了盡可能的減少主庫硬件損壞宕機(jī)造成的數(shù)據(jù)丟失诊霹,因此在配置 MHA 的同時(shí)建議配置成 MySQL 5.5 的半同步復(fù)制
MMA
自定義擴(kuò)展:
-
secondary_check_script
:通過多條網(wǎng)絡(luò)路由檢測 master 的可用性 -
master_ip_ailover_script
:更新 Application 使用的 masterip -
shutdown_script
:強(qiáng)制關(guān)閉 master 節(jié)點(diǎn) -
report_script
:發(fā)送報(bào)告 -
init_conf_load_script
:加載初始配置參數(shù) -
master_ip_online_change_script
:更新 master 節(jié)點(diǎn) ip 地址
配置文件:
- global 配置:為各 application 提供默認(rèn)配置
- application 配置:為每個主從復(fù)制集群