| 參數 | 作用域 | 說明 |
|---|---|---|
| hostname/ip/port | Local | MySQL 實例連線資訊,port 預設 3306 |
| ssh_host/ssh_ip/ssh_port | Local | SSH 連線資訊,port 預設 22(v0.53+) |
| candidate_master | Local | 1=優先升主,多個按 server 順序;0=不指定,選延遲最小 |
| no_master | Local | 1=永不升主 |
| ignore_fail | Local | 1=該 Slave 故障不阻擋切換 |
| user/password | Local/App/Global | 管理帳號(建議 root) |
| repl_user/repl_password | Local/App/Global | 複寫帳號 |
| disable_log_bin | Local/App/Global | Slave 套用 relay log 時不產生 binlog |
| ssh_user | Local/App/Global | OS 層帳號,需 SSH 金鑰免密、讀寫 log 目錄權限 |
| remote_workdir | Local/App/Global | Node 工作目錄,預設 /var/tmp |
| master_binlog_dir | Local/App/Global | Master binlog 實際路徑,支援多路徑逗號分隔 |
| ping_interval | App/Global | 檢查 Master 間隔,預設 3s,連續 3 次失敗判定宕機(最長 12s) |
| ping_type | App/Global | SELECT(預設,持久連線)或 CONNECT(建立/斷開,更嚴格) |
| secondary_check_script | App/Global | 多路徑網路檢查腳本,防誤切 |
| master_ip_failover_script | App/Global | VIP/目錄服務切換腳本,三階段調用:status/stop/start |
| shutdown_script | App/Global | 強制下電/殺進程腳本,防腦裂 |
| report_script | App/Global | 切換完成/失敗郵件通知 |
Master (192.168.3.27) ↔ Backup (192.168.3.28) 雙機熱備,VIP 192.168.3.33 飄移,MHA Manager (192.168.3.x) 監控決策。
# Master 節點 /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication { auth_type PASS; auth_pass 1111; }
track_script { check_run }
virtual_ipaddress { 192.168.3.33 }
}
# Backup 節點 priority 90,state BACKUP,其餘相同
#!/bin/bash
MYSQL=/usr/bin/mysql
MYSQL_HOST=192.168.3.27 # 本機 IP
MYSQL_USER=root
MYSQL_PASSWORD=mysql
CHECK_TIME=3
function check_mysql_health() {
$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1
return $?
}
while [ $CHECK_TIME -ne 0 ]; do
let "CHECK_TIME -= 1"
check_mysql_health
if [ $? -eq 0 ]; then exit 0; fi
if [ $CHECK_TIME -eq 0 ]; then pkill keepalived; exit 1; fi
sleep 1
done
腳本需 chmod +x,放入 /etc/keepalived/check_mysql.sh。
read_only=OFF),Slave 自動指向新 Master(show slave status 驗證)。app1.failover.complete 重啟 MHA Manager,恢復監控。CHANGE MASTER TO 指向新 Master binlog 位點。master_ip_failover_script 必須冪等,返回 0/10 才視為成功。secondary_check_script 需部署於不同網段機器,避免單點網路誤判。shutdown_script 需依硬體廠商(iLO/DRAC/IPMI)撰寫下電指令。.failover.complete 才能重啟監控。