《mysql管理之道:性能調優、高可用與監控》是2016年機械工業出版社出版的圖書,作者是賀春暘。
基本介紹
- 中文名:mysql管理之道:性能調優、高可用與監控
- 作者:賀春暘
- 出版時間:2016年9月1日
- ISBN:9787111547792
- 定價:69.50 元
- 總章節數:11
內容簡介,圖書目錄,
內容簡介
本書首先介紹了MySQL5.7和MariaDB10.1版本的新特性,然後以構建高性能MySQL伺服器為核心,從故障診斷與最佳化、性能調優、備份與恢復、高可用集群架構搭建與管理、讀寫分離和分散式DB架構搭建與管理、性能和服務監控等方面多角度深入講解了如何去管理與維護MySQL伺服器。書中內容以實戰為導向,所有內容均來自於筆者多年實踐經驗的總結和新知識的拓展,同時也針對運維人員、DBA等相關工作者會遇到的有代表性的疑難問題給出了實用的情景模擬,並給出了解決方案。不論你目前有沒有遇到過此類問題,相信對你以後處理相關問題都會有所借鑑。本書適合所有希望構建和管理高性能、高可用性的MySQL資料庫系統的開發者和DBA閱讀。
圖書目錄
推薦序:飛躍的第2版
前 言
第1章 MariaDB架構與歷史 1
1.1 MariaDB的介紹 1
1.2 MariaDB和MySQL的兼容性 2
1.3 MariaDB 10.0新增的功能 3
1.3.1 更多的存儲引擎 4
1.3.2 速度的提升 5
1.3.3 擴展和新功能 5
1.4 如何將MySQL遷移至MariaDB 8
1.5 使用二進制包安裝MariaDB 10.1企業版 10
1.6 總結 12
第2章 MySQL 5.7與MariaDB 10.1的新特性 13
2.1 性能提升 14
2.2 安全性的提升 15
2.2.1 默認開啟SSL 15
2.2.2 不再明文顯示用戶密碼 20
2.2.3 sql_mode的改變 20
2.3 InnoDB存儲引擎的提升 22
2.3.1 更改索引名字時不會鎖表 22
2.3.2 線上DDL修改varchar欄位屬性時不鎖表 23
2.3.3 InnoDB/MyisAM存儲引擎支持中文全文索引 26
2.3.4 InnoDB Buffer Pool預熱改進 29
2.3.5 線上調整innodb_Buffer_Pool_Size不用重啟mysql進程 31
2.3.6 回收(收縮)undo log回滾日誌物理檔案空間 32
2.3.7 InnoDB提供通用表空間 33
2.3.8 創建InnoDB獨立表空間指定存放路徑 34
2.3.9 遷移單獨一張InnoDB表到遠程伺服器 35
2.3.10 修改InnoDB redo log事務日誌檔案大小更人性化 36
2.3.11 死鎖可以列印到錯誤日誌里 37
2.3.12 支持InnoDB唯讀事務 37
2.3.13 支持InnoDB表空間數據碎片整理 38
2.4 JSON格式的支持 39
2.4.1 支持用JSON格式存儲數據 39
2.4.2 動態列支持用JSON格式存儲數據 41
2.5 支持虛擬列(函式索引) 44
2.5.1 MySQL 5.7支持函式索引 44
2.5.2 MariaDB 10.0/10.1支持函式索引 45
2.6 功能提升 46
2.6.1 支持殺死慢的SQL語句 46
2.6.2 支持一張表有多個INSERT/DELETE/UPDATE觸發器 48
2.6.3 引入執行緒池(Thread Pool)技術 49
2.6.4 提供審計日誌功能 52
2.6.5 支持explain update 53
2.6.6 在MySQL 5.7 中按Ctrl+C組合鍵不會退出客戶端 54
2.6.7 可將錯誤日誌列印到系統日誌檔案中 54
2.6.8 支持創建角色 55
2.6.9 支持TokuDB存儲引擎 56
2.7 最佳化器改進 59
2.7.1 針對子查詢select採用半連線最佳化 59
2.7.2 最佳化派生子查詢 62
2.7.3 最佳化排序limit 65
2.7.4 最佳化IN條件表達式 66
2.7.5 最佳化union all 69
2.7.6 支持索引下推最佳化 70
2.7.7 支持Multi Range Read索引最佳化 72
2.7.8 支持Batched Key Access(BKA)索引最佳化 75
2.7.9 支持Hash Join索引最佳化 77
2.8 半同步複製改進 78
2.8.1 半同步複製簡介 78
2.8.2 半同步複製的安裝配置 79
2.8.3 參數說明 79
2.8.4 功能測試 80
2.8.5 性能測試 84
2.9 GTID複製改進 87
2.9.1 GTID複製概述 87
2.9.2 在MySQL 5.6的GTID模式下同步複製報錯不能跳過的解決方法 90
2.9.3 MySQL 5.7中GTID複製的改進 93
2.9.4 GTID複製的陷阱 95
2.9.5 MariaDB 10.1中GTID複製的改進 96
2.9.6 GTID的使用方式不同 97
2.10 MySQL 5.6/5.7從庫崩潰安全恢復 98
2.11 MariaDB 10.0/10.1從庫崩潰安全恢復 99
2.12 slave從庫多執行緒複製 99
2.13 slave支持多源複製 101
2.14 MySQL 5.7設定同步複製過濾不用重啟mysql服務進程 103
2.15 小結 104
第3章 故障診斷 105
3.1 影響MySQL性能的因素 105
3.2 系統性能評估標準 106
3.2.1 影響Linux伺服器性能的因素 106
3.2.2 系統性能評估指標 107
3.2.3 開源監控和評估工具介紹 109
3.3 故障與處理 112
3.3.1 連線數過多導致程式連線報錯的原因 112
3.3.2 記錄子查詢引起的宕機 117
3.3.3 診斷事務量突高的原因 120
3.3.4 謹慎設定binlog_format=MIXED 123
3.3.5 未設定swap分區導致記憶體耗盡,主機當機 127
3.3.6 MySQL故障切換之事件調度器注意事項 128
3.3.7 人工誤刪除InnoDB ibdata數據檔案,如何恢復 130
3.3.8 update忘加where條件誤操作恢復(模擬Oracle閃回功能) 132
3.3.9 delete忘加where條件誤操作恢復(模擬Oracle閃回功能) 141
第4章 同步複製報錯故障處理 145
4.1 最常見的3種故障 145
4.1.1 在master上刪除一條記錄時出現的故障 146
4.1.2 主鍵重複 147
4.1.3 在master上更新一條記錄,而slave上卻找不到 148
4.2 特殊情況:slave的中繼日誌relay-log損壞 149
4.3 人為失誤 151
4.4 避免在master上執行大事務 152
4.5 slave_exec_mode參數可自動處理同步複製錯誤 153
4.6 如何驗證主從數據一致 154
4.7 binlog_ignore_db引起的同步複製故障 156
4.8 MySQL5.5.19/20同步一個Bug 157
4.9 恢復slave從機上的某幾張表的簡要方法 159
4.10 如何乾淨地清除slave同步信息 160
第5章 性能調優 162
5.1 表設計 162
5.2 欄位類型的選取 166
5.2.1 數值類型 167
5.2.2 字元類型 172
5.2.3 時間類型 174
5.2.4 小技巧:快速修改表結構 181
5.2.5 pt-online-schema-change線上更改表結構 185
5.2.6 MySQL5.6線上DDL更改表測試 191
5.3 採用合適的鎖機制 194
5.3.1 表鎖的演示 194
5.3.2 行鎖的演示 197
5.3.3 InnoDB引擎與MyISAM引擎的性能對比 199
5.4 選擇合適的事務隔離級別 201
5.4.1 事務的概念 201
5.4.2 事務的實現 202
5.4.3 事務隔離級別介紹 204
5.5 SQL最佳化與合理利用索引 210
5.5.1 如何定位執行很慢的SQL語句 210
5.5.2 SQL最佳化案例分析 211
5.5.3 合理使用索引 221
5.6 my.cnf配置檔案調優 231
5.6.1 per_thread_buffers最佳化 231
5.6.2 global_buffers最佳化 233
5.6.3 Query Cache在不同環境下的使用 234
5.6.4 tuning-primer.sh性能調試工具的使用 238
5.6.5 72 GB記憶體的my.cnf配置檔案 241
5.6.6 謹慎使用分區表功能 244
5.7 MySQL5.6同步複製新特性詳解 246
第6章 備份與恢復 256
6.1 冷備份 257
6.2 邏輯備份 257
6.2.1 mysqldump增加了一個重要參數 258
6.2.2 取代mysqldump的新工具mydumper 259
6.2.3 邏輯備份全量、增量備份腳本 262
6.3 熱備份與恢復 263
第7章 高可用MHA架構集群管理 268
7.1 MHA架構簡介 268
7.1.1 master自動監控和故障轉移 270
7.1.2 手工處理master故障轉移 270
7.1.3 線上平滑切換 270
7.2 MHA配置安裝 270
7.3 MHA故障切換演示 277
7.3.1 場景一:master自動監控和故障轉移 277
7.3.2 場景二:master手工故障轉移 285
7.3.3 場景三:線上平滑切換 285
7.4 MHA高可用架構總結 290
第8章 MySQL架構演進:“一主多從、讀/寫分離” 293
8.1 實現讀/寫分離的兩種方式 293
8.2 主從同步延遲的判斷標準 297
8.3 HAProxy感知MySQL主從同步延遲 300
8.4 讀/寫分離MariaDB MaxScale架構搭建演示 307
8.4.1 配置環境及安裝介紹 307
8.4.2 基於connect方式的測試 311
8.4.3 基於statement方式(SQL解析)的測試 312
8.4.4 MaxScale延遲檢測 313
8.5 讀/寫分離OneProxy介紹及架構搭建演示 315
8.5.1 OneProxy簡介 316
8.5.2 OneProxy的功能及安裝介紹 316
8.5.3 OneProxy讀/寫分離接入限制 320
第9章 Codership Galera Cluster 集群架構搭建與管理 322
9.1 Codership Galera Cluster的特性和優缺點 323
9.2 Codership Galera Cluster的局限性 323
9.3 Codership Galera Cluster的工作原理 324
9.4 Codership Galera Cluster的配置 328
9.4.1 Codership Galera Cluster的配置環境及安裝 328
9.4.2 功能測試 332
9.5 HAProxy結合Galera Cluster實現無單點秒級故障切換 337
第10章 OneProxy分庫分表的搭建與管理 345
10.1 OneProxy 分庫分表的搭建 346
10.1.1 配置與安裝 346
10.1.2 前端PHP/Java程式接入事項 349
10.2 OneProxy分庫分表接入限制 349
10.3 OneProxy分庫分表基本測試 351
10.3.1 分庫分表的功能測試 351
10.3.2 分庫分表的二級分區測試 354
10.3.3 分庫分表的聚合測試 358
10.3.4 分庫分表的插入測試 359
10.3.5 分庫分表不支持跨庫join的測試 360
10.3.6 分庫分表不支持分散式事務的測試 361
10.3.7 分庫分表不支持存儲過程的測試 361
10.4 搭建OneProxy高可用故障切換HA 362
10.5 OneProxy 黑名單SQL防火牆搭建測試 363
第11章 Lepus慢日誌分析平台搭建與維護 367
11.1 Lepus基礎組件的安裝 367
11.2 安裝percona-toolkit工具 370