騰訊云架構師整理總結(jié)的MySQL性能優(yōu)化和高可用架構實踐文檔

前言

作為最流行的開源數(shù)據(jù)庫軟件之一许溅,MySQL數(shù)據(jù)庫軟件已經(jīng)廣為人知了嚼隘。當前很火的Facebook、騰訊辜膝、淘寶等大型網(wǎng)站都在使用MySQL的數(shù)據(jù)庫无牵。

互聯(lián)網(wǎng)行業(yè)的多數(shù)業(yè)務場景有非常明顯的特點:用戶量大、引發(fā)數(shù)據(jù)容量大厂抖、并發(fā)高茎毁、業(yè)務復雜度適中。MySQL數(shù)據(jù)庫產(chǎn)品初期的定位就是Web應用的數(shù)據(jù)服務忱辅,故幾乎所有互聯(lián)網(wǎng)企業(yè)都使用MySQL數(shù)據(jù)庫產(chǎn)品七蜘,有很多企業(yè)幾乎全部使用MySQL提供的數(shù)據(jù)服務。

選擇開源產(chǎn)品是國家和企業(yè)的主流選擇墙懂,而開源MySQL數(shù)據(jù)庫在國內(nèi)外應用最廣泛橡卤,從業(yè)的技術人員也最多,它成為“去IOE”分布式技術架構中最關鍵的關系型數(shù)據(jù)庫產(chǎn)品损搬。數(shù)據(jù)庫系統(tǒng)作為IT業(yè)務系統(tǒng)的核心碧库,其高可用性和容災能力對整個業(yè)務系統(tǒng)的連續(xù)性和數(shù)據(jù)完整性起著至關重要的作用柜与,是企業(yè)正常運營的基石。

互聯(lián)網(wǎng)公司里面幾乎很少有公司不用MySQL嵌灰,國內(nèi)互聯(lián)網(wǎng)巨頭都在大規(guī)模使用MySQL弄匕。如果把MySQL比喻成數(shù)據(jù)庫界的一條巨龍,則性能優(yōu)化和高可用架構設計實踐就是點睛之筆沽瞭。

本文將詳細講解MySQL 5.7高可用和性能優(yōu)化技術粘茄,細致梳理思路,并與真實生產(chǎn)案例相結(jié)合秕脓,通過原理闡述到實戰(zhàn)部署柒瓣,幫助讀者將所學知識點運用到實際工作中。
相關知識資料移步主頁簡介

image.png

本文適合有一定基礎的MySQL數(shù)據(jù)庫學習者吠架、MySQL數(shù)據(jù)庫開發(fā)人員和MySQL數(shù)據(jù)庫管理人員閱讀芙贫。

目錄

image.png

主要內(nèi)容

第1章MySQL架構介紹;MySQL作為目前互聯(lián)網(wǎng)工作的主流數(shù)據(jù)庫傍药,有著不容撼動的地位磺平。DB-Engines這個排名在業(yè)界引用得非常多,權威性也很高拐辽,排名前三依然是Oracle拣挪、MySQL、Microsoft SQL Server俱诸。MySQL是20世紀90年代出來的數(shù)據(jù)庫菠劝,整個架構上吸取了其他數(shù)據(jù)庫的一些優(yōu)良特性,也去除了不好的地方睁搭,整個架構比較穩(wěn)定赶诊、比較簡潔。MySQL的架構可以在多種不同的場景中應用园骆,F(xiàn)acebook舔痪、Twitter、Google锌唾、騰訊锄码、阿里等都在大量使用MySQL存儲海量數(shù)據(jù)。

image.png

第2章lnnoDB存儲引擎體系結(jié)構晌涕;從MySQL 5.5版本開始滋捶,InnoDB是默認的表存儲引擎,特點是支持事務渐排、支持數(shù)據(jù)行鎖炬太、支持多版本并發(fā)MVCC、支持外鍵驯耻。

image.png

第3章MySQL事務和鎖亲族;鎖在計算機中是協(xié)調(diào)多個進程或線程并發(fā)訪問某一資源的一種機制炒考。在數(shù)據(jù)庫中,除了傳統(tǒng)的計算資源(CPU霎迫、RAM斋枢、I/O等)爭用之外,數(shù)據(jù)也是一種供許多用戶共享訪問的資源知给。數(shù)據(jù)庫在進行并發(fā)訪問的時候會自動對相應的對象進行加鎖瓤帚,以保證數(shù)據(jù)并發(fā)訪問的一致性。InnoDB存儲引擎既支持行級鎖涩赢,也支持表級鎖戈次,但默認情況下采用行級鎖。

