埋在 MySQL 數(shù)據(jù)庫應(yīng)用中的17個關(guān)鍵問題贡耽!

MySQL的使用非常普遍衷模,跟MySQL有關(guān)的話題也非常多鹊汛,如性能優(yōu)化蒲赂、高可用性、強一致性刁憋、安全滥嘴、備份、集群至耻、橫向擴展若皱、縱向擴展、負載均衡尘颓、讀寫分離等走触。要想掌握其中的精髓,可得花費不少功力疤苹,雖然目前流行的MySQL替代方案有很多互广,可是從最小成本最容易維護的角度而言,MySQL還是首選。

下面從應(yīng)用場景的角度切入惫皱,對MySQL的技術(shù)點進行組織像樊,寫一份知識圖譜,方便進行更深入的學(xué)習(xí)和總結(jié)旅敷。

如下圖整理生棍,我試著把MySQL的應(yīng)用場景分為6種,每種場景下需要考慮的重點問題不一樣媳谁,從而引出不同問題點下需要補齊的知識點涂滴,后續(xù)繼續(xù)基于這些知識點進行學(xué)習(xí)和整理。

一晴音、單Master

單Master的情況是普遍存在的氢妈,對于很多個人站點、初創(chuàng)公司段多、小型內(nèi)部系統(tǒng)首量,考慮到成本、更新頻率进苍、系統(tǒng)重要性等問題加缘,系統(tǒng)只依賴一個單例數(shù)據(jù)庫提供服務(wù),基本上已經(jīng)滿足需求觉啊。這種場景下我覺得重點應(yīng)該關(guān)注的話題有上圖所示的四點拣宏。

其中最重要的環(huán)節(jié)是數(shù)據(jù)備份,如果是交易量非常低杠人,并且具有非常明確的服務(wù)時間段特性的話勋乾,簡單的mysqldump是可以勝任的。但是這是有缺陷的嗡善,數(shù)據(jù)還原之后注定從備份點到還原點之間的數(shù)據(jù)會丟失辑莫。然而在極多數(shù)的情況下,備份的工作是沒法馬虎的罩引,如下列舉的幾點小細節(jié)各吨,下學(xué)期將分享更多操作性的文章。

1)冷備:停機袁铐,直接copy物理文件揭蜒,InnoDB引擎(frm文件、共享表空間文件剔桨、獨立表空間文件屉更、重做日志文件、my.cnf)洒缀。

恢復(fù):把文件copy到對應(yīng)目錄瑰谜。

2)熱備: Ibbackup或者XtraBackup工具,記錄重做日志文件檢查點的LSN,copy共享表空間文件以及獨立表空間文件(不產(chǎn)生任何阻塞)似舵,記錄copy后重做日志文件檢查點的LSN脚猾,copy備份是產(chǎn)生的重做日志。

恢復(fù):恢復(fù)表空間文件砚哗,應(yīng)用重做日志文件龙助。

3)溫備

mysqldump,--single-transaction參數(shù)進行事務(wù)管理保證數(shù)據(jù)一致性蛛芥。備份時不能用DDL語句提鸟。 恢復(fù):直接執(zhí)行文件,mysql –uroot –p <文件名.sql>

二進制半同步復(fù)制仅淑,主從服務(wù)器增量復(fù)制

恢復(fù):mysqlbinlog

二称勋、一主一從

考慮一主一從的多數(shù)初衷是系統(tǒng)性能和系統(tǒng)高可用性問題,除了單Master場景中的備份工作需要做好以外涯竟,還有性能優(yōu)化赡鲜、讀寫分離、負載均衡三項重點工作需要考慮庐船。其中性能優(yōu)化的內(nèi)容比較多银酬,也是一塊大主題,要從系統(tǒng)的服務(wù)指標(biāo)作為依據(jù)采取相應(yīng)的動作筐钟,多數(shù)系統(tǒng)要求的是3秒內(nèi)完成請求揩瞪,總體換算下來,數(shù)據(jù)庫大概可以有1.5秒的總執(zhí)行時間篓冲,能滿足這個性能要求就是合理的優(yōu)化方案李破。下學(xué)期以這樣的優(yōu)先級來分別整理內(nèi)容:索引優(yōu)化 -》 表設(shè)計優(yōu)化 -》數(shù)據(jù)庫配置優(yōu)化 -》硬件優(yōu)化。

讀寫分離和負載均衡的實現(xiàn)相對簡單些壹将,我目前維護的系統(tǒng)比較落后嗤攻,沒有做讀寫分離,因為是一套以報表類功能為主的系統(tǒng)瞭恰,而負載均衡是依賴php代碼來做的屯曹,從實際運維效果來看,不大理想惊畏,而且負載均衡的代碼過分嵌入到業(yè)務(wù)邏輯代碼中,給代碼維護帶來一定噪音密任。下學(xué)期計劃對各種中間件進行實踐和性能測試颜启,到時候把一些測試數(shù)據(jù)分享出來。

