微信支付用的数据库开源了

TBase是一个提供写可靠性,多主节点数据同步的关系数据库集群平台。你可以将TBase配置一台或者多台主机上,TBase数据存储在多台物理主机上面。数据表的存储有两种方式, 分别是distributed或者replicated ,当向TBase发送查询 SQL时,TBase会自动向数据节点发出查询语句并获取最终结果。

TBase采用分布式集群架构(如下图),该架构分布式为无共享(share nothing)模式,节点之间相应独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转,各处理单元之间通过网络协议进行通信,并行处理和扩展能力更好,这也意味着只需要简单的x86服务器就可以部署TBase数据库集群。

下面简单解读一下TBase的三大模块:


接下来,让我们来看看如何从源码开始,完成到TBase集群环境的搭建。



1. 创建tbase用户

注意:所有需要安装TBase集群的机器上都需要创建

2. 源码获取

3. 源码编译

本文的使用环境中,上述两个参数如下

${SOURCECODE_PATH}=/data/tbase/TBase-master

${INSTALL_PATH}=/data/tbase/install

4. 集群安装

4.1)集群规划

下面以两台服务器上搭建1GTM主,1GTM备,2CN主(CN主之间对等,因此无需备CN),2DN主,2DN备的集群,该集群为具备容灾能力的最小配置

集群规划如下:

4.2)机器间的ssh互信配置

参考Linux ssh互信配置

4.3)环境变量配置

集群所有机器都需要配置

以上,已经配置好了所需要基础环境,可以进入到集群初始化阶段,为了方便用户,TBase提供了专用的配置和操作工具:pgxc_ctl来协助用户快速搭建并管理集群,首先需要将前文所述的节点的ip,端口,目录写入到配置文件 pgxc_ctl.conf 中。


4.4)初始化pgxc_ctl.conf文件

如下,是结合上文描述的IP,端口,数据库目录,二进制目录等规划来写的pgxc_ctl.conf文件。具体实践中只需按照自己的实际情况配置好即可.

4.5)分发二进制包

在一个节点配置好配置文件后,需要预先将二进制包部署到所有节点所在的机器上,这个可以使用pgxc_ctl工具,执行deploy all命令来完成。

4.6)执行init all命令,完成集群初始化命令

4.7)安装错误处理

一般init集群出错,终端会打印出错误日志,通过查看错误原因,更改配置即可,或者可以通过/data/tbase/pgxc_ctl/pgxc_log路径下的错误日志查看错误,排查配置文件的错误

通过运行 pgxc_ctl 工具,执行clean all命令删除已经初始化的文件,修改pgxc_ctl.conf文件,重新执行init all命令重新发起初始化。

5. 查看集群状态
当发现上面的输出时,集群已经OK,另外也可以通过pgxc_ctl工具的monitor all命令来查看集群状态

一般的如果配置的不是强同步模式,gtm salve,dn slave的故障不会影响访问。

6. 集群访问
访问TBase集群和访问单机的PostgreSQL基本上无差别,我们可以通过任意一个CN访问数据库集群:例如通过连接CN节点select pgxc_node表即可查看集群的拓扑结构(当前的配置下备机不会展示在pgxc_node中),在Linux命令行下通过psql访问的具体示例如下

6.1) 使用数据库前需要创建default group以及sharding

TBase使用datanode group来增加节点的管理灵活度,要求有一个default group才能使用,因此需要预先创建;一般情况下,会将节点的所有datanode节点加入到default group里 另外一方面,TBase的数据分布为了增加灵活度,加了中间逻辑层来维护数据记录到物理节点的映射,我们叫sharding,所以需要预先创建sharding,命令如下:

6.2) 创建数据库,用户,创建表,增删查改等操作

至此,就可以跟使用单机数据库一样来访问数据库集群了

7. 停止集群
通过pgxc_ctl工具的stop all命令来停止集群,stop all 后面可以加上参数-m fast或者是-m immediate来决定如何停止各个节点。

8. 启动集群
通过pgxc_ctl工具的start all命令来启动集群



本文档只是给用户一个简单的指引,演示如何从源码开始,一步一步搭建一个完整的TBase集群,后续会有更多的文章来介绍TBase的特性使用,优化,问题定位等内容。



上一篇: 【脚本】快速排除空闲等待事件得到敏感的非空闲等待事件
下一篇: 运维团队能力建设的另一思路

欢迎扫描关注我们的微信公众平台!

欢迎扫描关注我们的微信公众平台!