注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡數據庫深入理解MySQL主從原理

深入理解MySQL主從原理

深入理解MySQL主從原理

定 價:¥89.00

作 者: 高鵬 著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787121406584 出版時間: 2021-03-01 包裝: 平裝
開本: 16開 頁數: 268 字數:  

內容簡介

  在超大規(guī)模流量的分布式系統(tǒng)環(huán)境下,無論是從系統(tǒng)性能的角度,還是從數據安全性的角度,掌握MySQL主從原理,都是當下技術人員的必備基本功。MySQL主從原理是高可用架構的基石,即便是MGR這種集群架構也可以看到主從的影子。要解決一個問題或者故障,最快的方式就是了解它的原理,快速定位問題。本書從源碼層面抽絲剝繭般地描述MySQL主從原理,全面地介紹了GTID相關的知識點,并解析了主要Event的生成、作用和格式,以及線程的初步知識、MDL LOCK、排序等熱門話題和主從相關的案例。無論是MySQL DBA和MySQL源碼愛好者,還是剛進入數據庫行業(yè)的小白讀者,通過閱讀本書,都能通過源碼級分析,更好地理解和使用MySQL主從復制技術。

作者簡介

  高鵬(網名八怪),現(xiàn)任中亦安圖科技有限公司數據庫專家,2008年開始從事Oracle/MySQL相關工作,Oracle OCM、MySQL源碼愛好者,知數堂8期學員。有豐富的數據庫性能調優(yōu)、故障診斷經驗。

圖書目錄

