MySQL 運維內參:MySQL、Galera、Inception 核心原理與最佳實踐 MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实践

周彥偉, 王竹峰, 強昌金

  • 出版商: 電子工業
  • 出版日期: 2017-06-01
  • 定價: $714
  • 售價: 8.5$607
  • 語言: 簡體中文
  • 頁數: 613
  • 裝訂: 平裝
  • ISBN: 7121312352
  • ISBN-13: 9787121312359
  • 相關分類: MySQLSQL

無法訂購

買這商品的人也買了...

商品描述

MySQL能夠處理擁有數十億行的大型數據庫,隨著越來越多的公司和大型組織發現MySQL完全能夠滿足自己的數據庫處理需求,其用戶量一直還會持續高速增長。本書是一本介紹如何高效使用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執行流程