image.png

第4章SQL語句性能優(yōu)化筒扒;說起SQL語句性能優(yōu)化怯邪,相信所有人都了解一些簡單的技巧:不使用SELECT *、不使用NULL字段花墩、合理地使用索引悬秉、為字段選擇恰當?shù)臄?shù)據(jù)類型等。你是否真的理解這些優(yōu)化技巧冰蘑?是否理解其背后的工作原理和泌?本章從理論和實戰(zhàn)角度出發(fā),講解這些優(yōu)化建議背后的原理祠肥。

image.png

第5章MySQL服務器全面優(yōu)化武氓;絕大多數(shù)使用Linux操作系統(tǒng)的大中型互聯(lián)網(wǎng)網(wǎng)站都在使用MySQL作為后端的數(shù)據(jù)庫服務,所以如何優(yōu)化MySQL服務器是我們要研究的√赂蹋現(xiàn)在MySQL 5.7版本對于多核CPU聋丝、固態(tài)硬盤、鎖機制有著更好的優(yōu)化工碾。另外,MySQL 5.7版本對優(yōu)化器提升了很多百姓,比如MySQL 5.7的in語句子查詢能夠使用index range scan方式渊额,Union all不再產(chǎn)生臨時表,排序效率上也有所提升垒拢。我們從MySQL 5.7版本的存儲引擎增強旬迹,硬件、操作系統(tǒng)求类、配置參數(shù)優(yōu)化奔垦、設計規(guī)范優(yōu)化幾個層面來全面優(yōu)化MySQL服務器。

image.png

第6章MySQL性能監(jiān)控尸疆;MySQL被越來越多的企業(yè)接受椿猎。隨著企業(yè)發(fā)展惶岭,MySQL存儲數(shù)據(jù)日益膨脹,性能分析犯眠、監(jiān)控預警顯得非常重要按灶。在某些場景下,通常會部署一套MySQL監(jiān)控/圖形工具筐咧,然后根據(jù)MySQL監(jiān)控面板提供的信息來執(zhí)行進一步的調(diào)優(yōu)鸯旁。

image.png

第7章MySQL主從復制詳解;MySQL的主從復制功能是構建基于MySQL數(shù)據(jù)庫的高可用量蕊、高性能的應用程序基礎铺罢,既能用于分擔主數(shù)據(jù)庫的讀負載,也為高可用HA等工作提供了更多的支持残炮。主從復制是指數(shù)據(jù)可以從一個MySQL數(shù)據(jù)庫服務器主節(jié)點復制到另外一個或多個MySQL數(shù)據(jù)庫服務器從節(jié)點韭赘。主從復制可以用于數(shù)據(jù)實時備份、讀寫分離吉殃、高可用HA等企業(yè)場景中辞居。

image.png

第8章PXC高可用解決方案;Percona公司的Percona XtraDB Cluster(簡稱PXC)是基于Galera協(xié)議 的 MySQL 高 可 用 性 集 群 架 構 蛋勺, 集 成 了 Percona Server 和 PerconaXtraBackup瓦灶,同時采用了Codership Galera庫。Percona Xtradb Cluster在原MySQL代碼上通過Galera包將不同的MySQL實例連接起來抱完,實現(xiàn)了multi-master的集群架構贼陶。它可以實現(xiàn)多個MySQL節(jié)點間的數(shù)據(jù)同步復制以及讀寫,不但可以保障數(shù)據(jù)庫的服務高可用巧娱,而且保證整個集群所有數(shù)據(jù)的強一致性碉怔,滿足CAP理論中的一致性(Consistency)和可用性(Availability)。

image.png

第9章基于MHA實現(xiàn)的MySQL自動故障轉(zhuǎn)移集群禁添;MHA(Master High Avaliability)是由日本的一位工程師采用Perl語言編寫的一個腳本管理工具撮胧,是一款開源的MySQL高可用解決方案軟件,能在MySQL主從復制的基礎上實現(xiàn)自動化主服務器故障轉(zhuǎn)移老翘,目前在MySQL高可用方面是一個相對成熟的解決方案芹啥。在MySQL故障切換過程中,MHA能做到在30秒之內(nèi)自動完成數(shù)據(jù)庫的故障切換操作铺峭,并且在進行故障切換的過程中能在最大程度上保證數(shù)據(jù)的一致性墓怀,以達到真正意義上的高可用。

image.png

