《MySQL排錯指南》由Oracle公司的技術(shù)支持工程師編寫,詳細(xì)闡述了MySQL故障診斷及處理中的知識,教會讀者如何深入淺出地定位、分析并解決各種MySQL數(shù)據(jù)庫的故障。
《MySQL排錯指南》共分為7章,其內(nèi)容涵蓋了解決MySQL問題的基本技巧、MySQL中的并發(fā)問題、服務(wù)配置的影響、MySQL硬件和運(yùn)行環(huán)境相關(guān)的問題、復(fù)制備份中的故障排除、故障排除使用的技術(shù)和工具,以及一些MySQL故障排除的最佳實(shí)踐。此外,本書的附錄中還包含了可以幫助讀者解決MySQL疑難問題的一些有用資源。
《MySQL排錯指南》適合MySQL數(shù)據(jù)庫開發(fā)及運(yùn)維人員閱讀。
還在與bug、性能問題、程序崩潰、數(shù)據(jù)損壞以及令人費(fèi)解的輸出等問題死磕?如果你是一名數(shù)據(jù)庫程序員或DBA,你將每天都要與這些問題打交道。它們的應(yīng)對之策是知道如何進(jìn)行迅速的恢復(fù)。本書采用獨(dú)特的視角,通過大量案例來演示如何處理MySQL中遇到的棘手問題。本書由Oracle的首席技術(shù)支持工程師編寫,它提供了用于解決各種問題(從簡單到復(fù)雜)的相關(guān)背景、工具和步驟。無論是你插入的數(shù)據(jù)無法在查詢中出現(xiàn),還是因?yàn)榉⻊?wù)器故障而導(dǎo)致整個數(shù)據(jù)庫被損壞,只要本書在手,你都可以輕松應(yīng)對這些問題。即使問題很容易解決,也要理解問題產(chǎn)生的根源當(dāng)應(yīng)用程序在多個線程上運(yùn)行時,處理所發(fā)生的問題調(diào)試和修復(fù)由配置選項(xiàng)引發(fā)的問題探究操作系統(tǒng)調(diào)優(yōu)如何影響服務(wù)器使用特定的排錯技術(shù)來重現(xiàn)問題參考其他排錯技術(shù)和工具,其中包括第三方解決方案學(xué)習(xí)可實(shí)現(xiàn)安全、高效排錯以及預(yù)防問題的**實(shí)踐。
Sevta Smirnova是Oracle公司MySQL部門bug分析支持團(tuán)隊(duì)的首席技術(shù)支持工程師,每天的工作是處理棘手的支持問題和MysQL軟件bug。Sveta是開源社區(qū)的一名積極參與者。
目錄
第1章 基礎(chǔ)1
1.1 語法錯誤1
1.2 SELECT返回錯誤結(jié)果5
1.3 當(dāng)錯誤可能由之前的更新引起時10
1.4 獲取查詢信息15
1.5 追蹤數(shù)據(jù)中的錯誤18
1.6 慢查詢23
1.6.1 通過EXPLAIN的信息調(diào)優(yōu)查詢23
1.6.2 表調(diào)優(yōu)和索引29
1.6.3 何時停止調(diào)優(yōu)33
1.6.4 配置選項(xiàng)的影響33
1.6.5 修改數(shù)據(jù)的查詢35
1.6.6 沒有高招37
1.7 當(dāng)服務(wù)器無響應(yīng)的時候37
1.8 特定于存儲引擎的問題及解決方案42
1.8.1 MyISAM損壞43
1.8.2 InnoDB數(shù)據(jù)損壞45
1.9 許可問題47
第2章 你不孤單:并發(fā)問題50
2.1 鎖和事務(wù)50
2.2 鎖51
2.2.1 表鎖52
2.2.2 行鎖54
2.3 事務(wù)59
2.3.1 隱藏查詢60
2.3.2 死鎖65
2.3.3 隱式提交68
2.4 元數(shù)據(jù)鎖69
2.5 并發(fā)如何影響性能72
2.5.1 為并發(fā)問題監(jiān)控InnoDB事務(wù)73
2.5.2 為并發(fā)問題監(jiān)控其他資源73
2.6 其他鎖問題74
2.7 復(fù)制和并發(fā)82
2.7.1 基于語句的復(fù)制問題82
2.7.2 混合事務(wù)和無事務(wù)表86
2.7.3 從服務(wù)器上的問題87
2.8 高效地使用MySQL問題排查工具89
2.8.1 SHOW PROCESSLIST和INFORMATION_SCHEMA.
PROCESSLIST表89
2.8.2 SHOW ENGINE INNODB STATUS和InnoDB監(jiān)控器91
2.8.3 INFORMATION_SCHEMA中的表93
2.8.4 PERFORMANCE_SCHEMA中的表94
2.8.5 日志文件97
第3章 配置選項(xiàng)對服務(wù)器的影響100
3.1 服務(wù)器選項(xiàng)101
3.2 可更改服務(wù)器運(yùn)行方式的變量104
3.3 有關(guān)硬件資源限制的選項(xiàng)105
3.4 使用--no-defaults選項(xiàng)106
3.5 性能選項(xiàng)107
3.6 欲速則不達(dá)107
3.7 SET語句108
3.8 如何檢查變更是否存在一些影響108
3.9 變量介紹109
3.9.1 影響服務(wù)器與客戶端行為的選項(xiàng)110
3.9.2 與性能相關(guān)的選項(xiàng)124
3.9.3 計(jì)算選項(xiàng)的安全值133
第4章 MySQL環(huán)境138
4.1 物理硬件限制138
4.1.1 內(nèi)存138
4.1.2 處理器與內(nèi)核139
4.1.3 磁盤I/O140
4.1.4 網(wǎng)絡(luò)帶寬141
4.1.5 延遲效應(yīng)的例子142
4.2 操作系統(tǒng)限制142
4.3 其他軟件影響144
第5章 復(fù)制故障診斷145
5.1 查看從服務(wù)器狀態(tài)146
5.2 與I/O線程有關(guān)的復(fù)制錯誤148
5.3 與SQL線程有關(guān)的問題155
5.3.1 當(dāng)主從服務(wù)器上數(shù)據(jù)不同的時候156
5.3.2 從服務(wù)器上的循環(huán)復(fù)制以及無復(fù)制寫入157
5.3.3 不完整或被改變的SQL語句158
5.3.4 主從服務(wù)器上出現(xiàn)的不同錯誤159
5.3.5 配置159
5.3.6 當(dāng)從服務(wù)器遠(yuǎn)遠(yuǎn)落后主服務(wù)器時159
第6章 問題排查技術(shù)與工具161
6.1 查詢161
6.1.1 慢查詢?nèi)罩?62
6.1.2 可定制的工具163
6.1.3 MySQL命令行接口165
6.2 環(huán)境的影響169
6.3 沙箱169
6.4 錯誤與日志173
6.4.1 再論錯誤信息173
6.4.2 崩潰173
6.5 收集信息的工具177
6.5.1 Information Schema177
6.5.2 InnoDB信息概要表178
6.5.3 InnoDB監(jiān)控器180
6.5.4 Performance Schema187
6.5.5 Show [GLOBAL] STATUS190
6.6 本地化問題(最小化測試用例)191
6.7 故障排除的一般步驟192
6.8 測試方法195
6.8.1 在新版本中嘗試查詢195
6.8.2 檢查已知的bug195
6.8.3 變通方法196
6.9 專用的測試工具198
6.9.1 基準(zhǔn)工具198
6.9.2 Gypsy201
6.9.3 MySQL測試框架202
6.10 維護(hù)工具204
第7章 最佳實(shí)踐207
7.1 備份207
7.1.1 計(jì)劃備份208
7.1.2 備份類型208
7.1.3 工具209
7.2 收集需要的信息210
7.3 測試211
7.4 預(yù)防212
7.4.1 權(quán)限212
7.4.2 環(huán)境212
7.5 三思而后行213
附錄 信息資源214