MySQL運維內參

MySQL運維內參

《MySQL運維內參》 一書全稱《MySQL運維內參:MySQL、Galera、Inception核心原理與最佳實踐》,作者周彥偉 王竹峰 強昌金,電子工業出版社2017年6月出版

內容提要

《MySQL運維內參:MySQL、Galera、Inception核心原理與最佳實踐》是一本介紹MySQL資料庫知識的專業書籍,從核心原理到最佳實踐,深入淺出、抽絲剝繭地進行講解,不僅從源碼和運維兩個角度介紹了MySQL大部分重要概念和運維要點,還講述了MySQL極為優秀的集群組件Galera的實現原理和運維經驗,同時,也介紹了作者獨立開發的MySQL審核系統Inception的設計、實現與功能。

《MySQL運維內參:MySQL、Galera、Inception核心原理與最佳實踐》也得到了MySQL官方研發團隊的大力支持,兩位資深專家分別介紹了MySQL最新的支持NoSQL的組件MySQL Document Store,以及集群化組件MySQL Group Replication的實現原理和運維要點。

《MySQL運維內參:MySQL、Galera、Inception核心原理與最佳實踐》不僅可以作為技術管理者和架構師在設計MySQL相關套用和系統時的參考,還適合MySQL套用開發者更深入地了解和使用MySQL。最後,作為MySQL DBA的必備參考,希望《MySQL運維內參:MySQL、Galera、Inception核心原理與最佳實踐》能在實際工作中對讀者有所幫助。

目錄

第一部分 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執行流程

相關詞條

熱門詞條

聯絡我們