MySQL 高可用實踐

MySQL 高可用實踐

作者: 王雪迎
出版社: 清華大學
出版在: 2020-07-01
ISBN-13: 9787302555544
ISBN-10: 7302555540





內容描述


MySQL數據庫是現代軟件系統基礎應用的核心組成部分,如何保持MySQL的高可用性在系統應用中就變得極為重要。本書從復制、中間件、集群、存儲、優化五個方面介紹MySQL高可用技術。 本書分為16章,內容包括異步復制、半同步復制、GTID與復制、復制拓撲與性能、延遲復制與部分復制、組復制、MySQL Router、MySQL Fabric、MMM、MHA、Keepalived + LVS、Heartbeat + HAProxy、InnoDB Cluster、Galera Cluster、DRBD、優化案例等。 本書適合DBA、系統管理運維、應用程序開發、架構師等MySQL相關技術人員作為參考書,也適合作為高等院校和培訓學校相關專業的技術培訓教材。


目錄大綱


目   錄
第1章  異步復制 1
1.1  MySQL異步復制簡介 1
1.1.1  復制的用途 1
1.1.2  復制如何工作 2
1.1.3  兩階段提交 6
1.2  搭建實驗環境 8
1.2.1  實驗環境說明 8
1.2.2  安裝MySQL 8
1.3  配置異步復制 12
1.3.1  空庫 12
1.3.2  離線 16
1.3.3  聯機 17
1.4  小結 20
第2章  半同步復制 21
2.1  MySQL半同步復制簡介 21
2.2  性能提升 22
2.2.1  ACK異步化 22
2.2.2  控制從庫反饋的數量 24
2.2.3  二進制日誌互斥鎖的改進 25
2.3  數據一致性 26
2.3.1  rpl_semi_sync_master_wait_point配置 26
2.3.2  sync_binlog配置 28
2.3.3  sync_relay_log配置 30
2.4  管理接口 32
2.5  配置半同步復制 32
2.5.1  安裝插件 32
2.5.2  啟用半同步復制 34
2.5.3  監控半同步復制 35
2.6  測試 37
2.6.1  正常提交事務 37
2.6.2  回滾事務 38
2.6.3  rpl_semi_sync_master_wait_no_slave與從庫數量 40
2.7  小結 44
第3章  GTID與復制 45
3.1  GTID簡介 45
3.1.1  什麽是GTID 45
3.1.2  GTID的格式與存儲 46
3.2  GTID生命周期 54
3.2.1  典型事務的GTID生命周期 54
3.2.2  GTID分配 57
3.2.3  gtid_next系統變量 58
3.2.4  gtid_purged系統變量 60
3.3  GTID自動定位 68
3.4  配置GTID復制 70
3.4.1  聯機配置GTID復制 70
3.4.2  聯機更改復制模式 74
3.4.3  GTID相關系統變量 75
3.5  GTID運維 76
3.5.1  跳過一個事務 76
3.5.2  mysqldump導出 77
3.5.3  主從切換 78
3.6  GTID限制 81
3.7  GTID集合運算函數 84
3.7.1  GTID內置函數 84
3.7.2  用戶自定義函數 84
3.7.3  使用示例 85
3.8  小結 88
第4章  復制拓撲結構與性能 89
4.1  復制拓撲結構 89
4.1.1  一主一(多)從 89
4.1.2  雙(多)主復制 91
4.1.3  多源復制 99
4.1.4  Blackhole引擎與日誌服務器 104
4.2  復制性能 108
4.2.1  測試規劃 108
4.2.2  sync_binlog與innodb_flush_log_at_trx_commit 111
4.2.3  組提交與多線程復制 111
4.2.4  基於WriteSet的多線程復制 117
4.3  小結 120
第5章  延遲復制與部分復制 121
5.1  延遲復制 121
5.1.1  延遲復制簡介 121
5.1.2  延遲復制時間戳 124
5.1.3  監控延遲復制 125
5.2  部分復制 125
5.2.1  部分復制簡介 126
5.2.2  評估庫級復制選項 126
5.2.3  評估表級復制選項 129
5.2.4  復制規則應用 134
5.2.5  部分復制示例 136
5.3  主從切換 139
5.3.1  計劃內主從切換 139
5.3.2  計劃外切換 140
5.4  小結 148
第6章  組復制 149
6.1  組復制基本原理 149
6.1.1  MySQL復制技術 149
6.1.2  組復制使用場景 151
6.1.3  組復制相關服務 151
6.1.4  組復制插件體系結構 152
6.1.5  組復制分佈式恢復 153
6.2  組復制安裝部署 156
6.2.1  部署單主模式組復制 157
6.2.2  組復制監控 165
6.2.3  容錯示例 165
6.3  組復制性能 172
6.3.1  概述 172
6.3.2  測試規劃 174
6.3.3  消息壓縮 177
6.3.4  組通信線程循環 178
6.3.5  寫入集 178
6.3.6  流控 179
6.3.7  其他配置 181
6.3.8  主從、半同步、組復制性能對比測試 183
6.4  組復制要求與限制 185
6.4.1  組復制要求 185
6.4.2  組復制限制 187
6.5  小結 188
第7章  MySQL Router 189
7.1  MySQL Router簡介 189
7.1.1  透明路由 189
7.1.2  元數據緩存 190
7.1.3  簡單重定向 190
7.1.4  部署與使用 191
7.1.5  MySQL Router 8.0的新特性 192
7.2  Router實現MySQL高可用示例 192
7.2.1  安裝和配置 192
7.2.2  自動故障轉移 199
7.2.3  負載均衡 202
7.2.4  讀寫分離 202
7.2.5  多實例 202
7.3  Router 8安裝和配置 205
7.3.1  安裝 205
7.3.2  啟動 206
7.3.3  配置 210
7.4  小結 214
第8章  MySQL Fabric 215
8.1  MySQL Fabric簡介 215
8.1.1  MySQL Fabric的用途 215
8.1.2  MySQL Fabric架構 216
8.2  高可用性 218
8.2.1  概述 218
8.2.2  安裝與配置 218
8.2.3  HA功能測試 226
8.3  數據分片 232
8.4  MySQL Fabric限制 233
8.5  小結 234
第9章  MMM 235
9.1  MMM簡介 235
9.1.1  基本功能 235
9.1.2  工作原理 236
9.1.3  典型用例 237
9.1.4  切換流程 238
9.1.5  系統需求 238
9.2  實現MySQL主主復制的高可用 240
9.2.1  基本環境 240
9.2.2  安裝和配置 241
9.2.3  功能測試 244
9.3  小結 248
第10章  MHA 249
10.1  MHA簡介 249
10.1.1  基本功能 249
10.1.2  切換流程 250
10.1.3  部署架構 250
10.1.4  主要特點 251
10.1.5  工具介紹 252
10.2  安裝和配置 252
10.2.1  配置主從復制 253
10.2.2  安裝Perl依賴模塊 253
10.2.3  配置SSH免密登錄 254
10.2.4  安裝MHA Node 254
10.2.5  安裝MHA Manager 255
10.2.6  配置MHA 255
10.2.7  創建相關腳本 257
10.2.8  檢查MHA配置 265
10.3  功能測試 267
10.3.1  初始綁定VIP 267
10.3.2  測試自動切換 267
10.3.3  測試手工切換 271
10.3.4  測試在線主從切換 273
10.3.5  修復宕機的主庫 276
10.4  小結 276
第11章  Keepalived + LVS 277
11.1  Keepalived簡介 277
11.1.1  VRRP協議 277
11.1.2  Keepalived架構設計 278
11.2  LVS簡介 280
11.3  實現MySQL主從復制中的讀寫分離及高可用 281
11.3.1  架構設計 282
11.3.2  安裝和配置 283
11.3.3  功能測試 292
11.4  實現MySQL雙主復制的讀寫負載均衡及高可用 295
11.4.1  架構設計 295
11.4.2  安裝和配置 296
11.4.3  功能測試 301
11.5  小結 304
第12章  Heartbeat + HAProxy 305
12.1  Heartbeat簡介 305
12.1.1  Heartbeat組成模塊 305
12.1.2  Heartbeat工作原理 307
12.2  HAProxy簡介 308
12.3  實現MySQL主從復制的讀寫分離及高可用 309
12.3.1  架構設計 310
12.3.2  安裝和配置 310
12.3.3  功能測試 320
12.4  實現MySQL雙主復制的讀寫負載均衡及高可用 323
12.4.1  架構設計 323
12.4.2  安裝和配置 324
12.4.3  功能測試 326
12.5  小結 329
第13章  InnoDB Cluster 330
13.1  InnoDB Cluster簡介 330
13.1.1  整體架構 330
13.1.2  MySQL Shell 331
13.1.3  MySQL Router 333
13.1.4  MySQL服務器集群 333
13.2  創建InnoDB Cluster 334
13.2.1  檢查實例配置 335
13.2.2  配置實例 337
13.2.3  創建集群 339
13.2.4  向集群添加實例 339
13.2.5  查看集群狀態 341
13.2.6  基於已有組復制創建集群 343
13.2.7  配置MySQL Router 343
13.2.8  測試客戶端連接 346
13.2.9  測試高可用性 347
13.3  使用MySQL Shell管理InnoDB Cluster 349
13.3.1  配置實例自動重新加入 349
13.3.2  從InnoDB Cluster中刪除實例 350
13.3.3  重啟集群 351
13.3.4  解散InnoDB Cluster 352
13.3.5  配置新主選舉權重 354
13.3.6  配置故障轉移一致性 354
13.3.7  更改組復制拓撲 355
13.3.8  設置InnoDB Cluster選項 356
13.4  小結 357
第14章  Galera Cluster 358
14.1  基本原理 358
14.1.1  同步復制 359
14.1.2  Galera復制架構 361
14.1.3  Galera工作原理 362
14.1.4  狀態轉移 363
14.1.5  流控 365
14.1.6  單節點故障與恢復 367
14.1.7  仲裁 367
14.2  安裝和配置 371
14.2.1  初始安裝 371
14.2.2  使用SST增加節點 375
14.2.3  使用IST增加節點 376
14.3  管理監控 380
14.3.1  在線DDL 380
14.3.2  恢復主組件 382
14.3.3  重置仲裁 385
14.3.4  管理流控 386
14.3.5  自動逐出 388
14.3.6  啟用Galera仲裁員 389
14.3.7  Galera集群監控 391
14.4  性能測試 394
14.4.1  測試規劃 394
14.4.2  測試過程 397
14.5  負載均衡 399
14.5.1  安裝 399
14.5.2  配置 400
14.5.3  啟動 400
14.5.4  測試 401
14.6  小結 402
第15章  DRBD 403
15.1  DRBD簡介 403
15.1.1  工作原理 403
15.1.2  基本概念 404
15.2  DRBD安裝和配置 405
15.2.1  測試環境 405
15.2.2  安裝前的準備工作 406
15.2.3  下載安裝DRBD 407
15.2.4  配置DRBD 407
15.3  測試MySQL數據同步 411
15.4  Heartbeat+DRBD+MySQL高可用方案 412
15.4.1  配置 413
15.4.2  測試 417
15.5  小結 419
第16章  優化案例 420
16.1  快速生成數字輔助表 420
16.2  將MySQL去重操作優化到極致 422
16.2.1  問題描述 422
16.2.2  巧用索引與變量 423
16.2.3  利用窗口函數 431
16.2.4  多線程並行 432
16.3  重疊時間段問題之算法優化 441
16.3.1  問題描述與分析 441
16.3.2  優化重疊查詢 443
16.3.3  改進取得活躍時段的算法 449
16.3.4  MySQL 8的單條查詢解決方案 456
16.4  快速安全刪除MySQL大表 458
16.4.1  表刪除過程 458
16.4.2  創建硬鏈接 459
16.4.3  刪除表 460
16.4.4  刪除文件釋放空間 460
16.5  小結 461




相關書籍

T-SQL Fundamentals (3rd Edition)

作者 Itzik Ben-Gan

2020-07-01

MySQL 技術內幕, 5/e

作者 保羅·迪布瓦 (Paul DuBois)

2020-07-01

數據庫系統概念, 7/e (Database System Concepts, 7/e)

作者 Abraham Silberschatz Henry F. Korth S. Sudarshan

2020-07-01