第1章 GTID\t1
1.1 GTID的基本概念\t1
1.1.1 GTID的作用\t1
1.1.2 GTID的基本表示\t1
1.1.3 server_uuid的生成\t2
1.1.4 GTID的生成\t2
1.1.5 GTID_EVENT和PREVIOUS_GTIDS_LOG_EVENT簡介\t3
1.1.6 gtid_executed表的作用\t4
1.2 mysql.gtid_executed表、gtid_executed變量、gtid_purged變量的修改時機\t5
1.2.1 定義\t5
1.2.2 主庫修改時機\t7
1.2.3 從庫修改時機\t8
1.2.4 通用修改時機\t10
1.2.5 通用修改時機源碼函數簡析\t10
1.3 GTID模塊初始化簡介和參數binlog_gtid_simple_recovery\t11
1.3.1 GTID模塊初始化流程圖\t12
1.3.2 步驟解析\t13
1.4 GTID中的運維\t16
1.4.1 跳過一個事務\t17
1.4.2 mysqldump導出行為的改變\t17
1.4.3 搭建GTID AUTO_POSITION MODE的主從\t18
1.4.4 主從切換\t20
1.4.5 參數gitd_mode的含義\t21
1.4.6 在線開啟GTID\t21
1.4.7 離線開啟GTID\t22
1.4.8 開啟GTID的注意事項\t23
1.4.9 統(tǒng)計值ONGOING_ANONYMOUS_TRANSACTION_COUNT的變更時機\t23
1.4.10 設置MASTER_AUTO_POSITION = 1的影響\t25
1.4.11 離線開啟GTID丟失數據的測試\t25
第2章 Event\t28
2.1 binary log Event 的總體格式\t28
2.1.1 引言\t28
2.1.2 binary log綜述\t28
2.1.3 Event的總體格式\t29
2.1.4 Event header和Event footer\t29
2.1.5 具體解析\t30
2.1.6 本書涉及的Event類型\t31
2.2 重點Event之FORMAT_DESCRIPTION_EVENT和
PREVIOUS_GTIDS_LOG_EVENT\t32
2.2.1 FORMAT_DESCRIPTION_EVENT\t32
2.2.2 PREVIOUS_GTIDS_LOG_EVENT\t35
2.3 重點Event之GTID_EVENT\t39
2.3.1 GTID_EVENT的作用\t39
2.3.2 源碼重要接口\t40
2.3.3 主體格式\t40
2.3.4 簡單解析\t41
2.3.5 生成時機\t41
2.3.6 ANONYMOUS_GTID_EVENT\t41
2.3.7 GTID的三種模式\t42
2.4 重點Event之QUERY_EVENT和MAP_EVENT\t43
2.4.1 QUERY_EVENT\t43
2.4.2 MAP_EVENT\t46
2.5 重點Event之WRITE_EVENT和DELETE_EVENT\t51
2.5.1 WRITE_EVENT\t51
2.5.2 DELETE_EVENT\t57
2.6 重點Event之UPDATE_EVENT和XID_EVENT\t61
2.6.1 UPDATE_ROWS_EVENT\t61
2.6.2 XID_EVENT\t66
2.7 參數binlog_row_image的影響\t68
2.7.1 參數影響\t68
2.7.2 過濾方式\t70
2.7.3 DML Event中的標識\t70
2.8 巧用Event發(fā)現(xiàn)問題\t73
2.8.1 工具簡介\t73
2.8.2 分析長期未提交的事務\t74
2.8.3 分析大事務\t75
2.8.4 分析binary log中Event的生成速度\t75
2.8.5 分析每個表生成了多少個DML Event\t75
2.8.6 工具展示\t75
第3章 主庫\t79
3.1 binlog cache簡介\t79
3.1.1 binlog cache綜述\t79
3.1.2 使用binlog cache的流程\t80
3.1.3 參數binlog_cache_size的作用及其初始化\t80
3.1.4 臨時文件的分配和使用\t81
3.1.5 參數max_binlog_cache_size的作用\t82
3.1.6 如何觀察到臨時文件\t82
3.2 事務Event的生成和寫入流程\t83
3.2.1 流程綜述\t83
3.2.2 刪除階段流程\t85
3.2.3 提交階段流程\t85
3.2.4 兩個注意點\t86
3.3 MySQL層事務提交流程簡析\t86
3.3.1 參數設置\t86
3.3.2 總體流程圖\t87
3.3.3 步驟解析第一階段\t90
3.3.4 步驟解析第二階段(FLUSH階段)\t90
3.3.5 步驟解析第三階段(SYNC階段)\t92
3.3.6 步驟解析第四階段(COMMIT階段)\t93
3.3.7 步驟解析第五階段\t94
3.3.8 提交階段的注意點\t95
3.4 基于WRITESET的并行復制方式\t95
3.4.1 奇怪的last commit\t96
3.4.2 WRITESET是什么\t96
3.4.3 WRITESET的生成\t97
3.4.4 add_pke函數的流程\t98
3.4.5 WRITESET設置對last commit的處理方式\t99
3.4.6 WRITESET的歷史MAP\t100
3.4.7 WRITESET的并行復制對last commit的處理流程\t100
3.4.8 WRITESET_SESSION的方式\t104
3.4.9 關于參數binlog_transaction_dependency_history_size的說明\t104
3.4.10 沒有主鍵的情況\t104
3.4.11 為什么同一個session執(zhí)行的事務能生成同樣的last commit\t105
3.4.12 WRITESET并行復制方式的優(yōu)缺點\t105
3.5 主庫的DUMP線程\t106
3.5.1 POSITION MODE和GTID AUTO_POSITION MODE的不同點\t106
3.5.2 流程圖\t108
3.5.3 步驟解析\t109
3.5.4 重點說明\t112
3.6 DUMP線程查找和過濾GTID的基本算法\t113
3.6.1 環(huán)境假設\t113
3.6.2 檢查從庫的GTID是否大于主庫的GTID\t114
3.6.3 檢查需要的binary log是否已經清理\t114
3.6.4 實際掃描binary log\t115
3.6.5 GTID過濾\t115
第4章 從庫\t117
4.1 從庫MTS多線程并行回放(一)\t117
4.1.1 MTS綜述\t117
4.1.2 協(xié)調線程的分發(fā)機制\t118
4.1.3 步驟解析\t120
4.1.4 并行回放判定一例\t124
4.2 從庫MTS多線程并行回放(二)\t126
4.2.1 工作線程執(zhí)行Event\t126
4.2.2 MTS檢查點中的重要概念\t127
4.2.3 MTS中執(zhí)行檢查點的流程\t132
4.2.4 MTS的關鍵點\t136
4.3 MTS中的“gap”測試和參數lave_preserve_commit_ order\t136
4.3.1 MTS中的“gap”測試\t136
4.3.2 參數slave_preserve_commit_order的影響\t138
4.4 從庫的I/O線程\t139
4.4.1 引入\t139
4.4.2 I/O線程的啟動流程圖\t140
4.4.3 流程解析\t142
4.5 從庫的SQL線程(MTS協(xié)調線程)和參數sql_slave_skip_counter\t146
4.5.1 SQL線程的功能\t146
4.5.2 流程圖\t146
4.5.3 重要步驟說明\t148
4.5.4 各個Event做了什么\t151
4.6 從庫數據的查找和參數slave_rows_search_algorithms\t153
4.6.1 從一個例子出發(fā)\t153
4.6.2 確認查找數據的方式\t156
4.6.3 ROW_LOOKUP_HASH_SCAN方式的數據查找\t159
4.6.4 從庫數據查找的要點\t161
4.7 從庫的關閉和異?;謴土鞒蘚t162
4.7.1 正常的stop slave流程\t162
4.7.2 stop slave為什么會慢\t163
4.7.3 從庫啟動需要讀取的信息\t164
4.7.4 關于repository表的事務性\t165
4.7.5 相關參數\t166
4.7.6 恢復流程\t167
4.8 安全高效的從庫設置\t170
4.8.1 從庫參數設置建議\t170
4.8.2 單SQL線程模式\t171
4.8.3 MTS\t174
4.8.4 一個非安全設置的例子\t176
4.8.5 參數sync_relay_log的影響\t177
4.9 從庫Seconds_Behind_Master的計算方式\t177
4.9.1 Seconds_Behind_Master的計算方式\t178
4.9.2 影響Seconds_Behind_Master的因素\t178
4.9.3 不同操作計算延遲的方式\t181
4.9.4 MTS中Seconds_Behind_Master計算誤差測試\t181
4.9.5 手動修改系統(tǒng)時間導致Seconds_Behind_Master為0\t183
4.10 Seconds_Behind_Master延遲場景歸納\t185
4.10.1 延遲場景\t185
4.10.2 相關測試\t186
4.10.3 延遲診斷的方法論\t189
第5章 案例解析\t190
5.1 線程簡介和MySQL調試環(huán)境搭建\t190
5.1.1 線程簡介\t190
5.1.2 PID、LWP ID、Thread TID\t192
5.1.3 MySQL線程和系統(tǒng)LWP ID的關系\t193
5.1.4 調試環(huán)境的搭建\t194
5.1.5 調試環(huán)境的使用\t197
5.2 MySQL排序詳細解析\t198
5.2.1 為什么要討論排序\t198
5.2.2 從一個問題出發(fā)\t199
5.2.3 測試案例\t200
5.2.4 階段1:確認排序字段及順序\t202
5.2.5 階段2:計算sort字段長度\t202
5.2.6 階段3:計算額外字段的空間\t203
5.2.7 階段4:確認每行的長度\t205
5.2.8 階段5:確認最大內存分配\t206
5.2.9 階段6:讀取數據進行內存排序\t207
5.2.10 階段7:排序方式總結輸出\t210
5.2.11 階段8:進行最終排序\t211
5.2.12 排序的其他問題\t212
5.2.13 使用OPTIMIZER_TRACE查看排序信息\t214
5.2.14 回到問題本身\t215
5.2.15 答疑\t217
5.3 MySQL中的MDL Lock簡介\t219
5.3.1 MDL Lock綜述\t219
5.3.2 重要數據結構和概念\t220
5.3.3 為MDL Lock增加打印函數\t225
5.3.4 在合適的位置增加打印函數\t227
5.3.5 常見MDL Lock類型的加鎖測試\t229
5.4 奇怪的FTWRL堵塞案例\t237
5.4.1 兩個不同的現(xiàn)象\t237
5.4.2 sleep 函數生效點\t239
5.4.3 FTWRL做了什么工作\t240
5.4.4 例5-3步驟解析\t242
5.4.5 例5-4步驟解析\t243
5.4.6 FTWRL堵塞和被堵塞的簡單總結\t244
5.5 產生大量小relay log故障案例\t245
5.5.1 案例現(xiàn)象\t245
5.5.2 參數slave_net_timeout分析\t245
5.5.3 原因剖析\t246
5.5.4 案例模擬\t246
5.5.5 實現(xiàn)方式\t248
5.6 從庫system lock原因簡析\t250
5.6.1 binary log的寫入時間和Event中的時間\t250
5.6.2 問題由來\t251
5.6.3 從庫system lock延遲的原因\t251
5.6.4 system lock問題分析\t252
5.6.5 模擬測試\t253

本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.shuitoufair.cn 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號