我在產(chǎn)生環(huán)境中使用過,但并不理想,原因有以下幾點(diǎn):
1. 需要增加額外的運(yùn)維監(jiān)控,增加了工作量
2. 增加了可能的故障點(diǎn),得考慮mysql_proxy的可靠性問題
3. 不支持一些特殊的處理:如強(qiáng)制主庫讀取(對數(shù)據(jù)一致性有要求時(shí),為避免主從幾步延遲導(dǎo)致業(yè)務(wù)數(shù)據(jù)錯(cuò)亂);業(yè)務(wù)需要,運(yùn)行時(shí)只讀取指定的從庫
mysql_proxy并不能解決這個(gè)問題,而且在程序中使用多數(shù)據(jù)庫連接,造成更多問題.后來解決辦法是:
程序中開發(fā)一個(gè)數(shù)據(jù)庫訪問層,支持以下特性:
* 1. 支持一主多從模式
* 2. 自動讀寫分離(讀請求自動轉(zhuǎn)發(fā)到從庫 寫請求自動分發(fā)到主庫)
* 3. 從庫負(fù)載均衡
* 4. 強(qiáng)制主庫讀(對數(shù)據(jù)一致性要求較高場合使用較多)
* 5. 強(qiáng)制指定讀取從庫節(jié)點(diǎn)(默認(rèn)情況下隨機(jī)選擇從庫)
* 6. 查詢緩存(僅對select,show查詢有效)
* 7. 從庫故障轉(zhuǎn)移 當(dāng)從庫產(chǎn)生故障時(shí) 自動選取其它從庫 未實(shí)現(xiàn)
* 8. 如果沒有配置從庫,所有的讀寫請求均分發(fā)到主庫
這樣,在運(yùn)行時(shí)根據(jù)業(yè)務(wù)需要設(shè)置數(shù)據(jù)庫連接屬性即可