採用Atlas+Keepalived實現MySQL讀寫分離、讀負載均衡

天府雲創發表於2016-12-13

一、簡介

Atlas是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的資料中間層專案。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,新增了很多功能特性。目前該專案在360公司內部得到了廣泛應用,很多MySQL業務已經接入了Atlas平臺,每天承載的讀寫請求數達幾十億條。

主要功能:

二、Atlas相對於官方MySQL-Proxy的優勢

三、Atlas詳細說明

四、Atlas的需求及Bug反饋方式

如果使用者在實際的應用場景中對Atlas有新的功能需求,或者在使用Atlas的過程中發現了bug,歡迎使用者發郵件至zhuchao[AT]360.cn,與我們取得聯絡,我們將及時回覆。另外有熱心網友建立了QQ群326544838,開發者也已經加入,方便討論。

五、名字來源

Atlas:希臘神話中雙肩撐天的巨人,普羅米修斯的兄弟,最高大強壯的神之一,因反抗宙斯失敗而被罰頂天。我們期望這個系統能夠腳踏後端DB,為前端應用撐起一片天。

六、安裝

Atlas的安裝非常簡單,從https://github.com/Qihoo360/Atlas/releases地址下載相應的rpm包直接安裝即可,可能有一些依賴關係,yum都能解決的,就不多講了!

七、配置檔案:

配置檔案位置/usr/local/mysql-proxy/config下面,就我的內網應用而言,我建立新的配置檔案如下:

八、啟動關閉重啟:

九、負載讀寫分離測試:

OLTP基準測試:
OLTP基準測試模擬了一個簡單的的事務處理系統的工作負載。下面的例子使用的是一張百萬行記錄的表,第一步先生成這張表:

接下來可以執行測試,這個例子採用了16個併發執行緒,只讀模擬測試:

從時間上來看比之前haproxy測試要略慢,還是haproxy的效能更靠譜,但是haproxy需要在應用層實現讀寫分離,就是程式碼了

tpcc壓測:

tpcc匯入表時出錯了,提示變數foreign_key_checks不能設定為NULL值,暫且不管它,繼續測試:

經過一段時間的使用,發現atlas目前是比較穩定的,但是效能不作過多評價!有時面面俱到真是難!多一層代理,效能肯定會下降,如果程式端能實現讀寫分離,直連叢集或主備,那樣的效能應該是最好的。

[參考資料]採用Atlas+Keepalived實現MySQL讀寫分離、讀負載均衡 - http://sofar.blog.51cto.com/353572/1601552/

相關文章