第一部分 MySQL篇
1 MySQL源代碼入門
MySQL源代碼的組織結構
Linux下的編譯
安裝MySQL庫
MySQL 5.7權限處理
2 MySQL啓動過程
3 連接的生命與使命
用戶連接綫程創建
MySQL處理請求
總結
4 MySQL錶對象緩存
錶結構的實現原理
涉及的參數變量
優缺點總結
存在的問題
5 InnoDB初探
InnoDB的源代碼目錄結構
InnoDB存儲引擎文件組織
InnoDB體係結構
InnoDB存儲引擎啓動與關閉
- - InnoDB 存儲引擎的啓動
- - InnoDB存儲引擎的關閉
6 InnoDB數據字典
背景
係統錶結構
字典錶加載
Rowid管理
總結
7 InnoDB數據存儲結構
錶空間文件組成結構
- - 段
- - 簇
- - 頁麵
段、簇、頁麵組織結構
8 InnoDB索引實現原理
背景
B+樹及B樹的區彆
索引的設計
聚簇索引和二級索引
二級索引指針
神奇的B+樹網絡
InnoDB索引的插入過程
一個頁麵至少要存儲幾條記錄
頁麵結構管理
- - 文件管理頭信息
- - 頁麵頭信息
- - 最小記錄和最大記錄
- - 頁麵數據空間管理
- - 經典的槽管理
- - 頁麵尾部
- - 頁麵重組
索引頁麵的迴收
9 InnoDB記錄格式
背景
從源碼入手瞭解行格式
總結
10 揭秘獨特的兩次寫
單一頁麵刷盤
批量頁麵刷盤
- - 兩次寫組織結構
- - 批量刷盤兩次寫實現原理
兩次寫的作用
發散思維
總結
11 InnoDB日誌管理機製
InnoDB Buffer Pool
REDO LOG日誌文件管理的用途
MTR InnoDB物理事務
日誌的意義
日誌記錄格式
日誌刷盤時機
REDO日誌恢復
數據庫迴滾
- - 數據庫UNDO段管理
- - 數據庫UNDO日誌記錄格式
- - 迴滾時刻
總結
12 MySQL 5.7中嶄新的MySQL sys Schema
Performance Schema的改進
sys Schema介紹
- - sys Schema視圖摘要
- - sys Schema重點視圖與應用場景
- - 使用風險
總結
13 方便的MySQL GTID
GTID 相關概念
- - 什麼是GTID
- - GTID集閤
- - GTID生命周期
GTID的維護
- - gtid_executed錶
- - gtid_executed錶壓縮
GTID搭建主從
- - 搭建主從時,需要注意的MySQL參數
- - 開啓GTID
- - 搭建主從
使用GTID案例總結
- - 如何跳過一個GTID
- - 利用GTID模式快速改變主從復製關係
- - 在綫將傳統模式復製改為GTID模式復製
- - 在綫將GTID模式復製改為傳統模式復製
GTID的限製
14 MySQL半同步復製
半同步特性
半同步主庫端
半同步從庫端
半同步實現
插件安裝
半同步自動開關
15 MySQL 5.7多綫程復製原理
背景
行之有效的延遲優化方法
MySQL 5.6的多綫程復製
MySQL 5.7的多綫程復製
- - ordered commit
- - 多綫程復製分發原理
- - 異常故障恢復
16 大量MySQL錶導緻服務變慢的問題
背景
問題分析
案例解決
總結
17 MySQL快速刪除大錶
背景
問題分析
案例解決
發散思維
總結
18 兩條不同的插入語句導緻的死鎖
背景
問題分析
發散思維
總結
19 MySQL在並發刪除同一行數據時導緻死鎖的分析
背景
問題分析
發散思維
總結
20 參數SQL_SLAVE_SKIP_COUNTER的奧秘
21 Binlog中的時間戳
背景
問題分析
發散思維
事務中的事件順序
問題延伸
show processlist中的Time
總結
22 InnoDB中Rowid對Binlog的影響
背景
問題分析
總結
23 MySQL備份:Percona XtraBackup的原理與實踐
備份背景及類型
認識Percona XtraBackup
XtraBackup的工作流程
XtraBackup的備份原理
XtraBackup 需要的權限
innobackupex常用的備份選項說明
XtraBackup備份實踐
- - 全量備份
- - 增量備份
- - 並行備份
- - 其他備份
案例實踐與心得
建議與提醒
24 MySQL分庫分錶
分庫分錶的種類
分庫分錶的原則
分庫分錶實現
- - 數據庫層的實現
- - 業務層的實現
25 MySQL數據安全
單機安全
集群安全
備份安全
MySQL實例安全保證
- - Double Write
- - REDO LOG
MySQL集群安全保證
- - 傳統的主從模式如何保證數據庫安全
- - Semi_Sync Replication方式的復製
- - MySQL集群化如何保證數據庫安全
總結
26 MySQL 性能拾遺
適當的數據文件大小
- - 碎片空洞問題
- - 設計問題
閤理設計錶結構
- - 冗餘存儲
- - 拆分存儲
- - 重復存儲
- - 特彆提醒
正確使用索引
MySQL係統參數
內存和CPU
磁盤的革命
雲中漫步
總結
27 MySQL Group Replication
Group Replication概述
- - 組的概念
- - 多主復製
- - 單獨的通信機製
Group Replication服務模式
- - 單主模式
- - 多主模式
- - 服務模式的配置
Binlog Event的多綫程執行
- - group_replication_applier通道
- - 基於主鍵的並行執行
搭建Group Replication復製環境
- - MySQL的參數設置
- - Group Replication插件的使用
- - Group Replication插件的基本參數設置
- - Group Replication的數據庫用戶
- - Group Replication組初始化
- - 新成員加入組
Group Replication的高可用性
- - 組內成員數量的變化
- - 強製移除故障成員
Group Replication的監控
Group Replication的基本原理
- - 狀態機復製
- - 分布式的狀態機復製
- - 分布式的高可用數據庫
深入理解Group Replication中事務的執行過程
- - 本地事務控製模塊
- - 成員間的通信模塊
- - 全局事務認證模塊
- - 異地事務執行模塊
- - 事務流程的總結
深入理解成員加入組的過程
- - 組視圖
- - 加入組時視圖的切換
- - View_change_log_event
- - 恢復
28 MySQL Document Store麵麵觀
新的JSON數據類型和JSON函數
- - JSON數據類型
- - JSON函數詳解
- - JSON函數的運用
MySQL X Plugin 和 X Protocol
- - 支持NoSQL所做的努力
- - 安裝MySQL X Plugin
MySQL Shell
- - 安裝MySQL Shell
- - 運行MySQL Shell
- - 在MySQL Shell中操作JSON文檔
- - 用腳本執行MySQL Shell
X DevAPI
總結
參考資料
第二部分 Galera篇
29 Galera Cluster的設計與實現
Galera Cluster的優點
Galera的引入
Galera接口
總結
30 Galera 參數解析
狀態參數
變量參數
31 Galera的驗證方法
Binlog與Galera的關係
驗證方法
32 Galera的消息傳送
33 GCache實現原理
配置參數
實現原理
發散思維
34 大話SST/IST細節
初始化節點環境
連接到集群並且做SST/IST
如何提供增量數據
總結
35 Donor/Desynced詳解
實現方式
意義何在
問答環節
36 Galera的並發控製機製
數據復製
寫集驗證
寫集APPLY
事務Commit
37 Galera的流量控製
流量控製的定義
流量控製的實現原理及影響
兩個問題
38 Galera Cluster影響單節點執行效率的因素
單點驗證
並發控製
等待GTID
總結
39 grastate.dat文件揭秘
引子
分析研究
總結
40 Galera Cluster從庫的轉移
沒有開啓Server級GTID的情況
開啓瞭GTID(server級)的情況
總結
41 Galera Cluster節點與其從庫的隨意轉換
背景
從節點嚮PXC節點的轉換
PXC節點嚮異步從節點的轉換
42 業務更新慢,不是由Galera引起的
43 在綫改錶引發的Galera Cluster集群死鎖
背景
用Binlog來代替觸發器
錶名交換
Galera Cluster中的問題
一個有趣的實驗
解決方案
總結
第三部分 Inception篇
44 Inception誕生記
關於SQL審核
- - 半自動化方法
人肉法
不滿現狀的追求
何謂Inception
45 Inception安裝與使用
下載和編譯
啓動配置
綫上配置需求
需要額外注意的點
使用方法
舉例說明
環境變量的設置
46 支持選項
選項說明
DDL與DML語句分離
小技巧
47 Inception的備份迴滾
備份存儲架構
備份所需條件
48 審核規範
支持的語句類型
公共檢查項
插入語句檢查項
更新、刪除語句檢查項
錶屬性檢查項
列屬性檢查項
索引屬性檢查項
修改錶語句檢查項
總結
49 參數變量
語法和變量
注意事項
50 友好的結果集
結果集結構
總結
51 命令集語句
遠程信息獲取
顯示本地全部變量
顯示本地某個變量
設置本地變量
顯示OSC執行進度
查看當前processlist
52 Inception的彩蛋
對OSC的支持
- - 可選的OSC參數
- - 查看OSC的執行進度
- - 中止OSC的執行
- - 查看所有OSC執行信息
Inception對SQL執行情況的統計
打印語法樹
53 Inception設計
Inception之源
Inception執行流程
· · · · · · (
收起)