Atlas實現(xiàn)讀寫分離

Atlas讀寫分離總體架構(gòu)

????????數(shù)據(jù)庫讀寫分離通過實時(根據(jù)具體情況稍有延遲,一般都是毫秒級的)主從同步備份提岔,通過冗余的方式保護了系統(tǒng)數(shù)據(jù)仙蛉。提高了系統(tǒng)的負載能力,主庫寫數(shù)據(jù)從庫讀數(shù)據(jù)碱蒙,提高了系統(tǒng)的性能荠瘪。

? ? ? ?讀寫分離的前提是保證主從庫的數(shù)據(jù)同步復制,針對MySQL赛惩,MariaDB的主從同步前面已經(jīng)介紹過了哀墓,網(wǎng)上也有很多教程,這里就不再重復了喷兼。讀寫分離的的實現(xiàn)基本上分為2種:第一種是通過應用系統(tǒng)的代碼來實現(xiàn)篮绰,比如我們可以在spring中配置2個數(shù)據(jù)源,一個寫的數(shù)據(jù)源和一個讀的數(shù)據(jù)源季惯。由應用系統(tǒng)來決定使用哪個數(shù)據(jù)源訪問數(shù)據(jù)庫吠各。主庫和從庫對于應用程序來說不是透明的,主從庫在線上切換的時候勉抓,需要修改配置文件贾漏,并重新部署啟動。但是這種直連的方式效率比較高藕筋。第二種是通過代理的方式纵散,主從庫對于應用程序是透明的,應用系統(tǒng)只需要和數(shù)據(jù)庫代理建立連接隐圾,然后代理通過分析發(fā)給它的sql語句再決定在主庫或從庫上執(zhí)行伍掀。代理的方式屏蔽的DB層的細節(jié),而且線上切換不需要修改應用代碼翎承,只是這種代理的方式相對直連硕盹,在效率上略低一點符匾,是可以接受的叨咖。

mysql代理方式

? ? ? ?MySQL的代理最常見的是mysql-proxy、cobar、mycat甸各、Atlas等垛贤。mysql-proxy是一個輕量的中間代理。cobar是阿里提供的一個中間件趣倾,已經(jīng)停止更新聘惦。mycat的前身就是cobar,活躍度比較高儒恋。Atlas奇虎360的一個開源中間代理善绎,是在mysql-proxy 0.8.2的基礎(chǔ)上進行了優(yōu)化,增加一些新的功能特性诫尽。360內(nèi)部使用Atlas運行的MySQL業(yè)務禀酱,每天承載的讀寫請求數(shù)達幾十億條。這篇總結(jié)主要來說一下Atlas讀寫分離的實現(xiàn)牧嫉。

Atlas安裝配置

Atlas的安裝和配置都很簡單剂跟,具體可以參見官網(wǎng)的教程:https://github.com/Qihoo360/Atlas/wiki

安裝完成后在安裝目下修改Atlas的配置文件(/usr/local/mysql-proxy/conf/test.cnf):

#管理接口的用戶名

admin-username = user

#管理接口的密碼

admin-password = pwd

#Atlas后端連接的MySQL主庫的IP和端口,可設(shè)置多項酣藻,用逗號分隔

proxy-backend-addresses = 192.168.1.56:3306? (我的主庫IP和端口號)

#Atlas后端連接的MySQL從庫的IP和端口曹洽,@后面的數(shù)字代表權(quán)重,用來作負載均衡辽剧,若省略則默認為1送淆,可設(shè)置多項,用逗號分隔

proxy-read-only-backend-addresses = 192.168.1.55:3306@1? ?(我的從庫IP和端口號)

#用戶名與其對應的加密過的MySQL密碼怕轿,密碼使用PREFIX/bin目錄下的加密程序encrypt加密坊夫,下行的user1和user2為示例,將其替換為你的MySQL的用戶名和加密密碼撤卢!

pwds = root:DAJnl8cVzy8=

注意:這邊的用戶名密碼主庫和從庫需要完全保持一致环凿,而且需要保證這個用戶允許atlas的主機IP遠程訪問

用加密程序生成密碼root的密文

#Atlas監(jiān)聽的工作接口IP和端口

proxy-address = 0.0.0.0:1234

#Atlas監(jiān)聽的管理接口IP和端口

admin-address = 0.0.0.0:2345

運行Atlas

安裝配置完成后就可以運行Atlas了,進入/usr/local/mysql-proxy/bin目錄運行命令:

?./mysql-proxyd test start放吩,啟動Atlas智听。

