前置檢查:動態加載支持
一、Master 安裝半同步主庫插件
二、Slave 安裝半同步從庫插件
三、配置文件參數
Master my.cnf
Slave my.cnf
四、重啟驗證與日誌分析
Master 日誌關鍵行
Slave 日誌關鍵行
五、狀態監控指標
Master 關鍵狀態
Slave 關鍵狀態
六、核心參數調優建議
| 參數 | 建議值 | 說明 |
rpl_semi_sync_master_timeout | 1000-5000 (ms) | 網絡抖動時避免長時間阻塞主庫,超時自動退回異步 |
rpl_semi_sync_master_wait_no_slave | ON | 無半同步從庫時仍等待,防止數據丟失(需權衡可用性) |
sync_binlog | 1 | 每次提交刷 binlog 到磁盤,配合半同步雙重保障 |
innodb_flush_log_at_trx_commit | 1 | 事務提交刷 redo log,確保持久性 |
七、半同步 vs 異步 vs 全同步 對比
| 模式 | 數據安全性 | 主庫延遲 | 可用性 | 適用場景 |
| 異步 | 低(從庫延遲/丟失) | 無 | 高 | 非核心、跨機房、高寫入 |
| 半同步 | 高(至少 1 從庫收到) | 微秒~毫秒 | 中(超時退回異步) | 核心業務、金融、訂單 |
| 全同步 | 最高(所有從庫應用) | 高(等待所有) | 低 | 極高一致性要求、少數節點 |
八、常見問題排查
- 插件安裝失敗:檢查
have_dynamic_loading=YES、插件文件存在、版本匹配
- 半同步不生效:確認 Master/Slave 參數均
=1、重啟生效、SHOW STATUS 驗證
- 主庫頻繁退回異步:調大
timeout、優化網絡、檢查從庫 SQL 線程延遲
- 從庫報錯:查看 Slave 錯誤日誌,常見為權限、網絡、binlog 格式不匹配
總結
MySQL 5.5 半同步復制:**安裝兩側插件 → 配置 4 關鍵參數 → 重啟驗證日誌 → 監控 yes_tx/no_tx 比率**。核心價值:**「至少一份副本確認收到」**的數據安全承諾,代價是微秒級主庫等待。生產環境必配 sync_binlog=1、innodb_flush_log_at_trx_commit=1 形成「雙 1」鐵三角。