內容簡介
本書是“MySQL High Availability”的中文翻譯版,主要講解真實環境下如何使用M
ySQL的複製、集群和監控特性,揭示MySQL可靠性和高可用性的方方面面。本書由MySQL開發團隊親自執筆,定位於解決MySQL資料庫的常見套用瓶頸,在保持MySQL的持續可用性的前提下,挖潛各種提高性能的解決方案。本書分為三個部分。第一部分講述MySQL複製,包括高可用性和橫向擴展,第二部分介紹構建健壯的數據中心時監控和性能方面的問題,第三部分給出其他MySQL相關內容,包括雲計算和MySQL集群。目錄
目錄
Table of Contents
前言 i
第一部分 複製
第1章 引言 3
到底什麼是複製 5
那么,是否需要備份 6
什麼是監控 7
還有什麼我可以閱讀的 7
小結 8
第2章 MySQL複製原理 9
複製的基本步驟 10
配置Master 11
配置Slave 12
連線Master和Slave 13
二進制日誌簡介 14
二進制日誌記錄了什麼 15
觀察複製的動作 16
二進制日誌的結構和內容 17
使用Python管理複製 20
viii | 目錄
基本類及函式 22
作業系統 23
伺服器類 23
伺服器角色 25
建立新Slave 26
克隆Master 27
克隆Slave 29
克隆操作的腳本 31
執行常見的複製任務 33
報表 33
小結 39
第3章 二進制日誌 41
二進制日誌的結構 42
Binlog事件的結構 44
記錄語句 45
記錄數據操作語言 46
記錄數據定義語言 46
記錄查詢 47
LOAD DATA INFILE語句 52
二進制日誌過濾器 54
觸發器、事件和存儲程式 56
存儲過程 61
存儲函式 64
Events 66
特殊結構 66
非事務性的變化和錯誤處理 67
記錄事務 70
事務快取 71
使用XA進行分散式事務處理 74
目錄 | ix
二進制日誌管理 76
二進制日誌和系統崩潰安全 77
Binlog檔案輪換(Rotation) 78
事故(incident) 79
清除binlog檔案 80
mysqlbinlog實用工具 81
基本用法 81
解釋事件(Interpreting Events) 88
二進制日誌選項和變數 92
小結 94
第4章 基於複製的資料庫高可用技術 95
冗餘 96
計畫 98
Slave故障 98
Master故障 98
中繼伺服器故障 99
災難恢復 99
程式 99
熱備份 102
雙Master 107
半同步複製 116
Slave的提升 119
循環複製 134
小結 138
第5章 MySQL集群的橫向擴展 139
讀操作的橫向擴展 141
異步複製的價值 142
管理複製拓撲144
x | 目錄
套用層負載均衡器示例 147
級聯複製(Hierarchal Replication) 150
中繼伺服器的設定 151
使用Python添加中繼伺服器 152
專用Slave 153
過濾複製事件 154
使用過濾將事件分配給Slave 155
數據分片 157
分片的表示 159
數據分區 160
分片之間的均衡 161
一個分片的例子 163
數據的一致性管理 174
非級聯部署中的一致性 174
級聯部署中的一致性 176
小結 182
第6章 高級複製 183
複製架構基礎 184
中繼日誌的結構 185
複製執行緒 187
Slave執行緒的啟動和停止 188
通過Internet運行複製 189
使用內置支持建立安全複製 191
使用stunnel建立安全複製 192
細粒度控制複製 194
關於複製狀態的信息 194
處理下線的參數 201
Slave是如何處理事件的 202
管理I/O執行緒 202
目錄 | xi
SQL執行緒的處理 203
Slave的安全和恢復 208
同步,事務和資料庫崩潰問題 209
保護非事務性語句的規則 210
多源複製 211
基於行的複製 214
基於行的複製參數 215
混合模式的複製 215
處理基於行複製的事件 216
事件的執行 220
事件和觸發器 222
過濾 223
小結 225
第二部分 監控和災難恢復
第7章 監控入門 229
監控方法 230
監控的好處 231
監控系統組件 231
處理器 231
記憶體 233
磁碟 233
網路子系統 234
監控方法 235
Linux和UNIX監控 236
進程活動 237
記憶體利用率 241
磁碟利用率 243
網路活動 246
xii | 目錄
常見系統統計信息 248
使用cron自動監控 249
Mac OS X 監控 249
System profile 250
控制台(console) 252
Activity Monitor 253
Microsoft Windows監控 257
Windows Experience 257
System health report 259
Event Viewer(事件查看器) 261
Reliability Monitor 263
The Task Manager(任務管理器) 264
Performance Monitor 266
預防性維護監控 267
小結 268
第8章 監控MySQL 269
什麼是性能 270
MySQL伺服器監控 270
如何顯示MySQL性能 271
性能監控 271
SQL命令 272
mysqladmin實用工具 278
MySQL GUI工具 279
MySQL管理器 280
MySQL查詢瀏覽器 289
伺服器日誌 290
第三方工具 293
MySQL Benchmark套件 295
目錄 | xiii
資料庫性能 296
測量資料庫性能 297
資料庫最佳化的最佳實踐 308
提高性能的最佳實踐 315
一切都慢 316
慢查詢316
慢套用 316
慢複製 317
小結 317
第9章 監控存儲引擎 319
MyISAM 320
最佳化磁碟存儲 320
最佳化資料庫表 320
使用MyISAM實用工具 321
按索引順序存儲表 323
壓縮表 323
對數據表進行碎片整理 323
監控Key Cache 324
預載入Key Cache 325
使用多個Key Cache 325
其他需要考慮的參數 326
innodb328
使用SHOW ENGINE命令 329
使用InnoDB監控器 332
監控日誌檔案 335
監控緩衝池 336
監控表空間 338
使用INFORMATION_SCHEMA表 338
xiv | 目錄
其他需要考慮的參數 339
小結 340
第10章 複製監控 341
開始 341
安裝伺服器 342
包容性和排他性複製 342
複製執行緒 344
監控Master 346
Master的監控命令 346
Master狀態變數 349
監控Slave 350
Slave的監控命令 350
Slave的狀態變數 353
使用MySQL管理器監控複製 354
其他需要考慮的項 356
網路 356
監控和管理Slave滯後 356
Slave延遲的原因和預防措施 357
小結 358
第11章 複製的故障排除 361
什麼導致錯誤發生 362
Master上的問題 362
Slave上的問題 366
高級複製問題 371
排除複製故障的工具 372
最佳實踐 374
了解你的拓撲結構 374
查詢所有伺服器的狀態 376
目錄 | xv
查看日誌 376
檢查配置信息 377
有序執行系統關閉 377
在遇到錯誤後按序執行重啟 377
手動執行失敗查詢 378
常用程式 378
報告複製故障 379
小結 380
第12章 保護你的投資 383
什麼是信息保障 384
信息保障的三個套用 384
信息保障為什麼重要 385
信息完整性、災難恢復及備份的職責 385
高可用性與災難恢復 386
災難恢復 386
數據恢復的重要性 391
備份和恢復 392
備份實用程式和作業系統級的解決方案 396
InnoDB Hot Backup套用 397
物理檔案的複製 400
mysqldump工具 402
XtraBackup404
邏輯卷管理器快照 404
備份方法的比較 409
備份和MySQL複製 410
使用複製進行備份和恢復 410
PITR 411
自動備份 418
xvi | 目錄
小結 421
第13章 MySQL企業版 423
MySQL企業版入門 424
訂閱級別 425
安裝概述 426
MySQL企業組件 427
MySQL企業伺服器 427
MEM 427
MySQL產品支持 431
MySQL企業版的使用 431
安裝 432
修復監控代理問題 433
監控 434
查詢分析器 440
更多信息 443
小結 443
第三部分 高可用性環境
第14章 雲計算解決方案 447
什麼是雲計算 448
雲架構 450
雲計算是一種經濟的選擇嗎 453
雲計算實例 454
雲計算的好處 454
雲計算供應商 455
AWS 456
技術簡要概述 457
它是如何工作的 461
目錄 | xvii
Amazon Cloud工具 461
入門 465
使用磁碟 479
接下來怎么做 484
雲中的MySQL 484
MySQL複製和EC2 485
EC2中使用MySQL的最佳實踐 488
開源雲計算 490
小結 491
第15章 MySQL集群 493
什麼是MySQL集群 494
術語和組件 494
MySQL集群和MySQL有何不同 495
典型配置 495
MySQL集群的特點 496
局部和全局冗餘 497
日誌處理 498
冗餘和分散式數據 498
MySQL集群的架構 499
如何存儲數據 501
分區 504
事務管理 504
在線上操作 505
配置實例 506
入門 507
啟動MySQL集群 508
集群測試 513
關閉集群 514
xviii | 目錄
達到高可用性 514
系統恢復 517
節點恢復 518
複製 518
獲得高性能 523
高性能的注意事項 523
高性能的最佳實踐 524
小結 527
附錄A 複製建議和竅門 529
Slave停機了,怎么辦 529
檢查冗長的二進制日誌 530
利用複製在表中重建數據 530
基於語句的日誌 530
基於行的日誌 531
使用MySQL Proxy來完成多Master的複製 531
使用默認的存儲引擎 532
MySQL Cluster 多源(Multisource)複製 532
多路(Multichannel)複製故障轉移 533
使用當前資料庫來過濾 533
Slave上的列比Master上多 534
Slave上的列比Master上少 535
選擇某幾列複製到Slave 536
複製心跳 537
在環形複製中忽略伺服器 538
功能預覽:延時複製 538
功能預覽:腳本式複製 539
功能預覽:Oracle算法 540
索引 541