系列完結篇。前兩篇完成「主從互為主備」雙向複寫配置,本篇解決應用層如何**智能連線、容錯切換、負載分發**,並給出生產環境關鍵建議。
原版 mysql_connect 無連線超時參數,整機掛掉時會無限阻塞。改用 fsockopen 先偵測 3306 端口可達性,再建立 MySQL 連線,實現**可控超時、快速失效轉移**。
關鍵優勢:
• 可調超時:避免整機掛掉導致 PHP-FPM 進程卡死。
• 端口先偵測:MySQL 進程掛掉但機器存活時,fsockopen 立即失敗(Connection refused),毫秒級切換。
• 應用層決策:不依賴中間件,邏輯透明可控。
FLUSH TABLES WITH READ LOCK),再複製資料檔,最後重新啟用 Binlog。auto_increment 值,導致複寫中斷。auto_increment_increment=2 + auto_increment_offset=1/2 分配奇偶 ID,**但仍不解決業務邏輯衝突(同一行並發更新)**。SHOW SLAVE STATUS\G 關鍵指標:Slave_IO_Running: Yes、Slave_SQL_Running: YesSeconds_Behind_Master: 0(或極小)Last_IO_Error、Last_SQL_Error 為空mysql_replication_* 指標,告警閾值:延遲 > 30s、SQL 執行緒停止、IO 執行緒斷開。MySQL 複寫雖非分散式共識協議(如 Raft/Paxos),但配合 GTID、半同步、自動故障轉移工具,已能支撐高可用生產架構。核心在於:**嚴格快照一致性、持續監控、自動化切換、讀寫分離架構**。