第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