內容簡介
本書專注於MySQL官方團隊提供的解決方案,包括MySQL主從複製、MySQL ReplicaSet、組複製、InnoDB Cluster及InnoDB ClusterSet等相關內容。
圖書目錄
第1章 高可用介紹 1
1.1 高可用的概念 1
1.1.1 可靠性 3
1.1.2 恢復 4
1.1.3 冗餘 5
1.1.4 容錯 5
1.1.5 可伸縮性 6
1.2 MySQL高可用 7
1.2.1 MySQL高可用選項 7
1.2.2 MySQL高可用的實現 8
1.2.3 MySQL高可用帶來的挑戰 9
第2章 MySQL高可用的演進 10
2.1 主從複製 11
2.1.1 主從複製的優點 11
2.1.2 主從複製的缺點 12
2.1.3 主從複製的方法概述 12
2.1.4 主從複製的類型概述 13
2.1.5 主從複製適用的高可用要求 13
2.2 組複製 14
2.2.1 組複製實現的理論 14
2.2.2 組複製的優點 15
2.2.3 組複製的要求 16
2.2.4 組複製的缺點和限制 17
2.2.5 組複製滿足的高可用要求 17
2.3 InnoDB Cluster 18
2.3.1 InnoDB Cluster的構成 19
2.3.2 InnoDB Cluster的要求和限制 19
2.3.3 InnoDB Cluster滿足的高可用要求 20
2.4 InnoDB ReplicaSet 20
2.4.1 InnoDB ReplicaSet的構成 21
2.4.2 InnoDB ReplicaSet的使用限制 22
2.4.3 InnoDB ReplicaSet滿足的高可用要求 23
2.5 InnoDB ClusterSet 23
2.5.1 InnoDB ClusterSet的要求和限制 24
2.5.2 InnoDB ClusterSet滿足的高可用要求 25
2.6 NDB Cluster 25
2.6.1 NDB Cluster的架構 26
2.6.2 NDB Cluster的數據節點和高可用性 27
2.6.3 NDB Cluster適用的場景和要求 28
第3章 主從複製與InnoDB ReplicaSet 30
3.1 主從複製與InnoDB ReplicaSet入門 31
3.1.1 主從複製的原理 31
3.1.2 主從複製的類型 32
3.1.3 主從複製的套用場景 35
3.1.4 InnoDB ReplicaSet的基礎知識 37
3.2 主從複製功能的演示 38
3.2.1 配置主從複製的步驟 38
3.2.2 使用GTID進行複製 57
3.2.3 配置半同步複製 63
3.3 InnoDB ReplicaSet演示 67
3.3.1 直接配置InnoDB ReplicaSet 71
3.3.2 採用現有的複製配置InnoDB ReplicaSet 80
3.3.3 InnoDB ReplicaSet與MySQL Router 83
3.3.4 使用InnoDB ReplicaSet 88
第4章 組複製 92
4.1 什麼是組複製 92
4.1.1 概念和術語 93
4.1.2 組複製使用的技術 95
4.1.3 組複製的架構及功能 95
4.1.4 組複製的特徵及使用場景 98
4.2 組複製的模式 99
4.2.1 單主模式 99
4.2.2 多主模式 101
4.3 組複製的通信系統與成員管理 104
4.3.1 組複製的通信過程 104
4.3.2 組複製達成一致及認證的過程 105
4.3.3 事務的整體順序傳遞 107
4.3.4 組成員關係管理 108
4.4 組複製的監控與管理 109
4.4.1 故障檢測機制 109
4.4.2 組複製監控 111
4.4.3 改變組複製模式 119
4.5 組複製的事務一致性 124
4.5.1 組複製的一致性相關事件 124
4.5.2 一致性級別的影響 126
4.6 組複製的分散式恢復 130
4.6.1 組複製的分散式恢復過程 130
4.6.2 組複製的分散式恢複方法 131
4.7 組複製的搭建及操作演示 132
4.7.1 組複製的要求 132
4.7.2 本地搭建組複製 134
4.7.3 組複製的操作 143
4.7.4 組複製的安全性 156
4.7.5 組複製的升級 162
4.8 組複製的最佳化 169
4.8.1 組通信執行緒(GCT) 169
4.8.2 訊息壓縮 170
4.8.3 流量控制 171
4.8.4 訊息片段化 174
4.8.5 通信引擎快取管理 175
4.8.6 故障檢測和網路分區的回響 177
4.9 組複製的限制 183
4.9.1 組複製的功能性限制 183
4.9.2 組複製的事務大小限制 185
第5章 MySQL Shell 187
5.1 MySQL Shell概述 187
5.1.1 MySQL Shell的特性 188
5.1.2 MySQL 8.0的新特性 190
5.2 MySQL Shell的安裝方法 194
5.2.1 安裝MySQL Shell 194
5.2.2 在macOS上安裝MySQL Shell 196
5.2.3 在Linux上安裝MySQL Shell 199
5.3 如何使用MySQL Shell 199
5.3.1 MySQL Shell的命令與選項 200
5.3.2 MySQL Shell入門 204
5.3.3 使用MySQL Shell 210
5.4 在MySQL Shell中使用SQL對資料庫進行操作 229
5.4.1 關係型資料庫基礎 230
5.4.2 使用MySQL的語句和函式 233
5.4.3 使用Python管理資料庫 248
5.5 在MySQL Shell中使用NoSQL對文檔存儲進行操作 261
5.5.1 MySQL中的JSON文檔 264
5.5.2 路徑表達式 269
5.5.3 JSON函式 273
第6章 MySQL Router 283
6.1 MySQL Router概述 284
6.2 MySQL Router的安裝 285
6.2.1 Windows下的MySQL Installer 286
6.2.2 在其他作業系統下安裝MySQL Router 289
6.3 部署與配置 289
6.3.1 基本連線路由 290
6.3.2 路由器演示 291
6.3.3 配置路由器 294
6.4 路由器應用程式 301
6.4.1 啟動路由器 302
6.4.2 使用路由器日誌 302
第7章 InnoDB Cluster 304
7.1 InnoDB Cluster概述 304
7.2 ACID特性 305
7.3 組件 308
7.3.1 組複製 308
7.3.2 MySQL Shell 309
7.3.3 X DevAPI 310
7.3.4 AdminAPI 310
7.3.5 MySQL Router 311
7.4 安裝InnoDB Cluster 311
7.4.1 在Windows上安裝MySQL 313
7.4.2 利用Sandbox部署InnoDB Cluster 319
第8章 使用AdminAPI部署InnoDB Cluster 325
8.1 dba類 326
8.2 cluster類 329
8.3 InnoDB Cluster部署演示 330
8.3.1 部署全新的InnoDB Cluster 331
8.3.2 將組複製轉換為InnoDB Cluster 338
8.4 InnoDB Cluster與MySQL Router 343
8.4.1 配置MySQL Router 343
8.4.2 AdminAPI與MySQL Router 346
第9章 InnoDB Cluster管理與最佳化 348
9.1 集群的監視 348
9.2 集群的使用 360
9.2.1 檢查實例配置 361
9.2.2 添加和刪除實例 362
9.2.3 解散集群 363
9.2.4 改變集群拓撲 364
9.3 集群配置 366
9.3.1 集群的配置選項 366
9.3.2 配置選舉過程 367
9.3.3 配置故障轉移一致性 367
9.3.4 配置實例自動重新加入 368
9.3.5 配置並行複製套用 369
9.3.6 集群的安全性 371
9.4 集群的升級 372
9.4.1 MySQL Router滾動升級 373
9.4.2 更新InnoDB Cluster的元數據 373
9.5 集群的故障排除 374
9.5.1 將實例重新加入集群 374
9.5.2 從丟失仲裁中恢復集群 375
9.5.3 在成員宕機後重新啟動集群 376
9.5.4 重新掃描集群 377
9.6 使用集群的限制與技巧 378
9.6.1 使用集群的限制 378
9.6.2 使用集群的技巧 379
第10章 InnoDB ClusterSet 382
10.1 InnoDB ClusterSet概述 382
10.2 部署InnoDB ClusterSet 384
10.3 InnoDB ClusterSet的狀態與拓撲 394
10.3.1 InnoDB ClusterSet的狀態 394
10.3.2 InnoDB ClusterSet的拓撲 399
10.4 InnoDB ClusterSet與MySQL Router 401
10.4.1 ClusterSet使用路由器時的注意事項 401
10.4.2 ClusterSet使用路由器的配置步驟 401
10.5 InnoDB ClusterSet的主動切換與故障轉移 408
10.5.1 InnoDB ClusterSet執行主動切換的過程 408
10.5.2 InnoDB ClusterSet的故障轉移 415
10.6 InnoDB ClusterSet的要求與限制 423
10.6.1 InnoDB ClusterSet的要求 423
10.6.2 InnoDB ClusterSet的限制 424
第11章 MySQL的相關軟體與工具 425
11.1 MySQL產品的生命周期 425
11.2 MySQL的高級功能 427
11.2.1 企業版備份 427
11.2.2 企業版監控 432
11.2.3 MySQL TDE (Transparent Data Encryption) 437
11.3 MySQL Workbench 446
11.3.1 MySQL Workbench的下載 446
11.3.2 MySQL Workbench的功能及使用 447
11.4 MySQL的克隆外掛程式 451
11.4.1 安裝克隆外掛程式 452
11.4.2 克隆數據 453
11.4.3 複製使用克隆外掛程式 454
11.5 關於VirtualBox 457
後記 462
作者簡介
徐軼韜,甲骨文公司MySQL解決方案首席工程師。為中國金融、政府、航空運輸等行業的MySQL用戶提供相關產品的售前諮詢、企業級產品介紹、解決方案服務,以及推廣和普及MySQL資料庫在社區的使用。公眾號“MySQL解決方案工程師”的運營者和內容作者。“3306π”開源軟體社區活動出品人,“墨天輪”社區2020年度十大突出貢獻人物。