部分 基礎篇
         章 MySQL的安裝與配置2
         1.1MySQL的下載2
         1.1.1在Windows平颱下下載MySQL3
         1.1.2在Linux平颱下下載MySQL3
         1.2MySQL的安裝5
         1.2.1在Windows平颱下安裝MySQL5
         1.2.2在Linux平颱下安裝MySQL8
         1.3MySQL的配置12
         1.3.1Windows平颱下配置MySQL12
         1.3.2Linux平颱下配置MySQL13
         1.4啓動和關閉MySQL服務13
         1.4.1在Windows平颱下啓動和關閉MySQL服務13
         1.4.2在Linux平颱下啓動和關閉MySQL服務13
         1.5小結14
         第2章 SQL基礎15
         2.1SQL簡介15
         2.2(My)SQL使用入門15
         2.2.1SQL分類15
         2.2.2DDL語句16
         2.2.3DML語句23
         2.2.4DCL語句33
         2.3幫助的使用34
         2.3.1按照層次看幫助34
         2.3.2快速查閱幫助35
         2.4查詢元數據信息36
         2.5小結37
         第3章MySQL支持的數據類型38
         3.1數值類型38
         3.2日期時間類型43
         3.3字符串類型49
         3.3.1CHAR和VARCHAR類型50
         3.3.2BINARY和VARBINARY類型51
         3.3.3ENUM類型51
         3.3.4SET類型52
         3.4JSON類型52
         3.5小結54
         第4章MySQL中的運算符55
         4.1算術運算符55
         4.2比較運算符56
         4.3邏輯運算符59
         4.4位運算符60
         4.5運算符的優先級61
         4.6小結62
         第5章常用函數63
         5.1字符串函數63
         5.2數值函數66
         5.3日期和時間函數68
         5.4流程函數71
         5.5JSON函數73
         5.5.1創建JSON函數74
         5.5.2查詢JSON函數75
         5.5.3修改JSON的函數79
         5.5.4查詢JSON元數據函數81
         5.5.5JSON工具函數83
         5.6窗口函數86
         5.6.1ROW_NUMBER()87
         5.6.2RANK()/DENSE_RANK()89
         5.6.3PERCENT_RANK()/CUME_DIST()89
         5.6.4NFILE(N)90
         5.6.5NTH_VALUE(expr,N)91
         5.6.6LAG(expr,N)/LEAD(expr,N)91
         5.6.7FIRST_VALUE(expr)/LAST_VALUE(expr)92
         5.6.8聚閤函數作為窗口函數93
         5.7其他常用函數93
         5.8小結95
         第二部分開發篇
         第6章錶類型(存儲引擎)的選擇98
         6.1MySQL存儲引擎概述98
         6.2各種存儲引擎的特性100
         6.2.1MyISAM101
         6.2.2InnoDB102
         6.2.3MEMORY108
         6.2.4MERGE109
         6.2.5TokuDB111
         6.3如何選擇閤適的存儲引擎112
         6.4小結113
         第7章選擇閤適的數據類型114
         7.1CHAR與VARCHAR114
         7.2TEXT與BLOB115
         7.3浮點數與定點數118
         7.4日期類型選擇120
         7.5小結120
         第8章字符集121
         8.1字符集概述121
         8.2Unicode簡述121
         8.3漢字及一些常見字符集123
         8.4怎樣選擇閤適的字符集124
         8.5MySQL支持的字符集簡介125
         8.6MySQL字符集的設置126
         8.6.1服務器字符集和排序規則126
         8.6.2數據庫字符集和排序規則127
         8.6.3錶字符集和排序規則127
         8.6.4列字符集和排序規則128
         8.6.5連接字符集和排序規則128
         8.7字符集的修改步驟129
         8.8小結129
         第9章索引的設計和使用130
         9.1索引概述130
         9.2設計索引的原則131
         9.3索引設計的誤區132
         9.4索引設計的一般步驟132
         9.5BTREE索引與HASH索引133
         9.6索引在MySQL 8.0中的改進134
         9.6.1不可見索引134
         9.6.2倒序索引135
         9.7小結136
         0章 開發常用數據庫對象137
         10.1視圖137
         10.1.1什麼是視圖137
         10.1.2視圖操作137
         10.1.3創建或者修改視圖137
         10.1.4刪除視圖139
         10.1.5查看視圖139
         10.2存儲過程和函數140
         10.2.1什麼是存儲過程和函數141
         10.2.2存儲過程和函數的相關操作141
         10.2.3創建、修改存儲過程或者函數141
         10.2.4刪除存儲過程或者函數144
         10.2.5查看存儲過程或者函數144
         10.2.6變量的使用146
         10.2.7定義條件和處理146
         10.2.8光標的使用148
         10.2.9流程控製149
         10.2.10事件調度器152
         10.3觸發器155
         10.3.1創建觸發器155
         10.3.2刪除觸發器157
         10.3.3查看觸發器157
         10.3.4觸發器的使用158
         10.4小結159
         1章 事務控製和鎖定語句160
         11.1LOCK TABLES和UNLOCK TABLES160
         11.2事務控製161
         11.3分布式事務的使用166
         11.3.1分布式事務的原理166
         11.3.2分布式事務的語法166
         11.3.3存在的問題168
         11.4小結171
         2章 SQL中的安全問題172
         12.1SQL注入簡介172
         12.2應用開發中可以采取的應對措施173
         12.2.1PrepareStatement+Bind-Variable173
         12.2.2使用應用程序提供的轉換函數174
         12.2.3自己定義函數進行校驗174
         12.3小結175
         3章 SQL Mode及相關問題176
         13.1MySQL SQL Mode簡介176
         13.2SQL Mode的常見功能178
         13.3常用的SQL Mode180
         13.4SQL Mode在遷移中如何使用182
         13.5小結183
         4章 MySQL分區184
         14.1分區概述184
         14.2分區類型185
         14.2.1RANGE分區187
         14.2.2LIST 分區188
         14.2.3COLUMNS 分區189
         14.2.4HASH分區192
         14.2.5KEY分區195
         14.2.6子分區196
         14.2.7MySQL分區處理NULL值的方式197
         14.3分區管理199
         14.3.1RANGE與LIST分區管理199
         14.3.2HASH與KEY分區管理205
         14.3.3交換分區206
         14.4小結208
         第三部分優化篇
         5章 SQL優化210
         15.1優化SQL語句的一般步驟210
         15.1.1通過show status命令瞭解各種SQL的執行頻率210
         15.1.2定位執行效率較低的SQL語句211
         15.1.3通過EXPLAIN分析低效SQL的執行計劃211
         15.1.4通過show profile分析SQL216
         15.1.5通過trace分析優化器如何選擇執行計劃219
         15.1.6確定問題並采取相應的優化措施220
         15.2索引問題220
         15.2.1索引的存儲分類220
         15.2.2MySQL如何使用索引222
         15.2.3查看索引使用情況231
         15.3簡單實用的優化方法231
         15.3.1定期分析錶和檢查錶232
         15.3.2定期優化錶233
         15.4常用SQL的優化233
         15.4.1大批量插入數據234
         15.4.2優化INSERT語句235
         15.4.3優化ORDER BY語句235
         15.4.4優化GROUP BY語句239
         15.4.5優化JOIN操作239
         15.4.6優化嵌套查詢243
         15.4.7MySQL如何優化OR條件245
         15.4.8優化分頁查詢246
         15.4.9使用SQL提示248
         15.5直方圖250
         15.5.1什麼是直方圖250
         15.5.2直方圖的分類251
         15.5.3直方圖實例應用252
         15.5.4直方圖小結256
         15.6使用查詢重寫256
         15.7常用SQL技巧259
         15.7.1正則錶達式的使用259
         15.7.2巧用RAND()提取隨機行261
         15.7.3利用GROUP BY的WITH ROLLUP子句262
         15.7.4用BIT GROUP FUNCTIONS做統計263
         15.7.5數據庫名、錶名大小寫問題265
         15.7.6使用外鍵需要注意的問題265
         15.8小結266
         6章 鎖問題267
         16.1MySQL鎖概述267
         16.2MyISAM錶鎖268
         16.2.1查詢錶級鎖爭用情況268
         16.2.2MySQL錶級鎖的鎖模式268
         16.2.3如何加錶鎖269
         16.2.4並發插入(Concurrent Inserts)271
         16.2.5MyISAM的鎖調度272
         16.3InnoDB鎖問題273
         16.3.1背景知識273
         16.3.2獲取InnoDB行鎖爭用情況275
         16.3.3InnoDB的行鎖模式及加鎖方法276
         16.3.4InnoDB行鎖實現方式279
         16.3.5Next-Key鎖283
         16.3.6恢復和復製的需要,對InnoDB鎖機製的影響284
         16.3.7InnoDB在不同隔離級彆下的一緻性讀及鎖的差異287
         16.3.8什麼時候使用錶鎖288
         16.3.9關於死鎖289
         16.4小結294
         7章 優化MySQL Server296
         17.1MySQL體係結構概覽296
         17.2MySQL內存管理及優化298
         17.2.1內存優化原則298
         17.2.2MyISAM內存優化298
         17.2.3InnoDB內存優化301
         17.2.4調整用戶服務綫程排序緩存區305
         17.3InnoDB log機製及優化305
         17.3.1InnoDB重做日誌305
         17.3.2innodb_flush_log_at_trx_commit的設置306
         17.3.3設置log file size,控製檢查點307
         17.3.4調整innodb_log_buffer_size308
         17.4調整MySQL並發相關的參數308
         17.4.1調整max_connections,提高並發連接308
         17.4.2調整back_log309
         17.4.3調整table_open_cache309
         17.4.4調整thread_cache_size309
         17.4.5innodb_lock_wait_timeout的設置309
         17.5持久化全局變量309
         17.6使用資源組310
         17.7小結312
         8章 磁盤I/O問題313
         18.1使用固態硬盤313
         18.2使用磁盤陣列314
         18.2.1常見RAID級彆及其特性314
         18.2.2如何選擇RAID級彆315
         18.3虛擬文件捲或軟RAID315
         18.4使用Symbolic Links分布I/O315
         18.5禁止操作係統更新文件的atime屬性316
         18.6調整I/O調度算法316
         18.7RAID卡電池充放電問題318
         18.7.1什麼是RAID卡電池充放電318
         18.7.2RAID卡緩存策略319
         18.7.3如何應對RAID卡電池充放電帶來的I/O性能波動321
         18.8NUMA架構優化322
         18.9小結325
         9章 應用優化326
         19.1優化數據錶的設計326
         19.1.1優化錶的數據類型326
         19.1.2通過拆分提高錶的訪問效率328
         19.1.3逆規範化329
         19.2數據庫應用優化330
         19.2.1使用連接池330
         19.2.2減少對MySQL的訪問330
         19.2.3負載均衡331
         19.3小結331
         第20章 PS/SYS數據庫332
         20.1Performance Schema庫332
         20.1.1如何開啓PS庫332
         20.1.2PS庫的錶333
         20.2SYS 庫335
         20.2.1SYS庫的對象335
         20.2.2SYS對象的實際應用336
         20.3小結340
         第21章 故障診斷341
         21.1故障診斷和處理的原則341
         21.2故障處理一般流程343
         21.2.1故障發現343
         21.2.2故障定位345
         21.2.3故障解決346
         21.3典型故障案例349
         21.3.1案例1349
         21.3.2案例2353
         21.4小結356
         第四部分管理維護篇
         第22章 MySQL不錯安裝和升級358
         22.1Linux/UNIX平颱下的安裝358
         22.1.1安裝包比較358
         22.1.2安裝二進製包359
         22.1.3安裝源碼包359
         22.1.4參數設置方法360
         22.2升級MySQL361
         22.3小結363
         第23章 MySQL中的常用工具364
         23.1MySQL官方工具364
         23.1.1mysql(客戶端連接工具)364
         23.1.2mysqladmin(MySQL管理工具)371
         23.1.3mysqlbinlog(日誌管理工具)371
         23.1.4mysqlcheck(錶維護工具)378
         23.1.5mysqldump(數據導齣工具)380
         23.1.6mysqlpump(並行的數據導齣工具)384
         23.1.7mysqlimport(數據導入工具)385
         23.1.8mysqlshow(數據庫對象查看工具)385
         23.1.9perror(錯誤代碼查看工具)387
         23.1.10MySQL Shell387
         23.2Percona工具包390
         23.2.1pt-archiver(數據歸檔工具)391
         23.2.2pt-config-diff(參數對比工具)393
         23.2.3pt-duplicate-key-checker(檢查冗餘索引工具)394
         23.2.4pt-find(查找工具)395
         23.2.5pt-heartbeat(監控主從延遲工具)395
         23.2.6pt-kill(殺死會話工具)397
         23.2.7pt-online-schema-change(在綫修改錶結構工具)397
         23.2.8pt-query-digest(SQL分析工具)399
         23.2.9pt-table-checksum(數據檢驗工具)401
         23.2.10pt-table-sync(數據同步工具)402
         23.3小結403
         第24章 MySQL日誌404
         24.1錯誤日誌404
         24.2二進製日誌405
         24.2.1日誌的位置和格式405
         24.2.2日誌的讀取406
         24.2.3日誌的刪除407
         24.2.4日誌的事件411
         24.2.5日誌閃迴412
         24.3查詢日誌415
         24.3.1日誌的位置和格式415
         24.3.2日誌的讀取416
         24.4慢查詢日誌416
         24.4.1文件位置和格式416
         24.4.2日誌的讀取417
         24.4.3Anemometer簡介419
         24.5小結421
         第25章 備份與恢復422
         25.1備份/恢復策略422
         25.2邏輯備份和恢復422
         25.2.1備份423
         25.2.2完全恢復425
         25.2.3基於時間點恢復427
         25.2.4基於位置恢復427
         25.2.5並行恢復427
         25.3物理備份和恢復428
         25.3.1冷備份和熱備份428
         25.3.2MyISAM存儲引擎的熱備份429
         25.3.3InnoDB存儲引擎的熱備份429
         25.4錶的導入和導齣438
         25.4.1導齣438
         25.4.2導入442
         25.5小結445
         第26章 MySQL權限與安全446
         26.1MySQL權限管理446
         26.1.1權限係統的工作原理446
         26.1.2權限錶的存取446
         26.1.3賬號管理449
         26.2MySQL安全問題461
         26.2.1操作係統相關的安全問題461
         26.2.2數據庫相關的安全問題463
         26.3其他安全設置選項471
         26.3.1密碼插件471
         26.3.2safe-user-create472
         26.3.3錶空間加密473
         26.3.4skip-grant-tables474
         26.3.5skip-networking474
         26.3.6skip-show-database475
         26.4小結475
         第27章 MySQL監控476
         27.1如何選擇一個監控方案476
         27.1.1選擇何種監控方式476
         27.1.2如何選擇適閤自己的監控工具477
         27.2常用的網絡監控工具477
         27.2.1Open-Falcon簡介477
         27.2.2Nagios簡介479
         27.2.3Zabbix簡介480
         27.2.4幾種常見開源軟件比較481
         27.3Zabbix 部署481
         27.3.1Zabbix Server482
         27.3.2Zabbix Server配置與啓動482
         27.3.3配置Zabbix Web服務端483
         27.3.4Zabbix Agent安裝和配置485
         27.3.5PMP插件介紹和部署486
         27.3.6Zabbix Web端操作489
         27.4性能醫生orzdba491
         27.4.1orzdba安裝491
         27.4.2orzdba使用492
         27.5小結492
         第28章 MySQL常見問題和應用技巧493
         28.1忘記MySQL的root密碼493
         28.2數據目錄磁盤空間不足的問題494
         28.3mysql.sock丟失後如何連接數據庫495
         28.4從mysqldump文件抽取需要恢復的錶496
         28.5使用innobackupex備份恢復單錶497
         28.6分析BINLOG,找齣寫的熱點錶498
         28.7在綫DDL499
         28.8小結502
         第29章 自動化運維係統的開發503
         29.1MySQL自動化運維背景503
         29.2CMDB係統搭建504
         29.2.1CMDB數據庫504
         29.2.2批量管理係統505
         29.2.3後颱API511
         29.3任務調度係統515
         29.3.1Celery安裝515
         29.3.2Celery任務部署516
         29.3.3Flower監控518
         29.4客戶端搭建519
         29.4.1Vue.js簡介519
         29.4.2Vue項目搭建520
         29.5自動化運維平颱實戰525
         29.5.1搭建CMDB525
         29.5.2搭建任務調度平颱528
         29.5.3搭建客戶端529
         29.5.4項目演示532
         29.6小結532
         第五部分架構篇
         第30章MySQL復製534
         30.1復製概述534
         30.1.1復製中的各類文件536
         30.1.23種復製方式537
         30.1.3復製的4種常見架構540
         30.2復製搭建543
         30.2.1異步復製543
         30.2.2多綫程復製547
         30.2.3增強半同步復製553
         30.3GTID(Global Transaction Identifier)558
         30.3.1格式與存儲558
         30.3.2gtid_purged561
         30.3.3復製搭建565
         30.3.4主從切換571
         30.3.5常見問題572
         30.4主要復製啓動選項576
         30.4.1log-slave-updates576
         30.4.2read-only/super_read_only576
         30.4.3指定復製的數據庫或者錶577
         30.4.4slave-skip-errors579
         30.5日常管理維護579
         30.5.1查看從庫復製狀態和進度579
         30.5.2主從復製問題集錦580
         30.5.3多主復製時的自增長變量衝突問題582
         30.5.4如何提高復製的性能584
         30.6小結588
         第31章高可用架構589
         31.1MHA架構589
         31.1.1安裝部署MHA591
         31.1.2應用連接配置598
         31.1.3自動failover605
         31.1.4網絡問題觸發的failover操作614
         31.1.5手動failover614
         31.1.6在綫進行切換615
         31.1.7修復宕掉的Master617
         31.2MGR架構617
         31.2.1安裝部署MGR618
         31.2.2監控625
         31.2.3primary成員切換626
         31.2.4重要特性628
         31.2.5常見問題629
         31.3InnoDB Cluster636
         31.3.1安裝部署637
         31.3.2初始化MySQL Router642
         31.3.3集群Metadata643
         31.3.4集群成員角色切換644
         31.3.5集群刪除/增加節點646
         31.3.6重新加入節點648
         31.4小結649
         第32章MySQL中間件650
         32.1MySQL Router650
         32.1.1MySQL Router的安裝651
         32.1.2MySQL Router的初始化653
         32.1.3MySQL Router策略驗證656
         32.2Cetus架構658
         32.2.1Cetus的安裝配置659
         32.2.2Cetus的使用670
         32.2.3Cetus日誌文件674
         32.2.4Cetus的後端管理675
         32.2.5Cetus的路由策略678
         32.2.6常見問題681
         32.3小結682
      · · · · · ·     (
收起)