MySQL DBA 精英實戰課(全彩)( 簡體 字) | |
作者:劉遵慶 等 | 類別:1. -> 資料庫 -> MySQL |
出版社:電子工業出版社 | 3dWoo書號: 55862 詢問書籍請說出此書號! 有庫存 NT售價: 545 元 |
出版日:6/1/2022 | |
頁數:336 | |
光碟數:0 | |
站長推薦: | |
印刷:全彩印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121436055 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第 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 本書既包括 MySQL 比較重要的基礎內容,如安裝、索引、鎖、事務、體系結構、主從復制(包括 GTID 復制、半同步復制、并行復制等)等,也包括 MySQL 的優化(從硬件、操作系統,參數、SQL 語句等方面的優化)、規范、安全、備份、監控、高可用(MHA、Orchestrator 和 MGR)、分庫分表、周邊工具等實戰內容。另外,本書增加了一些比較新的內容,如 MySQL 8.0 的新特性、云時代 DBA 工作的變化等。本書可作為 MySQL 初學者、DBA、開發工程師、運維工程師、架構師等的參考資料。
寫作背景
與其他數據庫相比,MySQL 具有很多優勢,如開源、支持多種語言、性能好、安全等。這也是這些年 MySQL 一直廣受歡迎的原因。 因為 MySQL 一直受到各大互聯網公司的青睞,所以這些公司的開發人員、運維人員、架構師、DBA 等都需要掌握 MySQL 知識。 在此背景下,作者總結了以往的實戰經驗和學習筆記,幫助廣大 MySQL 愛好者掌握 MySQL 的重要知識點,同時提升自身的業務能力。 本書特點 本書由 3 位具有 6 年以上工作經驗的 DBA 共同編寫,從入門到深入,分享了 3 位作者多年的實戰經驗。 本書包含 MySQL 基礎、優化和實戰管理等內容,不會出現大段的抽象理論,而是通過實戰來幫助讀者理解 MySQL 的知識點。 本書結構 第 1 章:主要講解 MySQL 的安裝和使用。 第 2 章:主要講解 MySQL 的索引,包括索引算法、MySQL 中的索引類型、MySQL中的索引優化、關于索引的建議等。 第 3 章:主要講解 MySQL 的鎖,包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖、插入意向鎖、臨鍵鎖、MDL 和死鎖等。 第 4 章:主要講解 MySQL 的事務,包括事務的特性、事務的實現、MVCC 實現、普通讀和當前讀等。 第 5 章:主要講解 MySQL 的體系結構,包括 MySQL 的結構、存儲引擎、內存結構和磁盤結構等。 第 6 章:主要講解 MySQL 常用的日志文件,包括 Binlog、General Log、Slow Log、Error Log、Redo Log 和 Undo Log 等。 第 7 章:主要講解 MySQL 的優化,包括硬件優化、操作系統的優化、參數調優、慢查詢分析和 SQL 語句優化等。 第 8 章:主要講解 MySQL 的規范,包括建表的規范、部署和操作的規范,以及 SQL的規范等。 第 9 章:主要講解 MySQL 的主從復制,包括主從復制的搭建、GTID 復制、MySQL復制報錯的處理、MySQL 半同步復制和 MySQL 并行復制等,并且都附帶實驗過程,方便讀者邊學習邊操作。 第 10 章:主要講解 MySQL 的安全,包括訪問控制、預留賬戶、密碼管理、加密連接和審計等。 第 11 章:主要講解 MySQL 的備份,包括 mysqldump、mydumper、XtraBackup 和Clone Plugin 等,并且都附帶實驗過程,根據實驗步驟,讀者基本能模擬常規的備份。 第 12 章:主要講解 MySQL 的監控,包括常見的監控項、使用 Zabbix 監控 MySQL、使用 Prometheus 監控 MySQL 和使用 PMM 監控 MySQL,每種監控方案都有詳細的部署過程,讀者可自行選擇一個方案并用于工作中。 第 13 章:主要講解 MySQL 的高可用,包括 MHA、Orchestrator、MGR 等,其中MHA 是比較傳統的高可用方案,Orchestrator 和 MGR 在未來幾年可能會得到廣泛應用,每個高可用方案都有詳細的部署過程和常用的一些操作。 第 14 章:主要講解 MySQL 的分庫分表,包括分庫分表的原則、分庫分表的場景、拆分模式、分庫分表的工具和分庫分表后面臨的問題,讀者可以參考這些內容,判斷自己的環境是否需要分庫分表,如果需要進行分庫分表,就需要確定選擇哪種工具、注意什么問題。 第 15 章:主要講解 MySQL 的周邊工具,如 Redis、ClickHouse 和 ClickTail,以及Percona Toolkit 等。 第 16 章:主要講解 MySQL 8.0 的新特性,包括事務性數據字典、快速加列、原子DDL、資源組、不可見索引、窗口函數、持久化全局變量和其他新特性等。 第 17 章:主要講解云時代 DBA 工作的變化,包括 3 種類型的云、云應用的分類、RDS、云原生數據庫、上公有云的好處和缺點、數據庫上公有云前的注意事項、傳統DBA 的工作和上云后 DBA 工作的變化、云時代 DBA 的發展方向等。 |