./mysql-proxyd test restart,重啟Atlas渡紫。

?./mysql-proxyd test stop到推,停止Atlas。

注意命令中的test是Atlas的實例名稱惕澎,默認是test莉测。而且這個名字要和配置文件名test.cnf保持一致

啟動完成后可以運行mysql -h127.0.0.1 -P2345 -uuser -ppwd,進入后執(zhí)行:select * from help;查看管理DB的各類命令唧喉。

運行mysql -h127.0.0.1 -P1234 -u用戶名 -p密碼捣卤,測試一下讀寫分離是否可用忍抽。可以寫一條數(shù)據(jù)董朝,看看是否同步到從庫中鸠项。然后把主庫stop,看看是否只能查詢不能新增修改子姜。也可在配置文件中開啟sql日志來查看讀寫分離是否正常運行祟绊。

注意:如果主庫宕機,Atlas的做法是從庫依然提供讀操作哥捕,只是不能寫入數(shù)據(jù)牧抽。這時候如果主庫恢復上線,Atlas監(jiān)測到會重新連接遥赚,系統(tǒng)又恢復了讀寫分離阎姥。mycat采取2種方案,一種是主庫不可用鸽捻,從庫也不可用呼巴,另外一種是主庫不可用,從庫依然可用御蒲。不管哪種方式都不能保證數(shù)據(jù)庫的高可用衣赶,因為在主庫宕機到恢復上線這段時間,要么只能查詢數(shù)據(jù)厚满,要么什么都做不了府瞄。當然也又實現(xiàn)數(shù)據(jù)高可用的方案,那就是Galera Cluster碘箍,就是集成了Galera插件的MySQL集群遵馆。由于我能力有限就不說了,后面如果搞明白了丰榴,再分享心得货邓。

常見問題

如果無法連接Atlas的管理接口或者工作接口

1)查看一下atlas是否正常運行:ps -ef | grep mysql-proxy

2)檢查是否已經(jīng)關(guān)閉了防火墻:service iptables status

3)配置文件中pwds的用戶名密碼是否正確,用戶是否允許對應IP遠程訪問四濒。

至此换况,關(guān)于Atlas的讀寫分離的學習總結(jié)就分享完成了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盗蟆,一起剝皮案震驚了整個濱河市戈二,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喳资,老刑警劉巖觉吭,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異仆邓,居然都是意外死亡鲜滩,警方通過查閱死者的電腦和手機伴鳖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绒北,“玉大人黎侈,你說我怎么就攤上這事察署∶朴危” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵贴汪,是天一觀的道長脐往。 經(jīng)常有香客問我,道長扳埂,這世上最難降的妖魔是什么业簿? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮阳懂,結(jié)果婚禮上梅尤,老公的妹妹穿的比我還像新娘。我一直安慰自己岩调,他們只是感情好巷燥,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著号枕,像睡著了一般缰揪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上葱淳,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天钝腺,我揣著相機與錄音,去河邊找鬼赞厕。 笑死艳狐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的皿桑。 我是一名探鬼主播僵驰,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唁毒!你這毒婦竟也來了蒜茴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤浆西,失蹤者是張志新(化名)和其女友劉穎粉私,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體近零,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡诺核,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年抄肖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窖杀。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡漓摩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出入客,到底是詐尸還是另有隱情管毙,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布桌硫,位于F島的核電站夭咬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏铆隘。R本人自食惡果不足惜卓舵,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望膀钠。 院中可真熱鬧掏湾,春花似錦、人聲如沸肿嘲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽睦刃。三九已至砚嘴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涩拙,已是汗流浹背际长。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兴泥,地道東北人工育。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像搓彻,于是被迫代替她去往敵國和親如绸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,912評論 2 89
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理旭贬,服務發(fā)現(xiàn)怔接,斷路器,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 情話說多了太膩稀轨, 太過復雜扼脐。 變讓人以為逢場作戲。 簡單一點奋刽, 一句三字映襯在生活里瓦侮, 為此道句晚安艰赞, 不用浮塵也...
    囚青鳥閱讀 122評論 0 1
  • 在上海的一家餐館里,負責為我們上菜的那位女侍肚吏,年輕得像是樹上的一片嫩葉方妖。 她捧上蒸魚時,盤子傾斜罚攀。腥膻的魚汁魯魯莽...
    心碎的寶貝閱讀 164評論 1 5
  • 上司:Hey Jack, what language do you use when counting the l...
    明明就在土澳閱讀 2,435評論 0 2