原文內容極少,此處補充完整架構設計與部署要點。Keepalived 提供 VIP 漂移與健康檢查,配合 MySQL 雙主複製 (Master-Master) 實現讀寫高可用。
客戶端 → VIP (Keepalived) → MySQL Master A (Active)
↘ MySQL Master B (Standby/Read)
雙主互為主從,雙向同步,任意節點可寫入(需應用層路由或僅單點寫入避免衝突)
CHANGE MASTER TO,server-id 唯一。log_slave_updates、auto_increment_offset/increment 避免主鍵衝突。vrrp_script chk_mysql {
script "/usr/local/bin/check_mysql.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER # 備機為 BACKUP
interface eth0
virtual_router_id 51
priority 100 # 備機較低,如 90
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.100/24 # VIP
}
track_script {
chk_mysql
}
notify_master "/usr/local/bin/notify_master.sh"
notify_backup "/usr/local/bin/notify_backup.sh"
notify_fault "/usr/local/bin/notify_fault.sh"
}
#!/bin/bash
mysql -h127.0.0.1 -uroot -ppass -e "SELECT 1;" &>/dev/null
if [ $? -ne 0 ]; then
systemctl stop keepalived # 觸發 VIP 漂移
exit 1
fi
exit 0
notify_master.sh:執行 SET GLOBAL read_only=OFF; 開放寫入。notify_backup.sh:執行 SET GLOBAL read_only=ON; 禁止寫入(可選,視業務而定)。Seconds_Behind_Master,切換前確保從庫追上。生產環境推薦 MHA、Orchestrator、MySQL InnoDB Cluster (Group Replication + Router),功能更完善、生態更成熟。