mysql router用于取代mysql proxy,建議mysql router與應用程序部署在一臺機器。應用程序像訪問mysql一樣訪問mysql proxy,由mysql proxy將數據轉發給后端的mysql。支持各種操作系統。
工作模式
read-write
用于多主服務器,個人感覺也可用于主備,用于多主可以避免腦裂問題,但實際上多主只有一個為Active狀態。并且MySQL的主從和多主復制恢復起來都比較麻煩,需要手工操作。相比之下MySQL Group Replication提供了更簡單的集群自動維護方案。
所有請求被發送到第一個服務器,只在第一個服務器宕機后才會使用后續的第二個服務器。?
不支持宕機服務器恢復檢測
以下兩種情況下將無法使用
從先宕機,然后恢復,主再宕機
主先宕機,然后恢復,從再宕機
[routing:example_strategy] bind_port = 7001 destinations = master1.example.com,master2.example.com,master3.example.com mode = read-writ
read-only
用于路由從服務器集群。
每個請求用輪詢方式訪問所有服務器。如果一個服務器宕機,會嘗試使用下一個服務器。如果所有服務器宕機,路由將退出。重新可用的服務器會被按照原來的順序重新加入到可用列表
[routing:ro_route] bind_port = 7002 destinations = slave1.example.com,slave2.example.com,slave3.example.com mode = read-only
啟動
mysqlrouter --config=/path/to/file/my_router.ini
需要將數據庫連接池的maxStatements=0設置為0,否則當主機宕機后,連接池將無法在備機上找到對應的Statement而報錯。
性能
遠高于MySQL Proxy,相比較于直連MySQL性能損失很小。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END