讲解分布式数据库的书并不多,讲解其架构及企业实践的就更少了。
本书基于国内知名的开源分布式数据库中间件Mycat讲解了如何实现分布式数据库,很有实践及借鉴意义。
《分布式数据库架构及企业实践——基于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
Mycat是一款强大的数据库中间件,是当下热门的移动互联网和云计算项目的必备基础中间件之一,不仅可以用于读写分离、分表分库及容灾备份,还可以用于多租户应用开发及云平台基础设施建设,让架构本身具备很强的适应性和灵活性。本书作者均拥有多年软件研发经验,是国内知名开源分布式数据库中间件Mycat的核心成员,其中冰风影是Dataguru的高级特约讲师。本书兼具实用性和独特性,非常值得入手一读。
——黄志洪 ITPUB社区炼数成金社区创始人
MySQL在分布式领域的短板造就了数据库中间件的繁荣,而在数据库中间件产品中,Mycat以其独特的设计理念风靡于数据库行业,成为开源数据库中间件的理想选择,成为DBA从业人员急需掌握的技能。相信Mycat会成为你的好伙伴!
——张见蓬 尚观科技执行董事
Mycat是一款非常优秀的数据库中间件,华泰证券在互联网架构转型的过程中与Mycat社区合作紧密,采用分布式数据库解决了以往的难题。非常感谢Mycat这样的优秀国产开源软件,祝愿Mycat越做越好!
——樊建 华泰证券平台架构总监
对于飞速发展的企业IT系统来说,数据库的开源和分布式一直是有挑战性的课题,而大部分企业IT团队的基础软件研发资源和时间相对有限,Mycat是开源分布式数据库架构中经济而有效的可选推荐方案之一。
——周辉 顺丰科技数据中心副总监
在当今发展迅猛的DT时代,如何真正收集、存储、管理和利用海量交易数据,成了企业及企业信息化提供商共同面对的难题,我在本书中找到了有效可行的方法,本书同样可以成为你攻克难题的利器!
——陈柏宇 上海恰为思信息科技有限公司创始人