MySQL基礎普及《MySQL管理之道:性能調優、高可用與監控》

最近工作的內容涉及MySQL運維內容,陸陸續續讀了幾本相關的書,其中一本是《MySQL管理之道:性能調優、高可用與監控》。

內容涵蓋性能調優(包括sql優化等)、備份、高可用,以及讀寫分離等,對於普及MySQL基礎非常有用。記錄一下,以便於後面查閱。

附目錄:

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 In[0no0]DB存儲引擎的提升 22
2.3.1 更改索引[0名0]字時不[0會0]鎖表 22
2.3.2 在線DDL修改varchar字段屬性時不鎖表 23
2.3.3 In[0no0]DB/MyisAM存儲引擎支持中文全文索引 26
2.3.4 In[0no0]DB Buffer Pool預熱改進 29
2.3.5 在線調整in[0no0]db_Buffer_Pool_Size不用重啓mysql進程 31
2.3.6 回收(收縮)undo log回滾日誌物理文件空間 32
2.3.7 In[0no0]DB提供通用表空間 33
2.3.8 創建In[0no0]DB[0獨0]立表空間指定存放路徑 34
2.3.9 遷移單[0獨0]一張In[0no0]DB表到遠程服務器 35
2.3.10 修改In[0no0]DB redo log事務日誌文件[0大0]小更人性化 36
2.3.11 死鎖可以打印到錯誤日誌裏 37
2.3.12 支持In[0no0]DB只讀事務 37
2.3.13 支持In[0no0]DB表空間數據碎片整理 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組合鍵不[0會0]退出客戶端 54
2.6.7 可將錯誤日誌打印到系統日誌文件中 54
2.6.8 支持創建角色 55
2.6.9 支持TokuDB存儲引擎 56
2.7 [0優0]化器改進 59
2.7.1 針對子查詢select採用半連接[0優0]化 59
2.7.2 [0優0]化派生子查詢 62
2.7.3 [0優0]化排序limit 65
2.7.4 [0優0]化IN條件表達式 66
2.7.5 [0優0]化union [0all0] 69
2.7.6 支持索引下推[0優0]化 70
2.7.7 支持Multi Range Read索引[0優0]化 72
2.7.8 支持Batched Key Access(BKA)索引[0優0]化 75
2.7.9 支持Hash Join索引[0優0]化 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模式下同步複製報錯不能跳過的解決方[0法0] 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 系統性能[0評0]估標準 106
3.2.1 影響Linux服務器性能的因素 106
3.2.2 系統性能[0評0]估指標 107
3.2.3 開源監控和[0評0]估工具介紹 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 人工誤刪除In[0no0]DB 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上執行[0大0]事務 152
4.5 slave_exec_mode參數可自動處理同步複製錯誤 153
4.6 如何驗證主從數據一致 154
4.7 binlog_ig[0no0]re_db引起的同步複製故障 156
4.8 MySQL5.5.19/20同步一個Bug 157
4.9 恢復slave從機上的某幾張表的簡要方[0法0] 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[0優0]化案例分析 211
5.5.3 合理使用索引 221
5.6 my.cnf配置文件調[0優0] 231
5.6.1 per_thread_buffers[0優0]化 231
5.6.2 global_buffers[0優0]化 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感[0知0]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的特性和[0優0]缺點 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 黑[0名0]單SQL防火牆搭建測試 363

11章 Lepus慢日誌分析平臺搭建與維護 367

11.1 Lepus基礎組件的安裝 367
11.2 安裝percona-toolkit工具 370

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章