《數據生態:MySQL複製技術與生產實踐》是2020年10月電子工業出版社出版的圖書,作者為羅小波、沈剛。本書側重介紹主從複製的原理和複製技術的演進、主從複製技術在生產環境中的套用方案,以及主從複製中常見對象複製的安全性等。適用MySQL DBA、資料庫架構師及相關開發人員閱讀。
基本介紹
- 中文名:數據生態:MySQL複製技術與生產實踐
- 作者:羅小波、沈剛
- 出版社:電子工業出版社
- 出版時間:2020年10月
- 頁數:456 頁
- 定價:119.00 元
- 開本:16 開
- ISBN:9787121397141
內容簡介,圖書目錄,作者簡介,
內容簡介
《數據生態:MySQL複製技術與生產實踐》共分為3篇:基礎篇、方案篇和參考篇。按照“基本原理”→“生產實踐”→“更多參考”的邏輯順序講述,書中配了大量的原理與方案示意圖,力求用通俗易懂的語言、直觀明了的示意圖、完整的知識涵蓋面將MySQL複製技術講透。
其中,基礎篇側重介紹主從複製的原理和複製技術的演進,方案篇側重介紹主從複製技術在生產環境中的套用方案,參考篇側重介紹二進制日誌的基本組成及主從複製中常見對象複製的安全性等。
本書適用初、中、高級MySQL DBA、資料庫架構師及相關開發人員閱讀。
圖書目錄
基 礎 篇
第1章 複製的概述 2
1.1 適用場景 2
1.2 數據同步方法 3
1.3 數據同步類型 4
1.4 複製格式 4
第2章 複製的基本原理 6
2.1 概述 6
2.2 細節 7
第3章 複製格式詳解 10
3.1 複製格式概述 10
3.2 複製格式明細 11
3.2.1 基於statement和基於row的複製的優缺點 11
3.2.2 使用row格式的二進制日誌進行複製 14
3.3 如何確定與記錄複製中的安全和不安全語句 15
第4章 傳統複製與GTID複製 18
4.1 傳統複製 18
4.2 GTID複製 19
4.2.1 GTID的格式和存儲 19
4.2.2 GTID的生命周期 23
4.2.3 GTID 自動定位 26
4.2.4 GTID複製模式的限制 27
第5章 半同步複製 29
5.1 半同步複製的原理 29
5.2 半同步複製的管理接口 33
5.3 半同步複製的監控 33
5.4 半同步複製的注意要點 34
第6章 多執行緒複製 36
6.1 單執行緒複製原理 36
6.2 DATABASE多執行緒複製 38
6.2.1 原理 38
6.2.2 系統變數的配置 40
6.3 LOGICAL_CLOCK多執行緒複製 40
6.3.1 原理 40
6.3.2 系統變數的配置 42
6.4 WRITESET多執行緒複製 42
6.4.1 原理 42
6.4.2 系統變數的配置 50
第7章 多源複製 51
7.1 複製通道 51
7.2 單通道操作命令 52
7.3 複製語句的向前兼容性 53
7.4 啟動選項和複製通道選項 53
7.5 複製通道的命名約定 55
第8章 從庫中繼日誌和狀態日誌 56
8.1 中繼日誌和狀態日誌概述 56
8.2 從庫中繼日誌 57
8.3 從庫狀態日誌 58
第9章 通過PERFORMANCE_SCHEMA庫檢查複製信息 66
9.1 PERFORMANCE_SCHEMA庫中的複製信息記錄表概述 66
9.2 PERFORMANCE_SCHEMA庫中的複製信息記錄表詳解 70
9.2.1 replication_applier_configuration表 70
9.2.2 replication_applier_status表 71
9.2.3 replication_applier_status_by_coordinator表 72
9.2.4 replication_applier_status_by_worker表 74
9.2.5 replication_connection_configuration表 76
9.2.6 replication_connection_status表 78
9.2.7 replication_group_member_stats表 80
9.2.8 replication_group_members表 81
第10章 通過其他方式檢查複製信息 83
10.1 複製狀態變數 83
10.2 複製心跳信息 83
10.3 SHOW SLAVE STATUS語句輸出信息詳解 85
10.4 通過SHOW PROCESSLIST語句查看複製執行緒狀態 92
10.5 SHOW MASTER STATUS語句輸出詳解 93
10.6 SHOW SLAVE HOSTS語句 93
第11章 MySQL複製延遲Seconds_Behind_Master究竟是如何計算的 96
11.1 “口口相傳”的計算方法 96
11.2 探尋“正確”的計算方法 97
11.3 驗證 100
11.3.1 我們想確認什麼 100
11.3.2 提前確認一些信息 100
11.3.3 執行驗證 102
11.4 小結 103
第12章 如何保證從庫在意外中止後安全恢復 104
12.1 從庫的崩潰與恢復概述 104
12.2 從庫的崩潰與恢復詳解 104
12.2.1 單執行緒複製的安全恢復 104
12.2.2 多執行緒複製的安全恢復 105
第13章 MySQL Server複製過濾 108
13.1 MySQL Server複製過濾規則概述 108
13.2 庫級別複製過濾選項的評估 109
13.3 表級別複製過濾選項的評估 113
13.4 複製過濾規則的套用 115
方 案 篇
第14章 搭建異步複製 120
14.1 操作環境信息 120
14.2 全新初始化場景 121
14.2.1 傳統複製 121
14.2.2 GTID複製 124
14.3 已有數據場景 126
14.3.1 傳統複製 127
14.3.2 GTID複製 134
14.4 變數模板 140
14.4.1 傳統複製模式的變數模板 140
14.4.2 GTID複製模式的變數模板 144
第15章 搭建半同步複製 146
15.1 半同步複製外掛程式的安裝和配置環境要求 146
15.2 半同步複製外掛程式的安裝和配置 147
15.2.1 關鍵步驟 147
15.2.2 詳細過程 148
15.3 半同步複製工作狀態的驗證 152
第16章 通過擴展從庫以提高複製性能 155
16.1 操作環境 155
16.2 橫向擴展 156
16.2.1 擴展從庫的簡要步驟 157
16.2.2 擴展從庫的詳細過程 158
16.2.3 配置從庫的讀負載均衡 164
16.3 提高複製性能 165
第17章 複製模式的切換 167
17.1 操作環境信息 167
17.2 複製模式的相關概念 167
17.3 傳統複製線上變更為GTID複製 173
17.3.1 簡要步驟 173
17.3.2 詳細過程 173
17.4 GTID複製線上變更為傳統複製 179
17.4.1 簡要步驟 179
17.4.2 詳細過程 180
17.5 GTID複製離線變更為傳統複製 186
17.5.1 簡要步驟 186
17.5.2 詳細過程 187
17.6 傳統複製離線變更為GTID複製 191
17.6.1 簡要步驟 191
17.6.2 詳細過程 191
第18章 複製拓撲的線上調整 196
18.1 操作環境信息 196
18.2 傳統複製模式下的複製拓撲線上調整 197
18.2.1 並行複製變更為串列複製 198
18.2.2 串列複製變更為並行複製 206
18.3 GTID複製模式下的複製拓撲線上調整 211
18.3.1 並行複製變更為串列複製 212
18.3.2 串列複製變更為並行複製 214
第19章 主從實例的例行切換 218
19.1 操作環境信息 218
19.2 線上切換 219
19.2.1 基於賬號刪除的線上切換 220
19.2.2 基於修改連線數的線上切換 232
第20章 資料庫故障轉移 239
20.1 操作環境信息 240
20.2 主庫故障轉移的關鍵步驟 241
20.3 主庫故障轉移的詳細過程 243
20.3.1 環境的準備 243
20.3.2 執行步驟 245
第21章 搭建多源複製 255
21.1 操作環境信息 255
21.2 基於傳統複製的多源複製 256
21.2.1 傳統複製模式下的單執行緒多源複製 256
21.2.2 傳統複製模式下的多執行緒多源複製 261
21.3 基於GTID複製的多源複製 263
21.3.1 GTID複製模式下的單執行緒多源複製 264
21.3.2 GTID複製模式下的多執行緒多源複製 267
21.4 多源複製拓撲中複製相關的操作語句變化 268
第22章 MySQL版本升級 273
22.1 MySQL版本之間的複製兼容性 273
22.2 升級複製的設定 274
第23章 將不同資料庫的數據複製到不同實例 276
23.1 操作環境信息 276
23.2 通過設定複製過濾規則將不同資料庫的數據複製到不同實例 277
23.2.1 通過唯讀選項配置複製過濾規則 278
23.2.2 通過動態語句配置複製過濾規則 286
第24章 發生數據誤操作之後的處理方案 293
24.1 操作環境信息 294
24.2 主庫發生誤操作後的數據恢復 295
24.2.1 通過延遲複製恢複數據 296
24.2.2 通過閃回工具恢複數據 302
24.3 從庫發生誤操作後的數據恢復 309
24.3.1 通過修改系統變數slave_exec_mode恢複數據 309
24.3.2 通過GTID特性注入空事務恢複數據 316
第25章 常用複製故障排除方案 323
25.1 確認故障現象 323
25.2 信息收集與故障排查 323
25.3 複製故障的修復 325
25.4 無法解決的問題 326
參 考 篇
第26章 二進制日誌檔案的基本組成 328
26.1 什麼是二進制日誌 328
26.2 二進制日誌的組成 328
26.3 二進制日誌內容解析 329
26.3.1 基於row的複製的二進制日誌內容解析 330
26.3.2 基於statement的複製的二進制日誌內容解析 344
26.4 小結 351
第27章 常規DDL操作解析 352
27.1 操作環境信息 352
27.2 常規DDL操作示例 353
27.3 二進制日誌內容解析 356
27.4 小結 359
第28章 為何二進制日誌中同一個事務的事件時間點會亂序 360
28.1 操作環境信息 360
28.2 驗證前的準備 360
28.3 驗證過程 361
第29章 複製AUTO_INCREMENT欄位 367
29.1 操作環境信息 367
29.2 複製AUTO_INCREMENT欄位的操作示例 367
29.3 對二進制日誌的解析及解釋 368
29.3.1 基於row的複製中AUTO_INCREMENT欄位的複製 368
29.3.2 基於statement的複製中AUTO_INCREMENT欄位的複製 369
29.3.3 混合複製中AUTO_INCREMENT欄位的複製 371
29.4 使用AUTO_INCREMENT欄位時的注意事項 371
29.5 小結 372
第30章 複製CREATE ... IF NOT EXISTS語句 373
30.1 操作環境信息 373
30.2 複製CREATE ... IF NOT EXISTS語句的操作演示 374
30.3 二進制日誌解析結果的解釋 375
30.4 小結 376
第31章 複製CREATE TABLE ... SELECT語句 377
31.1 操作環境信息 377
31.2 複製CREATE TABLE ... SELECT語句的操作示例 377
31.3 二進制日誌的解析及解釋 380
31.3.1 statement格式二進制日誌的解析及解釋 380
31.3.2 row格式和mixed格式二進制日誌的解析及解釋 381
31.4 使用CREATE TABLE ... SELECT語句時的注意事項 384
31.5 小結 384
第32章 在主從複製中使用不同的表定義 385
32.1 操作環境信息 385
32.2 主從庫的表欄位數不同時如何複製 386
32.2.1 源表欄位數多於目標表欄位數 386
32.2.2 目標表欄位數多於源表欄位數 388
32.3 不同類型欄位的複製 389
32.3.1 屬性提升 390
32.3.2 有損轉換與無損轉換 390
32.4 小結 391
第33章 複製中的調用功能 392
33.1 操作環境信息 392
33.2 複製中的調用功能操作示例 392
33.2.1 在READ-COMMITTED隔離級別、基於row的複製場景下資料庫的
操作記錄 393
33.2.2 在READ-COMMITTED隔離級別、基於statement的複製場景下
資料庫的操作記錄 396
33.3 二進制日誌的解析及解釋 396
33.3.1 row和mixed格式二進制日誌的解析及解釋 396
33.3.2 statement格式二進制日誌的解析及解釋 402
33.4 小結 407
第34章 複製LIMIT子句 408
34.1 操作環境信息 408
34.2 複製LIMIT子句的操作示例 408
34.3 二進制日誌的解析及解釋 409
34.3.1 statement格式二進制日誌的解析及解釋 410
34.3.2 row格式和mixed格式二進制日誌的解析及解釋 411
34.4 小結 414
第35章 複製LOAD DATA語句 415
35.1 操作環境信息 415
35.2 複製LOAD DATA語句的操作示例 416
35.2.1 準備演示數據 416
35.2.2 LOAD DATA語句的操作 417
35.3 二進制日誌的解析及解釋 417
35.3.1 statement格式二進制日誌的解析及解釋 417
35.3.2 row格式和mixed格式二進制日誌的解析及解釋 419
35.4 小結 420
第36章 系統變數max_allowed_packet對複製的影響 421
36.1 系統變數簡介 421
36.2 操作環境信息 422
36.3 max_allowed_packet對複製的影響操作示例 423
36.3.1 max_allowed_packet對主庫的影響 423
36.3.2 max_allowed_packet對從庫的影響 424
36.4 小結 427
第37章 複製臨時表 429
37.1 操作環境信息 429
37.2 複製臨時表的操作示例 429
37.2.1 基於statement的複製且隔離級別為REPEATABLE-READ 430
37.2.2 基於row的複製且隔離級別為REPEATABLE-READ 432
37.2.3 混合複製且隔離級別為REPEATABLE-READ 433
37.2.4 使用臨時表時如何安全關閉從庫 433
37.3 與臨時表相關的其他注意事項 435
37.4 小結 435
第38章 複製中的事務不一致問題 436
38.1 事務不一致的場景類型 436
38.2 事務不一致的原因 437
38.3 事務不一致的後果 437
38.4 小結 438
作者簡介
羅小波
《千金良方:MySQL性能最佳化金字塔法則》作者之一。熟悉MySQL體系結構,擅長資料庫的整體調優,熱衷於開源技術的研究與分享,曾線上上和線下多次公開分享過資料庫專題知識,發表近100篇資料庫相關的研究文章,現任ScaleFlux資深套用工程師(Staff Application Engineer)。
沈 剛
熟悉MySQL資料庫運行機制,在資料庫及複製架構故障的診斷、資料庫性能調優、資料庫備份恢復和遷移等方面有豐富的經驗,為銀行、證券公司及網際網路用戶提供資料庫的架構設計、故障診斷、性能調優等服務,現任PingCAP TiDB 技術支持工程師。