MySQL DBA 精英實戰課(全彩)

劉遵慶 等

  • 出版商: 電子工業
  • 出版日期: 2022-06-01
  • 售價: $654
  • 貴賓價: 9.5$621
  • 語言: 簡體中文
  • 頁數: 336
  • ISBN: 7121436051
  • ISBN-13: 9787121436055
  • 相關分類: MySQLSQL
  • 立即出貨

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

商品描述

本書既包括 MySQL 比較重要的基礎內容,如安裝、索引、鎖、事務、體系結構、主從復制(包括 GTID 復制、半同步復制、並行復制等)等,也包括 MySQL 的優化(從硬件、操作系統,參數、SQL 語句等方面的優化)、規範、安全、備份、監控、高可用(MHA、Orchestrator 和 MGR)、分庫分表、周邊工具等實戰內容。另外,本書增加了一些比較新的內容,如 MySQL 8.0 的新特性、雲時代 DBA 工作的變化等。本書可作為 MySQL 初學者、DBA、開發工程師、運維工程師、架構師等的參考資料。

目錄大綱

目錄

第1 章MySQL 的基礎知識/1

1.1 數據庫的安裝全過程/1

1.1.1 平台的選擇/1

1.1.2 安裝包的選擇/2

1.1.3 系統環境的配置/3

1.1.4 數據庫的安裝/3

1.2 數據庫的簡單使用/7

1.2.1 連接/7

1.2.2 數據庫的創建和使用/8

1.2.3 增、刪、改、查/8

1.3 總結/9

第2 章MySQL 的索引/10

2.1 索引算法/10

2.1.1 順序查找/10

2.1.2 二分查找/10

2.1.3 二叉查找樹/11

2.1.4 平衡二叉樹/12

2.1.5 B 樹/12

2.1.6 B+樹/13

2.1.7 B+樹索引/13

2.2 MySQL 中的索引類型/14

2.2.1 聚集索引/14

2.2.2 輔助索引/15

2.2.3 唯#一索引/17

2.2.4 聯合索引/18

2.3 MySQL 中的索引優化/21

2.3.1 ICP /21

2.3.2 MRR /23

2.4 關於索引的建議/24

2.5 總結/24

第3 章MySQL 的鎖/25

3.1 共享鎖和排他鎖/25

3.2 意向鎖/25

3.3 記錄鎖、間隙鎖、插入意向鎖和臨鍵鎖/27

3.4 MDL /29

3.5 死鎖/31

3.6 總結/34

第4 章MySQL 的事務/35

4.1 事務的特性/35

4.2 事務的實現/35

4.2.1 原子性的實現/36

4.2.2 一致性的實現/36

4.2.3 隔離性的實現/36

4.3 MVCC 實現/37

4.3.1 什麼是MVCC /38

4.3.2 實現的原理/38

4.4 普通讀和當前讀/40

4.4.1 普通讀/40

4.4.2 當前讀/41

4.4.3 小結/42

4.5 總結/42

第5 章MySQL 的體系結構/43

5.1 MySQL 的結構/43

5.2 存儲引擎/44

5.3 InnoDB 的體系結構/46

5.3.1 內存結構/46

5.3.2 磁盤結構/48

5.4 總結/53

第6 章MySQL 常用的日誌文件/54

6.1 Binlog /54

6.1.1 Binlog 基礎/54

6.1.2 開啟和關閉Binlog /55

6.1.3 Binlog 的作用/56

6.1.4 Binlog 記錄的格式/56

6.1.5 Binlog 的解析/57

6.1.6 MySQL 8.0 Binlog加密/59

6.1.7 Binlog 的清除/60

6.1.8 Binlog 的落盤/61

6.1.9 Binlog 相關的參數/62

6.2 General Log /62

6.2.1 General Log 的開啟/62

6.2.2 General Log 的用法/63

6.3 Slow Log /63

6.3.1 Slow Log 的開啟/64

6.3.2 Slow Log 的特殊設置/64

6.3.3 Slow Log 的內容解析/64

6.3.4 MySQL 8.0 慢查詢額外信息的輸出/66

6.4 Error Log /66

6.4.1 Error Log 的配置/67

6.4.2 Error Log 的切割/67

6.4.3 借助Error Log 定位的問題/67

6.5 Redo Log /68

6.5.1 Redo Log 初探/68

6.5.2 Redo Log 的落盤/69

6.5.3 Redo Log 的數量及大小修改/71

6.5.4 CheckPoint /72

6.5.5 LSN /72

6.5.6 MySQL 8.0 中的RedoLog 歸檔/73

6.5.7 MySQL 8.0 中的RedoLog 禁用/74

6.6 Undo Log /75

6.6.1 初識Undo Log /75

6.6.2 Undo Log 的Purge /76

6.6.3 兩種Undo Log /76

