《MySQL王者晉級之路》
十年磨一劍,匯集作者多年MySQL資料庫領域的一線實戰與教學經驗,由淺入深剖析MySQL的體系結構、備份恢復、複製、高可用集群架構、最佳化、故障排查、新版本特性、監控、升級及技術面試寶典等知識點。
張甦 著
ISBN 978-7-121-33679-9
2018年3月出版
定價:79.00元
344頁
16開
基本介紹
- 中文名:MySQL王者晉級之路
- 作者:張甦
- 出版社:電子工業出版社
- 出版時間:2018年3月
- 頁數:344 頁
- 定價:79 元
- 開本:16 開
- ISBN:978-7-121-33679-9
編輯推薦,內容提要,目錄,媒體評論,前言,寫作本書的目的,閱讀本書方式,致謝,
編輯推薦
資深資料庫專家十年沉澱
詳細解析MySQL資料庫體系結構
技術問答,助力面試
內容提要
大部分軟體開發平台都基於Linux,很多網際網路公司都把MySQL作為後端數據存儲的資料庫。如果把MySQL比喻成資料庫界的一條巨龍,則《MySQL王者晉級之路》涵蓋的所有知識點就是這條巨龍的組成部分。
《MySQL王者晉級之路》深入剖析MySQL資料庫體系結構,實戰演練備份恢復、主從複製,詳解高可用集群架構的設計與實踐過程,詳細梳理最佳化思路,展現新版本的特性,並與真實生產案例相結合,通過核心原理到“王者”實戰,全面覆蓋MySQL資料庫的知識點。
《MySQL王者晉級之路》適合熟悉Linux系統且想提升MySQL水平的讀者。
目錄
第1部分 倔強青銅篇
第1章 MySQL簡介與主流分支版本
1.1 MySQL簡介
1.2 MySQL主流的分支版本
1.2.1 官方版本的MySQL
1.2.2 Percona Server
1.2.3 MariaDB
第2章 MySQL資料庫的安裝、啟動和關閉
2.1 下載MySQL二進制軟體包
2.2 安裝前系統環境檢測
2.3 MySQL 5.6版本的安裝過程
2.4 創建密碼
2.5 關閉MySQL資料庫
2.6 基礎資料庫的名稱
2.7 MySQL 5.7版本的安裝
2.8 MySQL資料庫root密碼丟失的問題
2.9 MySQL資料庫的連線方式
2.10 用戶許可權管理
第3章 MySQL體系結構與存儲引擎
3.1 MySQL體系結構
3.2 Query Cache詳解
3.3 存儲引擎
3.4 InnoDB體系結構
3.4.1 資料庫和資料庫實例
3.4.2 InnoDB存儲結構
3.4.3 記憶體結構
3.4.4 Buffer狀態及其鍊表結構
3.4.5 各大刷新執行緒及其作用
3.4.6 記憶體刷新機制
3.4.7 InnoDB的三大特性
第4章 資料庫檔案
4.1 參數檔案
4.2 參數類型
4.3 錯誤日誌檔案(error log)
4.4 二進制日誌檔案(binary log)
4.5 慢查詢日誌(slow log)
4.6 全量日誌(general log)
4.7 審計日誌(audit log)
4.8 中繼日誌(relay log)
4.9 Pid檔案
4.10 Socket檔案
4.11 表結構檔案
4.12 InnoDB存儲引擎檔案
第5章 表
5.1 整型
5.2 浮點型
5.3 時間類型
5.4 字元串類型
5.5 字元集
5.6 表碎片產生的原因
5.7 碎片計算方法及整理過程
5.8 表統計信息
5.9 統計信息的收集方法
5.10 MySQL庫表常用命令總結
第6章 索引
6.1 二叉樹結構
6.2 平衡二叉樹結構
6.3 B-tree結構
6.4 B+tree
6.4.1 聚集索引和普通索引
6.4.2 ICP、MRR和BKA
6.4.3 主鍵索引和唯.一索引
6.4.4 覆蓋索引
6.4.5 前綴索引
6.4.6 聯合索引
6.5 哈希索引
6.6 索引的總結
第7章 事務
7.1 事務的特性
7.2 事務語句
7.3 truncate和delete的區別
7.4 事務的隔離級別
7.5 細說髒讀、不可重複讀、幻讀、可重複讀現象
7.5.1 髒讀
7.5.2 不可重複讀與幻讀
7.5.3 可重複讀
第8章 鎖
8.1 InnoDB的鎖類型
8.1.1 讀鎖
8.1.2 寫鎖
8.1.3 MDL鎖
8.1.4 意向鎖
8.2 InnoDB行鎖種類
8.2.1 單個行記錄的鎖
8.2.2 間隙鎖(GAP lock)
8.2.3 Next-key Locks
8.3 鎖等待和死鎖
8.4 鎖問題的監控
第2部分 秩序白銀篇
第9章 備份恢復
9.1 MySQL的備份方式
9.2 冷備及恢復
9.3 熱備及恢復
9.3.1 mysqldump的備份與恢復
9.3.2 select …into outfile
9.3.3 load data與insert的插入速度對比
9.3.4 mydumper
9.3.5 裸檔案備份XtraBackup
9.4 流式化備份
9.4.1 非壓縮模式的備份
9.4.2 壓縮模式的備份
9.4.3 遠程備份
9.5 表空間傳輸
9.6 利用binlog2sql進行閃回
9.7 binlog server
9.8 總結
第3部分 榮耀黃金篇
第10章 主從複製概述
10.1 常見的幾種主從架構模式圖
10.2 主從複製功能
10.3 主從複製原理
10.4 複製中的重點參數詳解
第11章 複製原理及實戰演練
11.1 異步複製
11.2 主從複製故障處理
11.3 半同步複製
11.4 半同步複製和異步複製模式的切換
11.5 GTID 複製
11.5.1 GTID原理介紹
11.5.2 GTID存在的價值
11.5.3 主從複製中GTID的管理與維護
11.5.4 GTID複製與傳統複製的切換
11.5.5 GTID使用中的限制條件
11.6 多源複製
11.7 主從延遲的解決方案及並行複製
11.8 主從複製的數據校驗
11.9 總結
第4部分 尊貴鉑金篇
第12章 MHA
12.1 MHA簡介
12.1.1 MHA部署
12.1.2 MHA原理
12.1.3 MHA的優缺點
12.1.4 MHA工具包的功能
12.2 實戰演練
第13章 Keepalived+雙主架構
13.1 Keepalived介紹
13.2 集群搭建思路及建議
13.3 實驗部署演練
第14章 PXC
14.1 PXC原理
14.2 PXC架構的優缺點
14.3 PXC中重要概念和重點參數
14.4 PXC架構搭建實戰
14.5 PXC集群狀態的監控
14.6 從節點線上轉化為PXC節點
第15章 ProxySQL
15.1 ProxySQL的安裝與啟動
15.2 配置ProxySQL監控
15.3 ProxySQL的多層配置系統
15.4 配置ProxySQL主從分組信息
15.5 配置讀寫分離策略
15.6 測試讀寫分離
15.7 總結
第5部分 永恆鑽石篇
第16章 MySQL 5.7新特性
16.1 InnoDB存儲引擎的增強
16.2 其他方面的增強
第17章 MySQL全面最佳化
17.1 硬體最佳化
17.2 配置參數最佳化
17.3 從Linux作業系統層面來談對MySQL的最佳化
17.4 表設計及其他最佳化
17.5 整體管理最佳化總結
第6部分 至尊星耀篇
第18章 Lepus之MySQL監控
18.1 Lepus簡介
18.2 實戰部署
18.3 監控MySQL伺服器
18.4 部署Lepus慢查詢分析平台實戰
18.5 監控總結
第19章 MySQL版本升級
19.1 升級方式
19.2 實戰演練
第7部分 最強王者篇
第20章 MySQL面試寶典
20.1 自我介紹
20.2 技術問答
媒體評論
在這個時代,能安安靜靜去讀一本書的機會越來越少,能踏踏實實去深入研究技術的人也越來越少,這就越發顯出可以忍耐孤獨寂寞、傾心寫作的人的難能可貴。在親身經歷過艱苦而漫長的實踐之後,我也越來越敬仰那些筆耕不輟、鐘情翰墨的作者們。
初識張甦,我就有一見如故的親切感。當知道他已經在MySQL領域默默耕耘多年,自己培養出了一批又一批的學生的時候,我更是敬佩不已。在繁忙的工作中,還能抽出時間完成本書的編寫,這是需要勇氣和毅力的。
本書是對MySQL基礎知識的全面解析,也是他多年工作和教學經驗的結晶,其內容幾乎涵蓋了初學者對MySQL知識需求的方方面面,是一本非常值得學習的MySQL著作,本書將會帶你進入MySQL的神奇殿堂。在我看來本書更是拙作《MySQL運維內參》的黃金搭檔,一個用於知識點的全面普及,一個用於深入了解MySQL的內參指導,但願二者結合,能夠幫助所有願意學習和使用MySQL的人。
周彥偉
《MySQL運維內參》作者、中國MySQL用戶組主席
總體來說,市面上MySQL類的經典書不多,其中一個重要原因就是MySQL DBA的工作內容大而全,充分享受了開源紅利,理論學習和工作實踐還是存在差別的。無論是學習MySQL,還是學習Oracle,資料庫體系結構都是重中之重,需要在實踐中不斷總結,這一點我和作者的觀點吻合。
作者收集整理了自己多年的一線經驗,以一種輕鬆明快的文風來講述MySQL體系結構和運維相關知識。通過本書,不僅能對MySQL知識體系有一個全面的了解,還能夠一窺一線DBA的工作內容和技巧,相信會帶給你一些新的思考和方向。
楊建榮
DBAplus社群發起人,Oracle ACE,《Oracle DBA工作筆記》作者
感謝張甦邀請,在拿到這本書大綱的時候,我問了張甦一個問題:“你寫這本書的初心是什麼?”答曰:“我想將自己近十年的資料庫運維經驗和授課感悟寫給那些剛跨入此領域的學生們。”對此,我深有同感,從業十餘年,我發現資料庫DBA這個圈子大部分都是半路出家的,很少有人在學校裡面就決定了自己要做DBA,要從事資料庫相關領域的工作,更多的是隨著工作職責的變更,通過自學從而走上這條路的。我認識的朋友中有從開發轉DBA的,也有從運維轉DBA的,大部分的情況都是資料庫沒有專人管理,開始是兼顧,後期慢慢就轉型成了專職的DBA了。
而在這個過程中,不免會走很多的彎路,尤其是在十年前那個信息匱乏、交流不便的年代,出了問題不知道是什麼原因導致的,面對需求沒有什麼相關的解決方案可以參考,他人的經驗更是寥寥無幾。這個時代正是信息大爆炸的時代,資料庫也不再那么神秘,我們可以從各個渠道獲取相關的知識,可以看同樣的case別人是怎么解決的,相同的問題別的公司是怎么處理的,那么我們為什麼還需要MySQL類的書籍呢?這也是我的第二個疑問,我同樣問了張甦,他是這么回答的:“這本書包含了我近十年的工作經驗總結,涵蓋了我能想到的MySQL的各個方面,對於初學者來說是很好的入門書籍。”
我翻閱了大綱,這本書從安裝下載、部署啟動,到參數、索引、鎖、事務等MySQL常用和不常用的知識點都有詳細介紹,描述得非常直白,並配有詳細的案例,確實非常適合入門級讀者進行學習。我們從業者常見的分享經常會忽略一些基礎概念的解釋和介紹,默認客群已經知道了這部分內容,而張甦這本書完全假設客群為零基礎的讀者,深入淺出地介紹了MySQL的相關知識,建議作為MySQL的入門書籍。
最後,資料庫DBA在人數上屬於較為小眾的職業,但是選擇了這個職業的人都是比較有趣的,如果你也選擇了這個職業,希望我們共同將其發揚光大,讓更多的人理解這個職業。
肖鵬
微博研發中心 技術副總監
隨著網際網路時代的興起,MySQL在資料庫領域日益顯現出舉足輕重的地位,它不斷擴大的用戶群體就是很好的證明。在這樣的背景下,需要越來越多的人在知識資源方面為之付出,將自己對MySQL資料庫的學習過程、運維經驗、個人理解等記錄下來,為行業中的後來者燃起一盞明燈,讓他們少走一些彎路。
這正是本書寫作的初衷。書中匯集了作者多年來在MySQL運維及教學過程中不斷總結、不斷思考的成果,內容豐富、體例清晰。不僅有對基礎知識的闡述,比如MySQL作為一個關係型通用資料庫所具備的模組、組織架構、功能及特點等,還有對實際操作的指導,比如告訴你在運維中應該重點關注什麼,如何控制資料庫的行為,如何解決問題等,旨在讓讀者對資料庫有一個更深入的理解。本書深入淺出,語言平實又不乏幽默,輕快又不失嚴謹,是一本值得學習的好書。相信開卷有益,每位讀者都能在輕鬆暢快的閱讀中有意外的收穫。
王竹峰
去哪兒網資料庫總監 Oracle MySQL ACE
前言
找到一份合適的工作,就像在工作的八小時之內有了一個心儀的戀人—MySQL資料庫就是我的甜蜜愛戀。
我上學時特別不愛學習,也從來沒有想過,也不敢想,有一天自己會寫本書。作為一個在資料庫領域摸爬滾打近十年的“老司機”,從一個什麼都不會的菜鳥,做到公司的高管兼資深資料庫講師,我很希望把自己這些年積累下來的實戰經驗和一些學習MySQL資料庫的心得體會分享給大家。我很能理解那些剛進入資料庫領域的同學的困惑,因為自己剛學習MySQL的時候,就跟無頭蒼蠅一樣,遇到報錯後在網上到處找資料,關鍵是看完資料後有些問題可能還是解決不了,因為不知道哪種處理方法是對的。當時很崩潰,真心不知道該從哪裡下手學習才好。別人還經常推薦一些過於偏向概念性敘述的資料庫書籍,越看越暈。我當時就想為什麼非要把資料庫的知識點說得這么煩瑣、深奧,讓別人看不懂、理解不了呢?
寫作本書的目的
我平常喜歡寫一些技術部落格,在51CTO上面寫了一篇“青銅到王者,快速提高MySQL資料庫段位”的文章,這篇文章指明了MySQL資料庫的一個學習方向,但沒有深入展開講解裡面的核心知識點。有讀者發私信和留言說,能不能更具體地展開講解呢。所以我決定把裡面所有核心的技術乾貨寫成書,毫無保留地分享給大家。希望本書對大家在生產中實踐MySQL時有幫助,可以讓有一定基礎的、有工作經驗的運維人員和DBA更加深入地了解MySQL,使用和維護起來更加得心應手,更希望可以讓剛踏入資料庫領域的讀者快速掌握MySQL資料庫的核心知識體系,給那些想學習MySQL資料庫的入門者指明一個正確方向,少走一些彎路。讓我們一起朝著技術領域金字塔的塔尖大步前行。
閱讀本書方式
本書在知識結構上分為7部分。
第1部分 倔強青銅篇(第1~8章)。包括MySQL簡介、主流分支版本、資料庫安裝/啟動/關閉、許可權管理、MySQL資料庫的記憶體池結構、存儲引擎、執行緒作用、刷新機制、資料庫檔案、表管理、字元集、統計信息與數據碎片整理的方法。還包括對索引的詳細解讀,執行計畫的分析、壓力測試的展現、事務的介紹,以及對隔離級別的深度講解,並結合鎖一起展開學習。
第2部分 秩序白銀篇(第9章)。介紹生產環境中常用的備份方法、邏輯備份和裸檔案備份。針對mysqldump、select…into outfile、mydumper和xtrabackup等備份恢復工具的原理展開詳解及實踐演練。
第3部分 榮耀黃金篇(第10~11章)。介紹主從複製的原理,對複製參數進行詳細講解,對半同步複製、多源複製、GTID複製進行全面解讀與實踐,對複製數據一致性的校驗和複製管理技巧進行介紹,並解讀主從複製中的各種報錯故障。
第4部分 尊貴鉑金篇(第12~15章)。介紹網際網路主流的MySQL高可用集群架構,對MHA、Keepalived、PXC原理的解析、維護管理與實踐,最後介紹ProxySQL這個強大的MySQL中間代理層的套用。
第5部分 永恆鑽石篇(第16~17章)。介紹MySQL 5.7版本的新特性,以及通過硬體、作業系統、資料庫、程式設計這四個維度來全面介紹MySQL資料庫的最佳化。
第6部分 至尊星耀篇(第18~19章)。學習部署Lepus,監控MySQL與版本升級。
第7部分 最強王者篇 第20章。MySQL面試總結。
致謝
在我從事資料庫工作近十年的道路上,我要感謝那些曾經幫助過我的前輩們,當我遇到困難想要放棄這個行業時,是你們耐心的開導與指引,才使我沒有失去方向。我也要感謝51CTO這個平台,讓我可以把自己工作中的經驗分享給大家,感謝51CTO的運營經理高陽,不厭其煩地幫我整理部落格中的一些素材,才能讓我的文章以很好的方式呈現給大家。最後還要感謝電子工業出版社的陳曉猛編輯,感謝你的獨具慧眼和對我無條件的支持與鼓勵,讓我可以非常順利地完成寫作。
技術無國界,讓我們一起熱愛技術、分享知識,打造出屬於自己的一片廣闊天空。此書獻給所有喜歡技術的朋友們!
張甦