MySQL 高可用實踐

王雪迎

  • 出版商: 清華大學
  • 出版日期: 2020-07-01
  • 定價: $594
  • 售價: 8.5$505
  • 語言: 簡體中文
  • ISBN: 7302555540
  • ISBN-13: 9787302555544
  • 相關分類: MySQLSQL

下單後立即進貨 (約4週~6週)

  • MySQL 高可用實踐-preview-1
  • MySQL 高可用實踐-preview-2
  • MySQL 高可用實踐-preview-3
MySQL 高可用實踐-preview-1

買這商品的人也買了...

商品描述

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