
本书从分布式数据库的背景与发展情况出发,详细、系统地介绍了国产分布式数据库SequoiaDB(巨杉数据库)的基础知识、数据库实例、架构原理、运维管理等核心技术内容,提供了性能调优和问题诊断的基本思路。此外,书中还分享了SequoiaDB的行业应用、最佳实践、工具和生态等内容。 本书旨在帮助读者更好地理解SequoiaDB的运行机制和原理,掌握运维管理的思路和实践方法,适用于普通读者入门SequoiaDB,也适用于对分布式数据库有一定认识,且具备一定运维和开发能力的读者深入了解SequoiaDB技术细节。
序 人们在谈论分布式数据库等技术时,经常用“未来”等词语描述这一新技术的应用前景,但如今回头看去,才发现“未来已来”!大部分技术人在第一次了解分布式数据库后,通常首先会问“分布式数据库能否替代Oracle”。然而,分布式数据库的设计初衷是解决全新的实际业务问题,即在传统数据库无法满足的业务场景中,与用户一同迎接数字化转型的机遇和挑战,而并非为了单纯地替代某个原有系统。时至今日,虽然传统关系型数据库在核心交易等领域深耕了40多年,但大部分纯交易场景不论在数据量还是商业模式上都没有本质变化,其业务扩展空间十分有限。在企业的数字化转型过程中,数据量会随着业务发展而快速膨胀,这在形成全新业务需求的同时,也为数据库带来了新的市场机遇。 2011年,我和几位来自IBM DB2及华为2012实验室的“数据库老兵”一同创立了巨杉数据库(SequoiaDB)公司。巨杉数据库公司是国内最早涉足并坚持发展分布式数据库的公司之一。公司创立之初的目标是在数字化浪潮中击败Hadoop体系,形成可同时兼顾大数据、联机交易、联机分析的数据基础设施。2020年,业界给这样的系统定义了一个新名词:“湖仓一体”(Data Lakehouse)。 SequoiaDB经历了10年的发展,形成了独具一格的架构体系,产品从最早1.0版的结构化/半结构化海量数据管理,到2.0版支持全类型联机的数据湖,再到3.0版整合分析引擎、提供“湖仓一体”能力,不断演进着。在2020年发布的SequoiaDB 5.0中,更是基于“湖仓一体”架构提供了跨引擎的ACID事务一致性,显著提升了海量数据场景的联机交易扩展能力。至今,SequoiaDB已经成功应用于超过100家金融企业的生产系统,单集群最大数据量达到1.2万亿条,运行时间最长的集群已经稳定上线近8年并持续扩容,成为金融行业稳固的数据基础设施。 本书希望通过系统化的内容,为大家剖析SequoiaDB的整体架构,并为广大用户提供技术运维、开发过程的有效指导。在此,我要感谢在过去10年中,持续推动我们进行新技术创新的所有客户,一个产品的成功离不开客户的参与及打磨。同时,我也要感谢与我们一同打开“湖仓一体”新赛道的合作伙伴。数据库是一个建立于完整生态之上的体系化工程,若没有上下游的紧密结合,将寸步难行。最后,我要感谢所有秉承以客户为中心、坚持长期奋斗的“巨杉人”,是你们打造、守护并深耕着这一片数据的沃土。让我们一同提升数据价值,打造世界级产品! 2021年10月19日 巨杉数据库公司 董事长&联合创始人 唐迅 前言 为什么写作本书 相信大家对于“分布式数据库”已经不再陌生。与传统关系型数据库相比,分布式数据库在提供ACID事务一致性能力的同时,拥有更灵活的扩展能力及多数据模型的处理能力。近年来,国内市场中涌现出一批优秀的分布式数据库厂商。巨杉数据库(SequoiaDB)公司作为其中的领先者,在从零开始的技术创新和数据库生态建设方面取得了令人瞩目的成就。 随着用户的规模和范围日益扩大,应用场景越来越多样,巨杉数据库公司在积极为用户提供服务支持的同时,也希望能够通过一本系统化的图书,让更多的技术人员认识和理解SequoiaDB的原理架构,并熟练掌握安装部署、使用、运维和调优等实操技能,进而提升其自主解决问题的能力和效率。 读者对象 本书适合所有数据库技术从业人员及在校学生,特别是对分布式数据库有一定了解和使用经验的DBA和数据库开发人员阅读,他们可以通过本书了解更多有关分布式数据库架构原理与运维管理的知识。 本书的主要内容 本书共分7章,从分布式数据库行业发展情况开始,到分布式数据库标杆产品SequoiaDB(巨杉数据库)的介绍,涵盖了SequoiaDB部署、管理和开发的方方面面。 ? 第1章简要讲述分布式数据库的行业背景、发展轨迹和发展方向,以及巨杉数据库公司的简介和产品概述。 ? 第2章介绍SequoiaDB目前在行业中的应用和最佳实践案例。 ? 第3章介绍SequoiaDB用户需要掌握的基础知识,包括如何安装、部署,并上手操作MySQL数据库实例和Shell的相关内容。 ? 第4章介绍多种数据库实例的使用和开发。SequoiaDB目前充分兼容包括MySQL、MariaDB、PostgreSQL、Apache Spark、S3、NAS、SDB JSON在内的多种接口,应用程序基本可以在零改动的基础上进行数据库迁移。 ? 第5章主要介绍SequoiaDB的节点、复制、分区、分布式事务、数据模型、时间序列等系统架构和内核原理等相关内容。 ? 第6章从运维的角度介绍SequoiaDB管理的很多方面,包括数据迁移、扩容/缩容、备份/恢复、监控、故障诊断、性能调优等。 ? 第7章介绍SequoiaDB的数据管理工具,以及社区生态建设情况。 本书所介绍的内容具有较强的实用性,贴近SequoiaDB用户的使用和开发需求。
第 1章 分布式数据库行业发展 ......................................................................................... 1 1.1 分布式数据库的行业背景与发展轨迹 ...................................................................1 1.1.1 螺旋上升、新旧交替的数据库历史 ..........................................................2 1.1.2 新一代分布式数据库的发展方向:湖仓一体架构 ..................................3 1.2 巨杉数据库公司及其产品简介...............................................................................5 1.2.1 SequoiaDB 的产品概述 ..............................................................................5 1.2.2 SequoiaDB 的核心特性 ..............................................................................7 1.2.3 SequoiaDB 的整体架构 ............................................................................ 11 第 2章 SequoiaDB 行业应用及最佳实践 ....................................................................... 14 2.1 企业应用场景 ........................................................................................................14 2.1.1 分布式联机交易业务 ...............................................................................14 2.1.2 数据中台服务 ...........................................................................................16 2.1.3 内容管理服务 ...........................................................................................18 2.2 企业级应用案例 ....................................................................................................20 2.2.1 某银行的分布式数据库实践....................................................................20 SequoiaDB 分布式数据库权威指南 【X】 2.2.2 某省级农信社的联机交易业务应用实践 ................................................23 第 3章 SequoiaDB 基础知识 .......................................................................................... 30 3.1 SequoiaDB 的安装和部署 .....................................................................................30 3.1.1 软硬件环境需求 .......................................................................................30 3.1.2 Linux 的推荐配置 .....................................................................................36 3.1.3 数据库引擎的安装 ...................................................................................43 3.1.4 集群模式部署 ...........................................................................................45 3.1.5 Docker 模式部署 .......................................................................................48 3.2 MySQL 实例的基本操作 ......................................................................................52 3.2.1 配置 SequoiaDB 服务 ...............................................................................52 3.2.2 启动存储集群 ...........................................................................................53 3.2.3 启动 MySQL 服务 ....................................................................................54 3.2.4 创建表和索引 ...........................................................................................55 3.2.5 CRUD ........................................................................................................57 3.3 SDB Shell 模式 ......................................................................................................58 3.3.1 启动 Shell ..................................................................................................58 3.3.2 SDB Shell 的基本操作 .............................................................................60 3.3.3 使用 SDB Shell 执行脚本 ........................................................................61 第 4章 数据库实例 ......................................................................................................... 64 4.1 MySQL 实例 ..........................................................................................................64 4.1.1 MySQL 实例的安装和部署 .....................................................................65 4.1.2 MySQL 实例的使用方法 .........................................................................66 4.1.3 MySQL 开发 — JDBC 驱动程序 ...........................................................69 4.1.4 MySQL 开发 — ODBC 驱动程序 .........................................................72 4.2 PostgreSQL 实例 ....................................................................................................75 4.2.1 PostgreSQL 实例的安装和部署 ...............................................................75 4.2.2 PostgreSQL 实例的使用方法 ...................................................................78 4.2.3 PostgreSQL 开发 — JDBC 驱动程序 ....................................................83 4.2.4 PostgreSQL 开发 — ODBC 驱动程序 ...................................................86 目录 【XI】 4.3 SparkSQL 实例 ......................................................................................................89 4.3.1 SparkSQL 实例的安装 ..............................................................................90 4.3.2 SparkSQL 实例的使用方法 ......................................................................90 4.3.3 Spark 命令行的连接 .................................................................................94 4.3.4 Spark 开发 — JDBC 驱动程序 ..............................................................97 4.4 MariaDB 实例 ...................................................................................................... 106 4.4.1 MariaDB 实例的安装和部署 ................................................................. 107 4.4.2 MariaDB 实例的使用方法 ..................................................................... 109 4.5 S3 实例 ................................................................................................................. 111 4.5.1 S3 实例的安装操作 ................................................................................ 111 4.5.2 S3 实例的基本读/写操作 ....................................................................... 115 4.5.3 S3 实例的命令行连接 ............................................................................ 117 4.5.4 S3 实例的 Java 开发样例 ....................................................................... 120 4.6 SequoiaFS 文件系统实例 .................................................................................... 124 4.6.1 文件系统实例的安装和部署.................................................................. 125 4.6.2 挂载目录 ................................................................................................. 127 4.6.3 数据设计 ................................................................................................. 133 4.6.4 API ........................................................................................................... 139 4.7 JSON 实例 ............................................................................................................ 141 4.7.1 JSON 实例的安装和部署 ....................................................................... 142 4.7.2 JSON 实例的使用 ................................................................................... 142 4.7.3 JSON 实例的开发 ................................................................................... 142 第 5章 架构和数据模型 ................................................................................................ 148 5.1 节点 ...................................................................................................................... 149 5.1.1 SQL 节点 ................................................................................................. 149 5.1.2 协调节点 ................................................................................................. 150 5.1.3 数据节点 ................................................................................................. 152 5.1.4 编目节点 ................................................................................................. 154 5.1.5 资源管理节点 ......................................................................................... 156 5.2 复制 ...................................................................................................................... 157 5.2.1 复制组的原理 ......................................................................................... 158 SequoiaDB 分布式数据库权威指南 【XII】 5.2.2 部署复制组 ............................................................................................. 163 5.2.3 复制组选举 ............................................................................................. 167 5.2.4 复制组监控 ............................................................................................. 169 5.2.5 主备一致性 ............................................................................................. 172 5.3 分区 ...................................................................................................................... 174 5.3.1 数据库分区的原理 ................................................................................. 175 5.3.2 分区配置 ................................................................................................. 177 5.3.3 分区索引 ................................................................................................. 180 5.3.4 多维分区 ................................................................................................. 181 5.4 分布式事务 .......................................................................................................... 183 5.4.1 事务日志 ................................................................................................. 184 5.4.2 二阶段提交 ............................................................................................. 186 5.4.3 隔离级别 ................................................................................................. 188 5.4.4 事务配置 ................................................................................................. 191 5.5 数据模型 .............................................................................................................. 195 5.5.1 数据模型概述 ......................................................................................... 195 5.5.2 文档记录 ................................................................................................. 199 5.5.3 集合 ......................................................................................................... 201 5.5.4 集合空间 ................................................................................................. 201 5.5.5 大对象 ..................................................................................................... 204 5.5.6 索引 ......................................................................................................... 208 5.5.7 全文索引 ................................................................................................. 212 5.5.8 序列 ......................................................................................................... 218 5.6 时间序列 .............................................................................................................. 225 5.6.1 逻辑时间 ................................................................................................. 226 5.6.2 工具 ......................................................................................................... 226 第 6章 进阶使用与运维 ................................................................................................ 237 6.1 数据迁移 .............................................................................................................. 237 6.1.1 从 CSV 文件迁移至 SequoiaDB ............................................................ 238 6.1.2 从 JSON 文件迁移至 SequoiaDB ........................................................... 240 6.1.3 实时的第三方数据复制 ......................................................................... 241 目录 【XIII】 6.1.4 数据导出 ................................................................................................. 248 6.2 版本升级 .............................................................................................................. 253 6.2.1 兼容性列表 ............................................................................................. 254 6.2.2 离线升级 ................................................................................................. 255 6.2.3 滚动升级 ................................................................................................. 256 6.3 扩容/缩容 ............................................................................................................. 257 6.3.1 新增服务器 ............................................................................................. 257 6.3.2 在服务器内新增节点 ............................................................................. 258 6.3.3 集群服务器的缩容 ................................................................................. 262 6.3.4 集群服务器内节点的缩容 ..................................................................... 266 6.4 备份与恢复 .......................................................................................................... 268 6.4.1 备份与恢复的原理 ................................................................................. 268 6.4.2 数据的备份 ............................................................................................. 270 6.4.3 数据的恢复 ............................................................................................. 271 6.4.4 日志归档 ................................................................................................. 275 6.5 数据库的监控 ...................................................................................................... 277 6.5.1 监控节点 ................................................................................................. 277 6.5.2 监控集群 ................................................................................................. 278 6.5.3 监控工具 sdbtop ...................................................................................... 280 6.6 高可用性与容灾 .................................................................................................. 288 6.6.1 同城双中心部署 ..................................................................................... 289 6.6.2 两地三中心部署 ..................................................................................... 303 6.6.3 三地五中心部署 ..................................................................................... 304 6.6.4 容灾工具的使用 ..................................................................................... 306 6.7 故障诊断 .............................................................................................................. 325 6.7.1 热点问题的处理 ..................................................................................... 325 6.7.2 因 CPU 占用率过高所导致的读/写延迟增加及其相应的处理方法 ..... 332 6.7.3 磁盘 I/O 负载过高及其相应的处理方法 .............................................. 335 6.8 性能调优 .............................................................................................................. 336 6.8.1 性能瓶颈的诊断 ..................................................................................... 337 6.8.2 集群性能的监控 ..................................................................................... 339 SequoiaDB 分布式数据库权威指南 【XIV】 第 7章 工具和生态 ....................................................................................................... 343 7.1 数据管理工具 ...................................................................................................... 343 7.2 SAC ...................................................................................................................... 344 7.3 SequoiaDB Cloud 多云管理平台 ........................................................................ 344 7.4 巨杉生态社区 ...................................................................................................... 345 7.4.1 巨杉学的目标 ......................................................................................... 345 7.4.2 巨杉学的优势 ......................................................................................... 346 7.4.3 关于认证考试 ......................................................................................... 346