6.6.4 Undo Log 的記錄格式/76

6.6.5 回滾時刻/77

6.6.6 Undo Log 的相關配置/77

6.7 總結/77

6.7.1 Binlog 和Redo Log 的區別/78

6.7.2 Undo Log 和RedoLog 的區別/78

第7 章MySQL 的優化/79

7.1 硬件優化/79

7.1.1 硬件的選擇/79

7.1.2 RAID 的選擇/80

7.2 操作系統的優化/82

7.2.1 文件系統的選擇/82

7.2.2 系統參數的選擇/82

7.2.3 MySQL 多實例資源隔離優化/83

7.3 參數調優/87

7.3.1 參數的加載順序/87

7.3.2 常用參數的調優/88

7.4 慢查詢分析/97

7.4.1 Explain /98

7.4.2 Performance Schema分析/105

7.4.3 Trace 追踪器/107

7.5 SQL 語句優化/113

7.5.1 分頁查詢優化/113

7.5.2 not in 優化/116

7.5.3 order by 優化/119

7.5.4 group by 優化/122

7.5.5 索引hint 優化/123

7.6 總結/124

第8 章MySQL 的規範/125

8.1 建表的規範/125

8.2 部署和操作的規範/128

8.3 SQL 的規範/129

8.4 總結/131

第9 章MySQL 的主從復制/132

9.1 主從復制的搭建/133

9.2 GTID 複製/135

9.2.1 GTID 主從復制的配置/136

9.2.2 GTID 的相關知識/138

9.2.3 GTID 的自動定位/140

9.2.4 使用GTID 複製模式的限制/141

9.3 MySQL 複製報錯的處理/141

9.3.1 主從復制crash-safe /141

9.3.2 跳過GTID 模式下的複制中斷錯誤/142

9.4 MySQL 半同步複製/145

9.4.1 MySQL 半同步複製的注意事項/146

9.4.2 MySQL 半同步複製中的無損複製/146

9.4.3 無損複製的配置和參數/147

9.4.4 無損複製的改進/150

9.5 MySQL 並行複制/151

9.5.1 MySQL 並行複制的原理和演進/151

9.5.2 MySQL 並行複制的配置/152

9.6 總結/153

第10 章MySQL 的安全/154

10.1 安全指南/154

10.2 訪問控制/154

10.3 預留賬戶/155

10.4 角色管理/156

10.5 密碼管理/157

10.5.1 密碼過期/158

10.5.2 密碼重用/159

10.5.3 密碼驗證/160

10.5.4 雙密碼支持/161

10.5.5 隨機密碼/161

10.5.6 密碼試錯/162

10.6 賬戶資源限制/162

10.7 加密連接/163

10.8 審計/164

10.9 總結/166

第11 章MySQL 的備份/167

11.1 物理備份和邏輯備份/167

11.2 mysqldump /167

11.2.1 備份用戶的權限/168

11.2.2 備份舉例及參數解釋/168

11.2.3 數據恢復/178

11.3 mydumper /178

11.3.1 mydumper 的安裝/179

11.3.2 使用mydumper備份數據/179

11.3.3 使用myloader 進行數據恢復/180

11.4 XtraBackup /181

11.4.1 XtraBackup 的安裝/181

11.4.2 XtraBackup 的工作流程/181

11.4.3 XtraBackup 的用法舉例/182

11.5 Clone Plugin /185

11.5.1 Clone Plugin 的安裝/185

11.5.2 Clone Plugin 的用法舉例/185

11.6 總結/187

第12 章MySQL 的監控/188

12.1 常見的監控項/188

12.1.1 系統相關/188

12.1.2 狀態相關/188

12.1.3 鎖相關/190

12.1.4 連接相關/191

12.1.5 複製相關/192

12.1.6 參數相關/193

12.1.7 業務相關/193

12.2 使用Zabbix 監控MySQL /194

12.2.1 架構圖/194

12.2.2 實驗環境/195

12.2.3 安裝Zabbix Server /195

12.2.4 配置Zabbix 數據庫/195

12.2.5 編輯配置文件/196

12.2.6 啟動Zabbix Server /196

12.2.7 Zabbix Web 界面初始化/197

12.2.8 安裝Zabbix Agent /201

12.2.9 安裝Percona 插件/201

12.2.10 在Agent 上創建Zabbix 監控用戶/202

12.2.11 修改配置文件/202

12.2.12 測試監控/202

12.2.13 導入Percona 模板/203

12.2.14 Zabbix Web 增加主機配置/205

12.2.15 查看監控數據/207

12.3 使用Prometheus 監控MySQL /208

12.3.1 架構圖/208

12.3.2 實驗環境/209

12.3.3 部署Prometheus /209

12.3.4 部署node_exporter組件/210

12.3.5 部署mysqld_exporter組件/211

