前言:什么是OpenTenBase
OpenTenBase 是一个提供写可靠性,多主节点数据同步的关系数据库集群平台。你可以将 OpenTenBase 配置一台或者多台主机上, OpenTenBase 数据存储在多台物理主机上面。数据表的存储有两种方式, 分别是 distributed 或者 replicated ,当向OpenTenBase发送查询 SQL时, OpenTenBase 会自动向数据节点发出查询语句并获取最终结果。
OpenTenBase 采用分布式集群架构(如下图), 该架构分布式为无共享(share nothing)模式,节点之间相应独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转,各处理单元之间通过网络协议进行通信,并行处理和扩展能力更好,这也意味着只需要简单的x86服务器就可以部署 OpenTenBase 数据库集群。
下面简单解读一下OpenTenBase的三大模块
• Coordinator:协调节点(简称CN)
业务访问入口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;在功能上CN上只存储系统的全局元数据,并不存储实际的业务数据。
• Datanode:数据节点(简称DN)
每个节点还存储业务数据的分片在功能上,DN节点负责完成执行协调节点分发的执行请求。
• GTM:全局事务管理器(Global Transaction Manager)
负责管理集群事务信息,同时管理集群的全局对象,比如序列等。
本文将详细介绍如何从源码开始,完成 OpenTenBase V2.6 的编译和安装过程。
一、安装准备及规划
1.1 环境要求
在开始编译之前,请确保你的系统满足以下要求:
• 操作系统:TencentOS 2, TencentOS 3, OpenCloudOS, CentOS 7, CentOS 8, Ubuntu
• 内存:至少 4GB RAM
• 磁盘空间:至少10GB,足够的磁盘空间用于源码下载、编译和安装
1.2 软件环境
软件名称 | 软件版本 |
---|---|
麒麟服务端操作系统 | kylin_v10 |
OpenTenBase | V2.6 |
1.3 集群规划
• 集群规划
下面以两台服务器上搭建1GTM主,1GTM备,2CN主(CN主之间对等,因此无需备CN),2DN主,2DN备的集群,该集群为具备容灾能力的最小配置
机器1:192.168.2.136 机器2:192.168.2.137
集群规划如下:
节点名称 | IP | 数据目录 |
---|---|---|
GTM master | 192.168.2.136 | /data/opentenbase/data/gtm |
GTM slave | 192.168.2.137 | /data/opentenbase/data/gtm |
CN1 | 192.168.2.136 | /data/opentenbase/data/coord |
CN2 | 192.168.2.137 | /data/opentenbase/data/coord |
DN1 master | 192.168.2.136 | /data/opentenbase/data/dn001 |
DN1 slave | 192.168.2.137 | /data/opentenbase/data/dn001 |
DN2 master | 192.168.2.137 | /data/opentenbase/data/dn002 |
DN2 slave | 192.168.2.136 | /data/opentenbase/data/dn002 |
二、安装依赖
根据你的操作系统,使用以下命令安装必要的依赖包:
对于基于 Red Hat 的系统(如 CentOS):
dnf -y install gcc make readline-devel zlib-devel openssl-devel uuid-devel bison flex git
对于基于 Debian 的系统(如 Ubuntu):
sudo apt-get update
sudo apt-get -y install gcc make libreadline-dev zlib1g-dev libssl-dev libossp-uuid-dev bison flex git
三、创建 OpenTenBase 用户
所有需要安装 OpenTenBase 集群的机器上都需要创建 opentenbase 用户,并设置相应的目录权限。
四、获取安装包
4.1 git获取源码
• 创建软件目录
• 使用 git 克隆 OpenTenBase 的源码仓库:
克隆源码(root用户)
git clone https://github.com/OpenTenBase/OpenTenBase
4.2 下载源码包
登录git,下载最新的v2.6.0版本
五、编译源码
5.1 配置安装环境变量
所有节点都要操作
5.2 编译安装
• 将源码包移动到源码目录
• 进入源码目录并进行编译:
六、集群初始化
6.1 禁用 SELinux 和 防火墙 (可选)
6.2 配置 SSH
互信为了方便后续操作,建议配置opentenbase机器间的 SSH 互信:
6.3 配置opentenbase环境变量
集群所有机器都需要配置
6.4 配置root环境变量
集群所有机器都需要配置,把opentenbase用户的$PATH环境变量添加到 etc/environment
6.5 初始化pgxc_ctl.conf文件
如下,是结合上文描述的IP,端口,数据库目录,二进制目录等规划来写的pgxc_ctl.conf文件。
pgxc_ctl.conf配置如下:
6.6 分发二进制包
在一个节点上配置好配置文件后,使用 pgxc_ctl 工具将二进制包部署到所有节点:
分发日志
注:以下指令均在pgxc_ctl终端命令行中
6.7 初始化集群
使用 pgxc_ctl 工具初始化集群:
初始化日志
6.8 查看集群状态
日志如下
6.9 安装错误处理
1)日志查看
一般init集群出错,终端会打印出错误日志,通过查看错误原因,更改配置即可,或者可以通过/data/opentenbase/pgxc_ctl/pgxc_log路径下的错误日志查看错误,排查配置文件的错误
2)清理集群重新安装
通过运行 pgxc_ctl 工具,执行clean all命令删除已经初始化的文件,修改pgxc_ctl.conf文件,重新执行init all命令重新发起初始化。
- 常见问题
• 执行inti all时,提示pg_ctl命令找不到
这样的问题,通常是环境变量的问题,通过root用户配置/etc/environment 解决
• 执行inti all时,提示无法创建目录
这样的问题,通常是分发节点上,没有创建对应的目录
解决方案:检查所有节点的目录配置,如果没有创建,创建即可。
七、集群访问
访问OpenTenBase集群和访问单机的PostgreSQL基本上无差别,我们可以通过任意一个CN访问数据库集群:例如通过连接CN节点select pgxc_node表即可查看集群的拓扑结构(当前的配置下备机不会展示在pgxc_node中),在Linux命令行下通过psql访问的具体示例如下:
7.1 登录cn主节点
7.2 使用数据库前需要创建default group以及sharding表
OpenTenBase使用datanode group来增加节点的管理灵活度,要求有一个default group才能使用,因此需要预先创建;一般情况下,会将节点的所有datanode节点加入到default group里 另外一方面,OpenTenBase的数据分布为了增加灵活度,加了中间逻辑层来维护数据记录到物理节点的映射,我们叫sharding,所以需要预先创建sharding,命令如下:
7.3 创建数据库,用户,创建表,增删查改等操作
八、集群启停
8.1 停止集群
停止日志
8.2 启动集群
九、结语
通过以上步骤,你已经成功地从源码编译并安装了 OpenTenBase V2.6。现在你可以开始使用 OpenTenBase 来管理你的分布式数据库集群。
我们目前正在积极征集OpenTenBase的用户使用案例,如果您有相关使用经验,欢迎提交给我们。也期待您加入OpenTenBase社区,跟我们共同推动项目发展!
官网: https://www.opentenbase.org/
贡献代码