MySQL DBA 精英實(shí)戰(zhàn)課(全彩)
定 價(jià):109 元
- 作者:劉遵慶 等
- 出版時(shí)間:2022/6/1
- ISBN:9787121436055
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.138
- 頁碼:336
- 紙張:
- 版次:01
- 開本:16開
本書既包括 MySQL 比較重要的基礎(chǔ)內(nèi)容,如安裝、索引、鎖、事務(wù)、體系結(jié)構(gòu)、主從復(fù)制(包括 GTID 復(fù)制、半同步復(fù)制、并行復(fù)制等)等,也包括 MySQL 的優(yōu)化(從硬件、操作系統(tǒng),參數(shù)、SQL 語句等方面的優(yōu)化)、規(guī)范、安全、備份、監(jiān)控、高可用(MHA、Orchestrator 和 MGR)、分庫分表、周邊工具等實(shí)戰(zhàn)內(nèi)容。另外,本書增加了一些比較新的內(nèi)容,如 MySQL 8.0 的新特性、云時(shí)代 DBA 工作的變化等。本書可作為 MySQL 初學(xué)者、DBA、開發(fā)工程師、運(yùn)維工程師、架構(gòu)師等的參考資料。
劉遵慶:擁有多年DBA工作經(jīng)驗(yàn),是公眾號“MySQL數(shù)據(jù)庫聯(lián)盟”運(yùn)營人、專欄《一線數(shù)據(jù)庫工程師帶你深入理解 MySQL》作者。凡新雷:擁有多年一線互聯(lián)網(wǎng)公司MySQL數(shù)據(jù)庫運(yùn)維管理經(jīng)驗(yàn),擅長MySQL數(shù)據(jù)庫調(diào)優(yōu)和架構(gòu)設(shè)計(jì)。鄒勇:擁有多年一線數(shù)據(jù)庫運(yùn)維經(jīng)驗(yàn),曾參與多家公司的數(shù)據(jù)庫高可用體系建設(shè),擅長MySQL、Redis等數(shù)據(jù)庫運(yùn)維工作。
目 錄
第 1 章 MySQL 的基礎(chǔ)知識 /1
1.1 數(shù)據(jù)庫的安裝全過程 /1
1.1.1 平臺的選擇 /1
1.1.2 安裝包的選擇 /2
1.1.3 系統(tǒng)環(huán)境的配置 /3
1.1.4 數(shù)據(jù)庫的安裝 /3
1.2 數(shù)據(jù)庫的簡單使用 /7
1.2.1 連接 /7
1.2.2 數(shù)據(jù)庫的創(chuàng)建和使用 /8
1.2.3 增、刪、改、查 /8
1.3 總結(jié) /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 聯(lián)合索引 /18
2.3 MySQL 中的索引優(yōu)化 /21
2.3.1 ICP /21
2.3.2 MRR /23
2.4 關(guān)于索引的建議 /24
2.5 總結(jié) /24
第 3 章 MySQL 的鎖 /25
3.1 共享鎖和排他鎖 /25
3.2 意向鎖 /25
3.3 記錄鎖、間隙鎖、插入意向鎖和臨鍵鎖 /27
3.4 MDL /29
3.5 死鎖 /31
3.6 總結(jié) /34
第 4 章 MySQL 的事務(wù) /35
4.1 事務(wù)的特性 /35
4.2 事務(wù)的實(shí)現(xiàn) /35
4.2.1 原子性的實(shí)現(xiàn) /36
4.2.2 一致性的實(shí)現(xiàn) /36
4.2.3 隔離性的實(shí)現(xiàn) /36
4.3 MVCC 實(shí)現(xiàn) /37
4.3.1 什么是 MVCC /38
4.3.2 實(shí)現(xiàn)的原理 /38
4.4 普通讀和當(dāng)前讀 /40
4.4.1 普通讀 /40
4.4.2 當(dāng)前讀 /41
4.4.3 小結(jié) /42
4.5 總結(jié) /42
第 5 章 MySQL 的體系結(jié)構(gòu) /43
5.1 MySQL 的結(jié)構(gòu) /43
5.2 存儲引擎 /44
5.3 InnoDB 的體系結(jié)構(gòu) /46
5.3.1 內(nèi)存結(jié)構(gòu) /46
5.3.2 磁盤結(jié)構(gòu) /48
5.4 總結(jié) /53
第 6 章 MySQL 常用的日志文件 /54
6.1 Binlog /54
6.1.1 Binlog 基礎(chǔ) /54
6.1.2 開啟和關(guān)閉 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 相關(guān)的參數(shù) /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 的特殊設(shè)置 /64
6.3.3 Slow Log 的內(nèi)容解析 /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 的數(shù)量及大小修改 /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 回滾時(shí)刻 /77
6.6.6 Undo Log 的相關(guān)配置 /77
6.7 總結(jié) /77
6.7.1 Binlog 和 Redo Log 的區(qū)別 /78
6.7.2 Undo Log 和 RedoLog 的區(qū)別 /78
第 7 章 MySQL 的優(yōu)化 /79
7.1 硬件優(yōu)化 /79
7.1.1 硬件的選擇 /79
7.1.2 RAID 的選擇 /80
7.2 操作系統(tǒng)的優(yōu)化 /82
7.2.1 文件系統(tǒng)的選擇 /82
7.2.2 系統(tǒng)參數(shù)的選擇 /82
7.2.3 MySQL 多實(shí)例資源隔離優(yōu)化 /83
7.3 參數(shù)調(diào)優(yōu) /87
7.3.1 參數(shù)的加載順序 /87
7.3.2 常用參數(shù)的調(diào)優(yōu) /88
7.4 慢查詢分析 /97
7.4.1 Explain /98
7.4.2 Performance Schema分析 /105
7.4.3 Trace 追蹤器 /107
7.5 SQL 語句優(yōu)化 /113
7.5.1 分頁查詢優(yōu)化 /113
7.5.2 not in 優(yōu)化 /116
7.5.3 order by 優(yōu)化 /119
7.5.4 group by 優(yōu)化 /122
7.5.5 索引 hint 優(yōu)化 /123
7.6 總結(jié) /124
第 8 章 MySQL 的規(guī)范 /125
8.1 建表的規(guī)范 /125
8.2 部署和操作的規(guī)范 /128
8.3 SQL 的規(guī)范 /129
8.4 總結(jié) /131
第 9 章 MySQL 的主從復(fù)制 /132
9.1 主從復(fù)制的搭建 /133
9.2 GTID 復(fù)制 /135
9.2.1 GTID 主從復(fù)制的配置 /136
9.2.2 GTID 的相關(guān)知識 /138
9.2.3 GTID 的自動定位 /140
9.2.4 使用 GTID 復(fù)制模式的限制 /141
9.3 MySQL 復(fù)制報(bào)錯的處理 /141
9.3.1 主從復(fù)制 crash-safe /141
9.3.2 跳過 GTID 模式下的復(fù)制中斷錯誤 /142
9.4 MySQL 半同步復(fù)制 /145
9.4.1 MySQL 半同步復(fù)制的注意事項(xiàng) /146
9.4.2 MySQL 半同步復(fù)制中的無損復(fù)制 /146
9.4.3 無損復(fù)制的配置和參數(shù) /147
9.4.4 無損復(fù)制的改進(jìn) /150
9.5 MySQL 并行復(fù)制 /151
9.5.1 MySQL 并行復(fù)制的原理和演進(jìn) /151
9.5.2 MySQL 并行復(fù)制的配置 /152
9.6 總結(jié) /153
第 10 章 MySQL 的安全 /154
10.1 安全指南 /154
10.2 訪問控制 /154
10.3 預(yù)留賬戶 /155
10.4 角色管理 /156
10.5 密碼管理 /157
10.5.1 密碼過期 /158
10.5.2 密碼重用 /159
10.5.3 密碼驗(yàn)證 /160
10.5.4 雙密碼支持 /161
10.5.5 隨機(jī)密碼 /161
10.5.6 密碼試錯 /162
10.6 賬戶資源限制 /162
10.7 加密連接 /163
10.8 審計(jì) /164
10.9 總結(jié) /166
第 11 章 MySQL 的備份 /167
11.1 物理備份和邏輯備份 /167
11.2 mysqldump /167
11.2.1 備份用戶的權(quán)限 /168
11.2.2 備份舉例及參數(shù)解釋 /168
11.2.3 數(shù)據(jù)恢復(fù) /178
11.3 mydumper /178
11.3.1 mydumper 的安裝 /179
11.3.2 使用 mydumper備份數(shù)據(jù) /179
11.3.3 使用 myloader 進(jìn)行數(shù)據(jù)恢復(fù) /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 總結(jié) /187
第 12 章 MySQL 的監(jiān)控 /188
12.1 常見的監(jiān)控項(xiàng) /188
12.1.1 系統(tǒng)相關(guān) /188
12.1.2 狀態(tài)相關(guān) /188
12.1.3 鎖相關(guān) /190
12.1.4 連接相關(guān) /191
12.1.5 復(fù)制相關(guān) /192
12.1.6 參數(shù)相關(guān) /193
12.1.7 業(yè)務(wù)相關(guān) /193
12.2 使用 Zabbix 監(jiān)控 MySQL /194
12.2.1 架構(gòu)圖 /194
12.2.2 實(shí)驗(yàn)環(huán)境 /195
12.2.3 安裝 Zabbix Server /195
12.2.4 配置 Zabbix 數(shù)據(jù)庫 /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 上創(chuàng)建Zabbix 監(jiān)控用戶 /202
12.2.11 修改配置文件 /202
12.2.12 測試監(jiān)控 /202
12.2.13 導(dǎo)入 Percona 模板 /203
12.2.14 Zabbix Web 增加主機(jī)配置 /205
12.2.15 查看監(jiān)控?cái)?shù)據(jù) /207
12.3 使用 Prometheus 監(jiān)控MySQL /208
12.3.1 架構(gòu)圖 /208
12.3.2 實(shí)驗(yàn)環(huán)境 /209
12.3.3 部署 Prometheus /209
12.3.4 部署 node_exporter組件 /210
12.3.5 部署 mysqld_exporter組件 /211
12.3.6 配置 Prometheus獲取監(jiān)控?cái)?shù)據(jù) /212
12.3.7 部署 Grafana /215
12.3.8 為 Grafana 配置Prometheus 數(shù)據(jù)源 /216
12.3.9 使用 Grafana 展示Linux 的監(jiān)控?cái)?shù)據(jù) /218
12.3.10 使用 Grafana 展示MySQL 的監(jiān)控?cái)?shù)據(jù) /220
12.4 使用 PMM 監(jiān)控 MySQL /222
12.4.1 架構(gòu)圖 /222
12.4.2 實(shí)驗(yàn)環(huán)境 /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 監(jiān)控 /225
12.4.8 打開監(jiān)控頁面 /226
12.5 總結(jié) /227
第 13 章 MySQL 的高可用 /228
13.1 MHA /228
13.1.1 架構(gòu)體系 /229
13.1.2 MHA 工具包 /229
13.1.3 部署和配置 MHA /230
13.1.4 原理 /233
13.1.5 小結(jié) /234
13.2 Orchestrator /236
13.2.1 主要功能 /236
13.2.2 優(yōu)勢 /236
13.2.3 高可用 /236
13.2.4 執(zhí)行計(jì)劃 /238
13.2.5 集群重塑 /239
13.2.6 部署和配置Orchestrator /240
13.2.7 參數(shù)配置 /242
13.2.8 Hook 介紹 /243
13.2.9 集群的使用 /245
13.2.10 小結(jié) /247
13.3 InnoDB Cluster /250
13.3.1 MGR 初探 /251
13.3.2 MGR 與傳統(tǒng)復(fù)制的區(qū)別 /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 總結(jié) /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 事務(wù)支持問題 /273
14.5.2 跨庫查詢問題 /273
14.5.3 中間件高可用問題 /273
14.6 總結(jié) /274
第 15 章 MySQL 的周邊工具 /275
15.1 Redis /275
15.1.1 MySQL 與 Redis 配合完成秒殺場景 /275
15.1.2 如何保證 Redis 和MySQL 數(shù)據(jù)一致 /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 總結(jié) /287
第 16 章 MySQL 8.0 的新特性 /288
16.1 事務(wù)性數(shù)據(jù)字典 /288
16.1.1 MySQL 8.0 之前版本的數(shù)據(jù)字典 /288
16.1.2 MySQL 8.0 之前版本的數(shù)據(jù)字典存在的問題 /289
16.1.3 MySQL 8.0 的數(shù)據(jù)字典 /290
16.1.4 序列化字典信息 /292
16.1.5 MySQL 8.0 的數(shù)據(jù)字典的優(yōu)勢 /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 的調(diào)試 /298
16.4 資源組 /299
16.4.1 資源組系統(tǒng)和權(quán)限準(zhǔn)備 /299
16.4.2 查看資源組信息 /300
16.4.3 使用資源組 /301
16.5 不可見索引 /302
16.6 窗口函數(shù) /304
16.6.1 窗口函數(shù)的特性 /304
16.6.2 窗口函數(shù)的使用 /304
16.7 持久化全局變量 /309
16.8 其他新特性 /310
16.9 總結(jié) /311
第 17 章 云時(shí)代 DBA 工作的變化 /312
17.1 3 種類型的云 /312
17.2 云應(yīng)用的分類 /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 云原生數(shù)據(jù)庫 /314
17.5 上公有云的好處 /314
17.6 上公有云的缺點(diǎn) /315
17.7 數(shù)據(jù)庫上公有云前的注意事項(xiàng) /315
17.8 傳統(tǒng) DBA 的工作 /316
17.9 上云后 DBA 工作的變化 /316
17.9.1 關(guān)注點(diǎn) /317
17.9.2 監(jiān)控 /317
17.9.3 備份 /318
17.9.4 遷移 /319
17.9.5 云數(shù)據(jù)庫的使用規(guī)范 /322
17.9.6 云產(chǎn)品文檔 /323
17.9.7 命令行工具 /323
17.9.8 API/SDK 工具 /324
17.9.9 成本控制 /324
17.10 云時(shí)代 DBA 的發(fā)展方向 /325
17.11 總結(jié) /325