12.3.6 配置Prometheus獲取監控數據/212

12.3.7 部署Grafana /215

12.3.8 為Grafana 配置Prometheus 數據源/216

12.3.9 使用Grafana 展示Linux 的監控數據/218

12.3.10 使用Grafana 展示MySQL 的監控數據/220

12.4 使用PMM 監控MySQL /222

12.4.1 架構圖/222

12.4.2 實驗環境/222

12.4.3 安裝並啟動Docker /222

12.4.4 安裝PMM Server /223

12.4.5 安裝PMM Client /224

12.4.6 PMM Client 連接PMM Server /225

12.4.7 配置MySQL 監控/225

12.4.8 打開監控頁面/226

12.5 總結/227

第13 章MySQL 的高可用/228

13.1 MHA /228

13.1.1 架構體系/229

13.1.2 MHA 工具包/229

13.1.3 部署和配置MHA /230

13.1.4 原理/233

13.1.5 小結/234

13.2 Orchestrator /236

13.2.1 主要功能/236

13.2.2 優勢/236

13.2.3 高可用/236

13.2.4 執行計劃/238

13.2.5 集群重塑/239

13.2.6 部署和配置Orchestrator /240

13.2.7 參數配置/242

13.2.8 Hook 介紹/243

13.2.9 集群的使用/245

13.2.10 小結/247

13.3 InnoDB Cluster /250

13.3.1 MGR 初探/251

13.3.2 MGR 與傳統複製的區別/251

13.3.3 部署InnoDB Cluster /253

13.3.4 InnoDB Cluster 的常用操作/261

13.3.5 MGR 的原理/265

13.3.6 MGR 的一致性保證/267

13.4 總結/269

第14 章MySQL 的分庫分錶/270

14.1 分庫分錶的原則/270

14.2 分庫分錶的場景/270

14.3 拆分模式/271

14.3.1 垂直拆分/271

14.3.2 水平拆分/271

14.4 分庫分錶的工具/272

14.5 分庫分錶後面臨的問題/273

14.5.1 事務支持問題/273

14.5.2 跨庫查詢問題/273

14.5.3 中間件高可用問題/273

14.6 總結/274

第15 章MySQL 的周邊工具/275

15.1 Redis /275

15.1.1 MySQL 與Redis 配合完成秒殺場景/275

15.1.2 如何保證Redis 和MySQL 數據一致/276

15.2 ClickHouse 和ClickTail /277

15.3 Percona Toolkit /284

15.3.1 pt-osc /284

15.3.2 pt-query-digest /284

15.3.3 pt-kill /286

15.3.4 pt-table-checksum /287

15.3.5 pt-table-sync /287

15.4 總結/287

第16 章MySQL 8.0 的新特性/288

16.1 事務性數據字典/288

16.1.1 MySQL 8.0 之前版本的數據字典/288

16.1.2 MySQL 8.0 之前版本的數據字典存在的問題/289

16.1.3 MySQL 8.0 的數據字典/290

16.1.4 序列化字典信息/292

16.1.5 MySQL 8.0 的數據字典的優勢/293

16.2 快速加列/293

16.2.1 快速加列功能的使用和限制/293

16.2.2 快速加列的原理/294

16.2.3 快速加列的過程/295

16.3 原子DDL /295

16.3.1 原子DDL 的使用範圍和限制/295

16.3.2 原子DDL 的特性和操作/296

16.3.3 原子DDL 的原理/298

16.3.4 原子DDL 的調試/298

16.4 資源組/299

16.4.1 資源組系統和權限準備/299

16.4.2 查看資源組信息/300

16.4.3 使用資源組/301

16.5 不可見索引/302

16.6 窗口函數/304

16.6.1 窗口函數的特性/304

16.6.2 窗口函數的使用/304

16.7 持久化全局變量/309

16.8 其他新特性/310

16.9 總結/311

第17 章云時代DBA 工作的變化/312

17.1 3 種類型的雲/312

17.2 雲應用的分類/313

17.2.1 SaaS /313

17.2.2 IaaS /313

17.2.3 PaaS /313

17.2.4 DBaaS /314

17.3 RDS /314

17.4 雲原生數據庫/314

17.5 上公有云的好處/314

17.6 上公有云的缺點/315

17.7 數據庫上公有云前的注意事項/315

17.8 傳統DBA 的工作/316

17.9 上雲後DBA 工作的變化/316

17.9.1 關注點/317

17.9.2 監控/317

17.9.3 備份/318

17.9.4 遷移/319

17.9.5 雲數據庫的使用規範/322

17.9.6 雲產品文檔/323

17.9.7 命令行工具/323

17.9.8 API/SDK 工具/324

17.9.9 成本控制/324

17.10 雲時代DBA 的發展方向/325

17.11 總結/325