最近要做一些基于 TiDB 数据库的测试,需要搭建一套基于 TiDB 的主从集群容灾架构,使用 3+3 共 6 个节点的虚拟机环境,即每套 TiDB 集群使用 3 个节点的混合部署方案。
从开始部署到部署完成,总共花费 10 分钟左右,我部署完成了 2 套 TiDB 集群,相当于一套集群的部署花费约 5 分钟的时间(两套集群是先后部署,并非并行部署)。部署完成后,我同事惊讶于这效率,他才刚去楼下抽完一根烟。。
有感而发吧,这里我也想做一个简单的总结,其实以前也部署过一些别的国产分布式数据库,对比下来,TiDB 确实是我目前遇到的最容易最快速安装部署的分布式数据库产品。下面我想针对我所使用的分布式数据库的安装部署以及 TiDB 的安装部署做一个比较,分析为何 TiDB 的安装部署能够如此之快?
典型案例:某基于 Hadoop 底座的国产数据库安装部署—约 2 小时
印象较深的一款国产数据库,属于 SQL on Hadoop 架构体系。安装这样一款数据库的前提是你必须得先安装 Hadoop,比较常用的 Hadoop 发行版如 Cloudera。暂且不说数据库软件的安装,单纯 CDH 的安装,估摸着怎么也得将近1小时了。安装 CDH 的主要步骤有:
- 安装前配置。配置hostname、配置节点ssh免密码、关闭防火墙、关闭selinux、配置时钟同步、调整swap等。
- 安装 Cloudera Manager。
- 准备Cloudera parcel文件。
- 启动Cloudera Manager服务,打开 CDH Manager页面。
- 从网页开始安装所需的 Hadoop 组件,必须的有HDFS、YARN、Zookeeper、HBase、Hive。
- 启动 Hadoop 相关组件。
接着开始安装数据库软件,主要步骤有:
- 创建数据库用户密码。
- 安装 JDK。
- 安装数据库依赖的软件包,如apr、pdsh、protobuf等共 20 多个依赖包。
- 编辑数据库安装配置文件。
- 开始安装数据库软件。
- 启动数据库服务。
上述步骤完成后,大约也需要1小时时间。所以安装一样一套基于 Hadoop 的数据库软件正常需要 2 小时左右,如果对安装过程不太熟悉,或者是安装过程中遇到一些依赖包不存在或不匹配的问题,耗费半天的时间也不是没有可能的。
为何有些数据库安装需要花费大量时间
上述反面案例是我真实遇到过的产品,因此深有感触。底层基于 Hadoop 是导致安装部署麻烦且耗时久的一个原因,但是整体耗时达到小时级别是多个方面造成的,我把这些原因总结为如下几点。
- 安装部署文档不清晰。每个数据库产品应该都有一个专门的安装部署文档,这个部署文档应该足够清晰明了,以至于任何一个数据库小白人员拿到这样一个文档也能够自主完成数据库软件的安装部署。这话听起来似乎没什么,但根据笔者个人经验来说不少部署文档还做不到这一点。
- 依赖包准备不充分。包括以上提到的数据库,无论从底层 Hadoop 还是数据库软件本身,都有大量的软件依赖包,对于离线安装部署环境,往往会因此这些依赖包的缺失或版本问题而浪费大量的准备时间。
- 安装前环境配置太复杂。每个数据库安装前都需要对环境做一些检查和配置,分布式数据库相对来说天生就更复杂一些,配置hosts、时钟同步、selinux关闭、swap配置、防火墙关闭、ssh免密,这些基础操作是很多分布式数据库都必须的提前条件。如果产品安装工具能自动化处理这些检查和配置,将对大大节省这一块时间。
- 依赖其他开源组件众多。有些数据库在安装前需要依赖一些其他的组件,比如上面提到的这款数据库安装前需要先安装 CDH。还有一些数据库依赖LDAP、Zookeeper 等,这些组件的安装自然也增加了整个数据库安装的时间了。
- 没有经历磨练的安装工具。有些数据库号称有各种安装工具,包括图形化安装工具,但真正用起来你却发现会遇到各种安装不顺利的情况。究其原因,还是因为这些安装工具缺少打磨和改进。包括数据库厂商在内的不少认为,安装这个事情本来也不是经常做的,慢点也没事,也是有这样的想法,一些数据库的安装工具迟迟得不到改进。
为何 TiDB 安装部署如此之快
5 分钟安装一套 TiDB 集群,回想一下我大概的执行步骤及耗时如下:
- 安装前准备(约1分钟)。包括创建tidb用户并配置sudo权限、找一个节点配置tidb用户到所有节点的ssh免密。
- 安装tiup(秒级)。解压安装包并执行安装 tiup 命令,秒级耗时。
- 生成template拓扑文件(秒级)。使用tiup cluster template 一条命令完成,生成一个模板配置文件,秒级耗时。
- 检查环境配置并修复(约1分钟)。使用tiup cluster check检查环境配置,如有配置不当,使用tiup cluster check --apply一键修改配置。
- 编辑拓扑文件(约1分钟)。基本上只需要修改安装目录的磁盘位置和安装的机器IP,其余配置均可使用默认值无须改动。
- 部署集群(约1分钟)。使用 tiup cluster deploy 一条命令执行部署,耗时约1分钟。
- 启动集群(约1分钟)。使用 tiup cluster start 一条命令启动集群,耗时约1分钟。
可以看到,整个 TiDB 的安装部署只需要差不多 5 分钟的时间即可完成,里面的每一个步骤都非常的简单明了,除了第1步安装前创建用户和配置免密需要手动执行以外,后续的每个步骤都是一条命令完成的事情。再对比前面我们提到的为什么有些数据库需要花费大量时间的问题,我们可以总结出 TiDB 安装部署如此之快的一些原因,包括:
- 清晰的安装部署文档。TiDB 的官网中针对集群部署方面有着完善的文档说明,读者可以很容易根据官方文档来完成一套集群的部署。文档路径 https://docs.pingcap.com/zh/tidb/stable/production-deployment-using-tiup
- 无须额外安装依赖包。TiDB 的安装包包含了所有安装需要的内容,因此安装 TiDB 之前不需要额外的安装各种依赖包的步骤,也彻底消除了解决依赖包版本或不存在的问题。
- 一键检查环境配置并修复。TiDB 的 tiup 工具通过 check 命令可以一键检查所要安装的集群节点有哪些配置问题,并可以通过 check --apply 来一键修复这些配置,无须人工的一项一项去检查修改。这既节省了环境配置的时间,也避免了人为操作可能带来的一些配置不准确或缺失的问题。
- 不依赖其他开源组件。TiDB 的安装包默认包含了数据库所需要的完整组件,如PD、TiDB、TiKV、Grafana、Promethus等。安装 TiDB 软件包之间无须额外安装其他的组件。
- 稳定可靠的运维部署工具。TiDB 提供的 TiUP 管理工具大大简化了软件的安装和升级维护工作。TiUP 提供了非常多且有效的命令,不仅能通过几条命令的方式快速完成集群的安装部署,也可以进行快速的扩容缩容、滚动升级等。TiUP 的文档路径 https://docs.pingcap.com/zh/tidb/stable/tiup-overview