第10章MySQL Group Replication卫键;MySQL Group Replication(MGR)是MySQL官方于2016年12月推出的一個全新的高可用的解決方案傀履。MGR被認為是繼Oracle Database RAC之后又一個“真正”的集群,也是MySQL官方基于組復制概念并充分參考MariaDB Galera Cluster和Percona XtraDB Cluster結(jié)合而來的新的高可用集群架構莉炉。它是官方推出的一種基于Paxos協(xié)議的狀態(tài)機復制钓账,徹底解決了基于傳統(tǒng)的異步復制和半同步復制中數(shù)據(jù)一致性問題無法保證的情況碴犬,讓MySQL數(shù)據(jù)庫打開互聯(lián)網(wǎng)金融行業(yè)的大門。

image.png

第11章Keepalived+雙主復制的高可用架構官扣;雙主復制配合Keepalived這種MySQL高可用架構設計也是基于MySQL的主從復制原理翅敌,而Keepalived使用VIP,并利用Keepalived自帶的服務監(jiān)控功能和自定義腳本來實現(xiàn)master主服務器故障自動切換惕蹄。這套MySQL雙主復制+Keepalived架構其實可以適用于各種業(yè)務蚯涮,是一種簡單、便捷的高可用方案卖陵。

image.png

第12章數(shù)據(jù)庫分庫分表與中間件介紹遭顶;大型網(wǎng)站用戶數(shù)和數(shù)據(jù)庫規(guī)模急劇上升,關系型數(shù)據(jù)庫常見的性能瓶頸主要體現(xiàn)在兩點:一是大量的并發(fā)讀寫操作泪蔫,導致單庫出現(xiàn)負載壓力過大棒旗;二是單表存儲數(shù)據(jù)量過大,導致查詢效率低下撩荣。這時常見的做法便是對數(shù)據(jù)庫實施分庫分表即Sharding改造來應對海量數(shù)據(jù)和高并發(fā)對數(shù)據(jù)庫的沖擊铣揉,與此同時,支持分庫分表并且對業(yè)務開發(fā)透明的數(shù)據(jù)庫中間件也大行其道餐曹。

image.png

第13章Mycat中間件詳解逛拱;由于真正的數(shù)據(jù)庫需要存儲引擎,而Mycat并沒有存儲引擎台猴,因此它并不是完全意義上的分布式數(shù)據(jù)庫系統(tǒng)朽合,可以更貼切地說成是數(shù)據(jù)庫的中間件,就是介于數(shù)據(jù)庫與應用之間進行數(shù)據(jù)處理與交互的中間服務饱狂。傳統(tǒng)的訪問數(shù)據(jù)庫是直接連接數(shù)據(jù)庫曹步,創(chuàng)建數(shù)據(jù)庫實例,根據(jù)需求對數(shù)據(jù)庫中的數(shù)據(jù)進行增刪查改休讳。但是讲婚,當我們使用Mycat后,其實直接連接的是Mycat俊柔,通過Mycat對真正的數(shù)據(jù)庫進行操作磺樱,在Mycat上我們可以做一些分表分庫等操作,達到我們對數(shù)據(jù)庫的可擴展要求婆咸。

image.png

相關知識資料移步主頁簡介或者

加微:yxqbkd
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芜辕,隨后出現(xiàn)的幾起案子尚骄,更是在濱河造成了極大的恐慌,老刑警劉巖侵续,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倔丈,死亡現(xiàn)場離奇詭異憨闰,居然都是意外死亡,警方通過查閱死者的電腦和手機需五,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門鹉动,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宏邮,你說我怎么就攤上這事泽示。” “怎么了蜜氨?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長飒炎。 經(jīng)常有香客問我埋哟,道長,這世上最難降的妖魔是什么赤赊? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮煞赢,結(jié)果婚禮上抛计,老公的妹妹穿的比我還像新娘。我一直安慰自己耕驰,他們只是感情好爷辱,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朦肘,像睡著了一般饭弓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上媒抠,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天弟断,我揣著相機與錄音,去河邊找鬼趴生。 笑死阀趴,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的苍匆。 我是一名探鬼主播刘急,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浸踩!你這毒婦竟也來了叔汁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎据块,沒想到半個月后码邻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡另假,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年像屋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片边篮。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡己莺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苟耻,到底是詐尸還是另有隱情篇恒,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布凶杖,位于F島的核電站胁艰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏智蝠。R本人自食惡果不足惜腾么,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杈湾。 院中可真熱鬧解虱,春花似錦、人聲如沸漆撞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浮驳。三九已至悍汛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間至会,已是汗流浹背离咐。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奉件,地道東北人宵蛀。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像县貌,于是被迫代替她去往敵國和親术陶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

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