《MySQL排錯指南》由Oracle公司的技術(shù)支持工程師編寫,詳細闡述了MySQL故障診斷及處理中的知識,教會讀者如何深入淺出地定位、分析并解決各種MySQL數(shù)據(jù)庫的故障。
《MySQL排錯指南》共分為7章,其內(nèi)容涵蓋了解決MySQL問題的基本技巧、MySQL中的并發(fā)問題、服務配置的影響、MySQL硬件和運行環(huán)境相關(guān)的問題、復制備份中的故障排除、故障排除使用的技術(shù)和工具,以及一些MySQL故障排除的最佳實踐。此外,本書的附錄中還包含了可以幫助讀者解決MySQL疑難問題的一些有用資源。
《MySQL排錯指南》適合MySQL數(shù)據(jù)庫開發(fā)及運維人員閱讀。
還在與bug、性能問題、程序崩潰、數(shù)據(jù)損壞以及令人費解的輸出等問題死磕?如果你是一名數(shù)據(jù)庫程序員或DBA,你將每天都要與這些問題打交道。它們的應對之策是知道如何進行迅速的恢復。本書采用獨特的視角,通過大量案例來演示如何處理MySQL中遇到的棘手問題。本書由Oracle的首席技術(shù)支持工程師編寫,它提供了用于解決各種問題(從簡單到復雜)的相關(guān)背景、工具和步驟。無論是你插入的數(shù)據(jù)無法在查詢中出現(xiàn),還是因為服務器故障而導致整個數(shù)據(jù)庫被損壞,只要本書在手,你都可以輕松應對這些問題。即使問題很容易解決,也要理解問題產(chǎn)生的根源當應用程序在多個線程上運行時,處理所發(fā)生的問題調(diào)試和修復由配置選項引發(fā)的問題探究操作系統(tǒng)調(diào)優(yōu)如何影響服務器使用特定的排錯技術(shù)來重現(xiàn)問題參考其他排錯技術(shù)和工具,其中包括第三方解決方案學習可實現(xiàn)安全、高效排錯以及預防問題的**實踐。
Sevta Smirnova是Oracle公司MySQL部門bug分析支持團隊的首席技術(shù)支持工程師,每天的工作是處理棘手的支持問題和MysQL軟件bug。Sveta是開源社區(qū)的一名積極參與者。
目錄
第1章 基礎(chǔ)1
1.1 語法錯誤1
1.2 SELECT返回錯誤結(jié)果5
1.3 當錯誤可能由之前的更新引起時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 配置選項的影響33
1.6.5 修改數(shù)據(jù)的查詢35
1.6.6 沒有高招37
1.7 當服務器無響應的時候37
1.8 特定于存儲引擎的問題及解決方案42
1.8.1 MyISAM損壞43
1.8.2 InnoDB數(shù)據(jù)損壞45
1.9 許可問題47
第2章 你不孤單:并發(fā)問題50
2.1 鎖和事務50
2.2 鎖51
2.2.1 表鎖52
2.2.2 行鎖54
2.3 事務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事務73
2.5.2 為并發(fā)問題監(jiān)控其他資源73
2.6 其他鎖問題74
2.7 復制和并發(fā)82
2.7.1 基于語句的復制問題82
2.7.2 混合事務和無事務表86
2.7.3 從服務器上的問題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章 配置選項對服務器的影響100
3.1 服務器選項101
3.2 可更改服務器運行方式的變量104
3.3 有關(guān)硬件資源限制的選項105
3.4 使用--no-defaults選項106
3.5 性能選項107
3.6 欲速則不達107
3.7 SET語句108
3.8 如何檢查變更是否存在一些影響108
3.9 變量介紹109
3.9.1 影響服務器與客戶端行為的選項110
3.9.2 與性能相關(guān)的選項124
3.9.3 計算選項的安全值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)絡帶寬141
4.1.5 延遲效應的例子142
4.2 操作系統(tǒng)限制142
4.3 其他軟件影響144
第5章 復制故障診斷145
5.1 查看從服務器狀態(tài)146
5.2 與I/O線程有關(guān)的復制錯誤148
5.3 與SQL線程有關(guān)的問題155
5.3.1 當主從服務器上數(shù)據(jù)不同的時候156
5.3.2 從服務器上的循環(huán)復制以及無復制寫入157
5.3.3 不完整或被改變的SQL語句158
5.3.4 主從服務器上出現(xiàn)的不同錯誤159
5.3.5 配置159
5.3.6 當從服務器遠遠落后主服務器時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 基準工具198
6.9.2 Gypsy201
6.9.3 MySQL測試框架202
6.10 維護工具204
第7章 最佳實踐207
7.1 備份207
7.1.1 計劃備份208
7.1.2 備份類型208
7.1.3 工具209
7.2 收集需要的信息210
7.3 測試211
7.4 預防212
7.4.1 權(quán)限212
7.4.2 環(huán)境212
7.5 三思而后行213
附錄 信息資源214