TBase开源版V2.1.0 集群搭建部署完整版

发布时间:2025-12-09 18:21:11 浏览次数:4

一、闲扯

公司有项目要用到TBase数据库集群,本来是我们组一个前辈搭好的,然后dn1和dn2总是没法同步,或者说是同步不完全(dn1建的表写入数据,dn2里会有不完整的表结构,但是没有其他的,后来找到原因是最大连接数的配置问题),一直找不到原因,项目经理大笔一挥,重新部署一套。然而我们组那个前辈去重保某个重要项目了,我赶鸭子上架,以前用都不会用,现在要两天内搭一套集群出来,还得带负载均衡。
其实说起来并不困难,主要是难在我经验过少,又是踩坑无数的学习过程,现在我搭的集群已经开始正常运行了,这篇文章拿来做个记录。

二、前期准备

1. 什么是TBase

TBase是腾讯基于postgresql数据库二次开发的,其他的大家自行百度或谷歌,大把大把的资料。

2. 集群规划

使用两台虚拟机搭建1GTM主+1GTM备+2CN主(CN主之间对等,因此无需备CN)+2DN主+2DN备的集群,该集群为具备容灾能力的最小配置。机器IP规划为

测试机01:172.16.8.247 tbase01测试机02:172.16.8.248 tbase02

官方文档和腾讯内部文档要求资源给8C16G+50G系统盘+CentOS 7.3最小化+3.10内核,我自己的测试环境里还有TDSQL集群,资源确实不够,于是开了两台2C16G的虚拟机,其他都一样。各节点规划为:

3. 基本配置

PS:虚拟机安装及基本网络配置等过程略。

3.1 安装基本依赖包及简单优化

更换国内yum源参考:
CentOS-7系统配置华为云yum源

由于是CentOS 7.3最小化安装,所以需要补充安装一些依赖包

yum -y install gcc gcc-c++ pcre-devel openssl-devel #基本环境依赖yum -y install net-tools vim unzip wget lrzsz #部分常用工具

tbase所需依赖包

yum install -y bison.x86_64 bison-devel.x86_64 flex.x86_64 flex-devel.x86_64yum install -y readline readline-devyum install -y readline.x86_64 readline-devel.x86_64yum install -y zlib.x86_64 zlib-devel.x86_64yum install -y openssl-develyum install -y uuid uuid-develyum install -y git.x86_64

ssh连接优化:

vim /etc/ssh/sshd_config:set nu #使vim编辑器显示文件行数修改以下内容:GSSAPIAuthentication noUseDNS no

3.2 修改主机名,配置账号

为了方便,我把247改成tbase01,把248改成tbase02

hostname #查看当前主机名hostnamectl set-hostname tbase01 #修改主机名为tbase01hostname #查看当前主机名

修改好后xshell重新连接,显示的机器名就是你刚刚修改的了。

为了方便看,可以改一下字体颜色,具体操作移步这篇:https://blog.csdn.net/aidream1239/article/details/107810095

3.3 创建tbase用户并配置权限

创建tbase用户及用户目录,并添加密码(必须有,而且两台都要)

mkdir /data #新建文件夹useradd -d /data/tbase tbase #添加新用户并指向/data/tbasepasswd tbase #给tbase用户添加密码chown -R tbase:tbase /data #这一步权限涉及后面分发二进制包等,很重要

3.4 配置虚拟机互信

(注意:除第①和第②步在root下进行,其他操作均在tbase用户下进行,且需提前关闭firewalld和selinux

① root下,两台机器分别编辑/etc/ssh/sshd_config文件:

vim /etc/ssh/sshd_config:set nu #使vim编辑器显示文件行数修改以下内容:RSAAuthentication yes #启用rsa认证,如果sshd_config里没有这一项可以忽略PubkeyAuthentication yes #启用公钥私钥配对认证方式AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径,一般默认不需修改

② 然后两台机器分别重启sshd服务:

systemctl restart sshd

③ 两台机器分别切换到tbase用户下,查看~下有没有.ssh目录,没有就新建一个,注意权限问题。

su tbasecd ~mkdir .sshchmod 700 .ssh #.ssh需要700权限ssh-keygen -t rsa #生成公钥私钥

注意提示的密钥保存路径。

④ 247与248,247与247互相分发密钥(主节点也需要给自己配置互信),执行命令后需要输入一次目标机器tbase用户的密码:

ssh-copy-id -i /data/tbase/.ssh/id_rsa.pub tbase@172.16.8.248 #在247上执行,密钥路径建议使用绝对路径ssh-copy-id -i /data/tbase/.ssh/id_rsa.pub tbase@172.16.8.247 #在248上执行,密钥路径建议使用绝对路径ssh-copy-id -i /data/tbase/.ssh/id_rsa.pub tbase@172.16.8.247 #在247上执行,密钥路径建议使用绝对路径

大小写问题我输错了好几次~~

⑤ 配置权限
分发密钥后,.ssh下会有一个authorized_keys文件,需要添加600或644权限

cd ~/.sshchmod 644 authorized_keys

5. 生成pgxc_ctl模板配置文件

主节点进入pgxc_ctl工具,此时会提醒缺少配置文件,使用命令自动生成模板文件:

pgxc_ctl #进入pgxc_ctl工具prepare config #生成模板文件exit #退出pgxc_ctl工具

根据自己实际情况修改pgxc_ctl模板配置文件:

cd /data/tbase/pgxc_ctlvim pgxc_ctl.conf:set nu #vim中显示行数

6. 分发二进制包并初始化集群

主节点下,进入pgxc_ctl工具,使用deploy all分发二进制包,使用init all初始化集群:

pgxc_ctl #进入pgxc工具deploy all #分发二进制包init all #初始化集群

初始化集群会产生大量刷屏的数据,刷屏结束后,可以使用monitor all 命令查看集群情况。
本次有节点没起来,后面再研究哪里出的问题,估计是pgxc_ctl.conf。

monitor all #查看集群状态

7. 集群访问,创建分布式表

psql -h 172.28.16.239 -p 30004 -d postgres -U tbasecreate default node group default_group with (dn001,dn002);create sharding group to group default_group;create table t1(id int primary key,name varchar(20));insert into t1 select generate_series(1,100);

TBase集群起来后,需要创建分布式表才能够使用。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477