內容提要
《分散式資料庫架構及企業實踐——基於Mycat中間件》由資深 Mycat 專家及一線架構師、DBA 編寫而成。全書總計 8 章,首先簡單介紹了分散式系統和分散式資料庫的需求,然後講解了分散式資料庫的實現原理,並對市場上存在的各種分散式資料庫中間件進行了對比,再圍繞著如何利用 Mycat 實現分散式資料庫而展開。《分散式資料庫架構及企業實踐——基於Mycat中間件》對 Mycat 從入門到進階、從高級技術實踐到架構剖析、從網路通信協定解析到系統工作原理的方方面面進行了詳細講解,並剖析了 Mycat的 SQL 路由、跨庫聯合查詢、分散式事務及原生 MySQL、PostgreSQL 協定等核心技術。通過本書不僅可以了解 Mycat 的基本概念,掌握 Mycat 配置等技術,還能感受到 Mycat 的架構設計之美,了解 Mycat 2.0的未來規劃。
無論是對於軟體工程師、測試工程師、運維工程師、軟體架構師、技術經理,還是對於資深 IT 人士來說,《分散式資料庫架構及企業實踐——基於Mycat中間件》都極具參考價值。
目錄
第 1 章資料庫中間件與分散式資料庫的實現1
1.1 什麼是分散式系統 1
1.2 為什麼需要分散式資料庫 2
1.3 分散式資料庫的實現原理 3
1.4 Mycat 資料庫中間件簡介 5
1.4.1 Mycat 的歷史與未來規劃 5
1.4.2 Mycat 與其他中間件的區別 8
1.4.3 Mycat 的優勢 10
1.4.4 Mycat 的適用場合 11
第 2 章 Mycat 入門13
2.1 環境搭建 13
2.1.1 Windows 環境搭建 13
2.1.2 Linux 環境搭建 15
2.2 Mycat 核心概念詳解 16
2.2.1 邏輯庫(schema) 16
2.2.2 邏輯表(table) 16
2.2.3 分片節點(dataNode) 17
2.2.4 節點主機(dataHost) 17
2.3 Mycat 原理介紹 18
2.4 參與 Mycat 源碼開發 19
2.4.1 Mycat 源碼環境搭建 19
2.4.2 Mycat 源碼調試 19
第 3 章 Mycat 進階22
3.1 Mycat 配置詳解 22
3.1.1 Mycat 支持的兩種配置方式 22
3.1.2 server.xml 配置檔案 23
3.1.3 schema.xml 配置檔案 28
3.1.4 sequence 配置檔案 37
3.1.5 zk-create.yaml 配置檔案 41
3.1.6 其他配置檔案 44
3.2 Mycat 分片規則詳解 46
3.2.1 分片表與非分片表 46
3.2.2 ER 關係分片表 46
3.2.3 分片規則 rule.xml 檔案詳解 46
3.2.4 取模分片 47
3.2.5 枚舉分片 48
3.2.6 範圍分片 49
3.2.7 範圍求模算法 49
3.2.8 固定分片 hash 算法 50
3.2.9 取模範圍算法 52
3.2.10 字元串 hash 求模範圍算法 53
3.2.11 套用指定的算法 54
3.2.12 字元串 hash 解析算法 54
3.2.13 一致性 hash 算法 55
3.2.14 按日期(天)分片算法 56
3.2.15 按單月小時算法 57
3.2.16 自然月分片算法 58
3.2.17 日期範圍 hash 算法 58
3.3 Mycat 管理命令詳解 59
3.3.1 Reload 命令 61
3.3.2 Show 命令 62
第 4 章 Mycat 高級技術實戰68
4.1 用 Mycat 搭建讀寫分離 68
4.1.1 MySQL 讀寫分離 69
4.1.2 MySQL Galera Cluster 讀寫分離 73
4.1.3 SQL Server 讀寫分離 83
4.2 Mycat 故障切換 86
4.2.1 Mycat 主從切換 86
4.2.2 MySQL Galera 節點切換 99
4.3 Mycat+Percona+HAProxy+Keepalived 113
4.3.1 Mycat 113
4.3.2 Percona 集群 124
4.3.3 HAProxy 131
4.3.4 Keepalived 138
4.4 MHA+Keepalived 集群搭建 140
4.4.1 配置 MySQL 半同步方式 142
4.4.2 安裝配置 MHA 150
4.4.3 測試重構 153
4.4.4 擴展 Keepalived 155
4.5 用 ZooKeeper 搭建 Mycat 高可用集群 158
4.5.1 ZooKeeper 概述 158
4.5.2 ZooKeeper 的運用場景 161
4.5.3 ZooKeeper 在 Mycat 中的使用 163
4.6 Mycat 高可用配置 165
4.7 Mycat 註解技術 170
4.7.1 balance 註解實戰 170
4.7.2 master/slave 註解實戰 172
4.7.3 SQL 註解實戰 173
4.7.4 schema 註解實戰 176
4.7.5 dataNode 註解實戰 176
4.7.6 catlet 註解實戰 177
第 5 章 Mycat 企業運維179
5.1 Mycat 性能監控——Mycat-web 詳解 179
5.1.1 Mycat-web 簡介 179
5.1.2 Mycat-web 的配置和使用 180
5.1.3 Mycat 性能監控指標 181
5.2 Mycat 性能最佳化 183
5.3 MySQL 最佳化技術 186
5.3.1 資料庫建表設計規範 186
5.3.2 SQL 語句與索引 195
5.3.3 配置檔案 206
5.3.4 InnoDB 選擇檔案系統 212
5.3.5 系統架構 213
第 6 章 Mycat 架構剖析215
6.1 Mycat 總體架構介紹 215
6.2 Mycat 網路 I/O 架構與實現 218
6.2.1 Mycat I/O 架構概述 218
6.2.2 前端通信框架 221
6.3 Mycat 執行緒架構與實現 224
6.3.1 多執行緒基礎 224
6.3.2 Mycat 執行緒架構 226
6.4 Mycat 記憶體管理及快取架構與實現 228
6.4.1 Mycat 記憶體管理 229
6.4.2 Mycat 快取架構與實現 231
6.5 Mycat 連線池架構與實現 232
6.5.1 Mycat 連線池 232
6.5.2 Mycat 連線池架構及代碼實現234
6.6 Mycat 主從切換架構與實現 235
6.6.1 Mycat 主從切換概述 236
6.6.2 Mycat 主從切換的實現 238
第 7 章 Mycat 核心技術分析241
7.1 Mycat 分散式事務的實現 241
7.1.1 XA 規範 241
7.1.2 二階段提交 242
7.1.3 三階段提交 243
7.1.4 Mycat 中分散式事務的實現 244
7.2 Mycat SQL 路由的實現 249
7.2.1 路由的作用 249
7.2.2 SQL 解析器 250
7.2.3 路由計算 252
7.3 Mycat 跨庫 Join 的實現 260
7.3.1 全局表 261
7.3.2 ER 分片 262
7.3.3 catlet 263
7.3.4 ShareJoin 264
7.4 Mycat 數據匯聚和排序的實現 270
7.4.1 數據排序 270
7.4.2 數據匯聚 273
第 8 章 Mycat多資料庫支持原理與實現275
8.1 MySQL 協定在 Mycat 中的實現 275
8.1.1 MySQL 協定概述 275
8.1.2 Mycat 的 MySQL 協定實現 283
8.2 PostgreSQL 協定在 Mycat 中的實現 287
8.2.1 PostgreSQL 介紹 287
8.2.2 PostgreSQL 協定 288
8.2.3 PostgreSQL 實現 293
8.3 Mycat 對 JDBC 支持的實現 298
8.3.1 Oracle 配置 299
8.3.2 SQL Server 配置 300
8.3.3 MongoDB 配置 301
8.3.4 源碼分析 306