三浪讳、一主 n 從

一旦開始考慮一主多從的服務(wù)器架構(gòu)缰盏,則證明你的系統(tǒng)對可用性、一致性、性能中一種或者多種的要求比較高口猜。好多系統(tǒng)在開始搭建的時候都會往這個方向看齊负溪,畢竟這樣“看起來”系統(tǒng)會健壯很多。不過其實并不能單單依靠MySQL的配置和MySQL自帶的中間件來解決可用性济炎、一致性方面的問題川抡。

四、橫向集群

系統(tǒng)龐大到需要分庫分表须尚,其實是一件可喜可賀的事情崖堤,但是切記的是要前面提到性能優(yōu)化工作做到極致之后才好考慮這些會增加系統(tǒng)復(fù)雜度的解決方案。橫向集群主要是從業(yè)務(wù)特性的角度對系統(tǒng)進行切分耐床,最徹底就是切分成了各個子系統(tǒng)密幔,子系統(tǒng)之間通過一些數(shù)據(jù)同步的方案來把一些核心數(shù)據(jù)進行共享,以避免跨庫調(diào)用跨庫join撩轰。

然后是各種系統(tǒng)接口調(diào)用胯甩,把大事務(wù)拆成小事務(wù),事務(wù)之間做好隔離和同步堪嫂。上圖中的三個問題在橫向集群的架構(gòu)體系中應(yīng)屬于很有特色的問題蜡豹,在實際項目中其實是盡量去避免這些需求的存在的,不過如果確實需要了溉苛,也得有解決方案镜廉。下學(xué)期也將針對這些問題進行逐一整理,并測試一下一些號稱支持這些功能的中間件愚战。

五娇唯、縱向集群

橫向集群的切分思路最終是切分子系統(tǒng),而縱向集群最后遇到的最棘手的問題是擴縮容寂玲,我運維的一個系統(tǒng)是提前對數(shù)據(jù)做了256個切片塔插,256切片中0~127切片和128~255切片分別存在兩個一主兩從的數(shù)據(jù)庫集群中,系統(tǒng)運維了3年多拓哟,目前還沒有擴容需求想许。設(shè)計初衷應(yīng)該是考慮得到,假設(shè)有一天數(shù)據(jù)量非常大断序,可以把256個切片分4大片流纹,分別存儲到4個一主兩從的集群中,從而實現(xiàn)擴容违诗。

這個思路的確是可取的漱凝,只是我們的分庫邏輯當(dāng)前是php代碼實現(xiàn),也有一定程度上影響了業(yè)務(wù)代碼的邏輯诸迟,運維起來有點心驚膽戰(zhàn)茸炒,還是保持業(yè)務(wù)代碼清爽比較好愕乎。

下學(xué)期將介紹一些實現(xiàn)了庫路由功能的中間件的使用,也根據(jù)實際情況把想到的一些擴縮容方案實踐一遍壁公,敬請期待實操效果的分享感论。

六、混合模式

與其說這部分內(nèi)容討論上面5種場景的混合紊册,不如說這部分內(nèi)容是做總結(jié)比肄。上面的5種場景中,一共列舉了17個問題點湿硝,這17個問題點基本上都是疊加式的薪前,越往深入的框架去做就越需要考慮齊這17個問題點。17個問題點考慮全了关斜,混合模式下的問題就不成問題了示括。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市痢畜,隨后出現(xiàn)的幾起案子垛膝,更是在濱河造成了極大的恐慌,老刑警劉巖丁稀,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吼拥,死亡現(xiàn)場離奇詭異,居然都是意外死亡线衫,警方通過查閱死者的電腦和手機凿可,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來授账,“玉大人枯跑,你說我怎么就攤上這事“兹龋” “怎么了敛助?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長屋确。 經(jīng)常有香客問我纳击,道長,這世上最難降的妖魔是什么攻臀? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任焕数,我火速辦了婚禮,結(jié)果婚禮上茵烈,老公的妹妹穿的比我還像新娘百匆。我一直安慰自己,他們只是感情好呜投,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布加匈。 她就那樣靜靜地躺著,像睡著了一般仑荐。 火紅的嫁衣襯著肌膚如雪雕拼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天粘招,我揣著相機與錄音啥寇,去河邊找鬼。 笑死洒扎,一個胖子當(dāng)著我的面吹牛辑甜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袍冷,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼磷醋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胡诗?” 一聲冷哼從身側(cè)響起邓线,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎煌恢,沒想到半個月后骇陈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡瑰抵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年你雌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片二汛。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡婿崭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出习贫,到底是詐尸還是另有隱情逛球,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布苫昌,位于F島的核電站颤绕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏祟身。R本人自食惡果不足惜奥务,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望袜硫。 院中可真熱鬧氯葬,春花似錦、人聲如沸婉陷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至闯睹,卻和暖如春戏羽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背楼吃。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工始花, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人孩锡。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓酷宵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躬窜。 傳聞我的和親對象是個殘疾皇子浇垦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

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