使用Consul和ProxySQL實現MySQL HA讀寫分離高可用性

banq發表於2016-09-25
本文討論如何基於 ProxySQL, Consul, 和Master High Availability (MHA)實現MySQL讀寫分離的高可用性。

Consul是用於分散式系統中服務發現和配置,如果有伺服器機器當機,Consul就不會再將請求傳送到這臺機器,這裡用作MySQL的負載平衡器。

MHA能夠檢查MySQL備份的健康情況並監視,執行失敗恢復。

SQLProxy允許同時連線n個資料庫,進行統一管理。而對於客戶端來講,它看到的只是由SQLProxy表現出來的一個虛擬資料庫服務。客戶端只需要連線此SQLProxy虛擬的IP和埠,就能象訪問普通資料庫那樣進行操作。

SQLProxy最大的特色是能夠對訪問資料庫的事務(Transaction)進行併發地處理:當接收到插入、修改、更新等事務操作時,它同時將這個事務(Transaction)傳送到後面連線的n臺資料庫上,這樣n臺資料庫中的資料同時得到了更新;由於在任何時刻,SQLProxy後面連線的n臺資料庫的資料是完全一致的,因此當接收到查詢操作時,整個資料庫系統可以實現負載均衡(Load Balance),由此達到客戶訪問負荷的動態分擔,提高整個系統的響應能力。

下面是配置Consul + ProxySQL + MHA + MySQL步驟:

在生產環境,Consul最少是3個例項,在應用伺服器執行一個Consul,在兩個ProxySQL伺服器(mysql1和備份mysql2)扮演與ProxySQL扮演高可用性的一對黃金組合。


詳細配置安裝見原文:

Consul, ProxySQL, and MySQL HA - DZone Database

[該貼被banq於2016-09-25 18:41修改過]

[該貼被banq於2016-09-25 18:42修改過]

相關文章