內容簡介
本書首先介紹瞭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
前言/序言
為什麼要寫這本書首先要感謝讀者對第1版的認可。隨著技術的更新,第1版的內容已逐漸變老,為瞭與時俱進,所以準備再寫一本關於MariaDB 10和MySQL 5.7的數據庫圖書,把自己學到的新知識做一個係統性總結來呈現給大傢。目前市麵上針對相關知識進行介紹的書還寥寥無幾,大多數讀者隻能通過閱讀英文手冊去獲取新的知識,希望本書的齣版能對大傢有所幫助。
本書以構建高性能MySQL服務器為核心內容,介紹瞭MariaDB 10和MySQL 5.7的新特性,並從故障診斷與優化、性能調優、備份與恢復、MySQL高可用集群搭建與管理、MySQL服務器性能和服務監控等角度深入講解瞭如何去管理與維護MySQL服務器。書中內容均來自於筆者多年實踐經驗的總結和新知識的拓展,同時也包含很多實用的情景模擬,並針對運維人員、DBA等相關工作者常遇到的有代錶性的疑難問題給齣瞭解決方案。不論你目前有沒有遇到過此類問題,相信都會有藉鑒意義。
如何閱讀本書本書的知識結構分四部分:
第一部分(第1章至第2章)介紹MySQL5.7/MariaDB 10的新特性、注意事項、安裝和升級方法。
第二部分(第3章至第6章)為故障診斷與優化,涉及生産環境下MySQL故障處理,以及性能調優等內容,包括錶設計階段範式的理解、字段類型的選取、采用錶鎖還是行鎖、MySQL默認的隔離級彆與傳統SQL Server,以及Oracle數據庫默認的隔離級彆的區彆、SQL語句的優化,以及閤理利用索引等。
第三部分(第7章至第10章)為架構篇,內容包括當前互聯網流行的高可用架構MHA(Master High Availability)、分庫分錶中間件Oneproxy和讀寫分離中間件MariaDB MaxScale,以及Percona/MariaDB Galera Cluster集群管理。
第四部分(第11章)闡述慢SQL管理平颱的搭建與維護,主要介紹集中收集慢日誌查詢。
本書的每個部分都可以單獨作為一本迷你書閱讀,如果你未接觸MySQL5.7/MariaDB 10,建議從第一部分開始閱讀。本書提供的腳本和相關軟件,請在華章網站的本書頁麵下載。
勘誤和支持由於作者的水平有限,編寫的時間也很倉促,書中難免會齣現一些錯誤或者不準確的地方,不妥之處懇請讀者批評指正。你可以將書中的錯誤,我很期待能夠聽到你們真摯的反饋。
緻謝在這裏感謝沃趣科技公司高級DBA邱文輝提供《MariaDB 10 Hash Join索引優化》一文。
感謝機械工業齣版社華章公司的編輯楊綉國老師,感謝你的魄力和遠見,在這一年多的時間中始終支持我的寫作,你的鼓勵和幫助引導我順利完成全部書稿。
賀春暘2016年5月於北京
MySQL管理之道:性能調優、高可用與監控(第2版) 下載 mobi epub pdf txt 電子書