暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

腾讯TBase v2.5.0 数据库集群部署

原创 拨开乌云见阳光 2024-05-26
2003

一、腾讯TBase数据库简介

TBase 是腾讯数据平台团队在开源的 PostgreSQL 基础上研发的企业级分布式 HTAP 数据库管理系统: 具备高性能可扩展的分布式事务能力。
TBase 集群采用无共享 share nothing 架构。由多个 Coordinator、Datanodes 和 GTM 节点组成。

  • 协调节点(Coordinator,CN):是数据库服务的对外入口,负责数据的分发和查询规划,多个节点位置对等。
  • 数据节点(Datanode,DN):负责执行协调节点分发的执行请求,实际存储业务数据,所有用户数据都存储在 DataNode 中。
  • 全局事务管理器(GlobalTransactionManager,GTM):负责全局事务管理。

用户通过 CN 访问存储在 DN 中的数据。TBase数据库集群架构示意如下:



关于TBase更详细的情况介绍,请详见其官网:https://cloud.tencent.com/product/tbase


二、腾讯TBase v2.5.0 数据库集群部署过程

1、安装环境准备

通过“VMware Workstation”创建一台虚拟机。


虚拟机分配内存4GB,IP配置为192.168.20.25,并安装了CentOS 7.9,如下:




2、规划TBase集群各功能节点

由于资源有限,因此准备在一台虚拟机上,通过分端口的方式模拟多个逻辑功能节点。

各个功能节点及端口,规划如下:

功能节点端口
GTM50001
CN30004
DN140004
DN240005

本次准备部署的TBase集群的各功能节点逻辑关系示意如下:



3、sshd配置

vi  /etc/ssh/sshd_config
设置以下参数值:
MaxSessions 20
UseDNS no


4、关闭防火墙与selinux

systemctl stop firewalld
systemctl disable firewalld

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0


5、设置limits.conf参数

vi /etc/security/limits.conf

* soft nofile 131072
* hard nofile 131072
* soft nproc 131072
* hard nproc 131072
* soft core unlimited
* hard core unlimited


6、修改内核参数

vi /etc/sysctl.conf



7、TBase源码编译安装

(1)创建用户

mkdir /data
useradd -d /data/TBase TBase
passwd TBase

(2)下载安装包

下载地址:https://github.com/Tencent/TBase

(3)上传安装包到/data/TBase并设置其属主为TBase

chown TBase: TBase-2.5.0.tar.gz

(4)源代码编译

su - TBase
tar -xzvf TBase-2.5.0.tar.gz
cd TBase-2.5.0
SOURCECODE_PATH=/data/TBase/TBase-2.5.0
INSTALL_PATH=/data/TBase/install
cd ${SOURCECODE_PATH}
rm -rf ${INSTALL_PATH}/tbase_bin_v2.5
./configure --prefix=${INSTALL_PATH}/tbase_bin_v2.5 --enable-user-switch --with-openssl --with-ossp-uuid CFLAGS=-g
make clean
make -sj
make install
chmod +x contrib/pgxc_ctl/make_signature
cd contrib
make -sj
make install

(5)设置 TBase 用户各节点间的SSH互信

ssh-keygen -t rsa
ssh-copy-id -i  .ssh/id_rsa.pub 192.168.20.25

(6)设置环境变量

vi ~/.bashrc

export TBase_HOME=/data/TBase/install/tbase_bin_v2.5
export PATH=$TBase_HOME/bin:$PATH
export LD_LIBRARY_PATH=$TBase_HOME/lib:${LD_LIBRARY_PATH}
export LC_ALL=C

source ~/.bashrc

(7)设置集群配置文件

mkdir /data/TBase/pgxc_ctl
cd /data/TBase/pgxc_ctl
vi pgxc_ctl.conf

#!/bin/bash

pgxcInstallDir=/data/TBase/install/tbase_bin_v2.5
pgxcOwner=TBase
defaultDatabase=postgres
pgxcUser=$pgxcOwner
tmpDir=/tmp
localTmpDir=$tmpDir
configBackup=n
configBackupHost=pgxc-linker
configBackupDir=$HOME/pgxc
configBackupFile=pgxc_ctl.bak
#---- GTM ----------
gtmName=gtm
gtmMasterServer=192.168.20.25
gtmMasterPort=50001
gtmMasterDir=/data/TBase/data/gtm
gtmExtraConfig=none
gtmMasterSpecificExtraConfig=none
gtmSlave=n
#---- Coordinators -------
coordMasterDir=/data/TBase/data/coord
coordArchLogDir=/data/TBase/data/coord_archlog
coordNames=(cn001 )
coordPorts=(30004 )
poolerPorts=(31110 )
coordPgHbaEntries=(0.0.0.0/0)
coordMasterServers=(192.168.20.25)
coordMasterDirs=($coordMasterDir)
coordMaxWALsernder=2
coordMaxWALSenders=($coordMaxWALsernder )
coordSlave=n
coordSlaveSync=n
coordArchLogDirs=($coordArchLogDir)
coordExtraConfig=coordExtraConfig
cat > $coordExtraConfig <<EOF
#================================================
# Added to all the coordinator postgresql.conf
# Original: $coordExtraConfig

include_if_exists = '/data/TBase/global/global_TBase.conf'

wal_level = replica
wal_keep_segments = 256
max_wal_senders = 4
archive_mode = on
archive_timeout = 1800
archive_command = 'echo 0'
log_truncate_on_rotation = on
log_filename = 'postgresql-%M.log'
log_rotation_age = 4h
log_rotation_size = 100MB
hot_standby = on
wal_sender_timeout = 30min
wal_receiver_timeout = 30min
shared_buffers = 128MB
max_pool_size = 200
log_statement = 'ddl'
log_destination = 'csvlog'
logging_collector = on
log_directory = 'pg_log'
listen_addresses = '*'
max_connections = 200

EOF

coordSpecificExtraConfig=(none)
coordExtraPgHba=coordExtraPgHba
cat > $coordExtraPgHba <<EOF

local all all trust
host all all 0.0.0.0/0 trust
host replication all 0.0.0.0/0 trust
host all all ::1/128 trust
host replication all ::1/128 trust

EOF

coordSpecificExtraPgHba=(none)
coordAdditionalSlaves=n
cad1_Sync=n

#---- Datanodes ---------------------
dn1MstrDir=/data/TBase/data/dn001
dn2MstrDir=/data/TBase/data/dn002
dn1ALDir=/data/TBase/data/datanode_archlog1
dn2ALDir=/data/TBase/data/datanode_archlog2

primaryDatanode=dn001
datanodeNames=(dn001 dn002)
datanodePorts=(40004 40005)
datanodePoolerPorts=(41111 41112)
datanodePgHbaEntries=(0.0.0.0/0)
datanodeMasterServers=(192.168.20.25 192.168.20.25)
datanodeMasterDirs=($dn1MstrDir $dn2MstrDir)
dnWALSndr=4
datanodeMaxWALSenders=($dnWALSndr $dnWALSndr)

datanodeSlave=n
datanodeArchLogDirs=($dn1ALDir/dn001 $dn2ALDir/dn002)
datanodeExtraConfig=datanodeExtraConfig
cat > $datanodeExtraConfig <<EOF
#================================================
# Added to all the coordinator postgresql.conf
# Original: $datanodeExtraConfig

include_if_exists = '/data/TBase/global/global_TBase.conf'
listen_addresses = '*'
wal_level = replica
wal_keep_segments = 256
max_wal_senders = 4
archive_mode = on
archive_timeout = 1800
archive_command = 'echo 0'
log_directory = 'pg_log'
logging_collector = on
log_truncate_on_rotation = on
log_filename = 'postgresql-%M.log'
log_rotation_age = 4h
log_rotation_size = 100MB
hot_standby = on
wal_sender_timeout = 30min
wal_receiver_timeout = 30min
shared_buffers = 128MB
max_connections = 200
max_pool_size = 200
log_statement = 'ddl'
log_destination = 'csvlog'
wal_buffers = 4MB

EOF

datanodeSpecificExtraConfig=(none none)
datanodeExtraPgHba=datanodeExtraPgHba
cat > $datanodeExtraPgHba <<EOF

local all all trust
host all all 0.0.0.0/0 trust
host replication all 0.0.0.0/0 trust
host all all ::1/128 trust
host replication all ::1/128 trust

EOF

datanodeSpecificExtraPgHba=(none none)
datanodeAdditionalSlaves=n
walArchive=n

(8)分发二进制包


(9)检查集群各节点二进制包是否已分发


(10)集群初始化


(11)查看集群各节点的运行情况


(12)通过CN节点登录TBase数据库集群,查看数据库版本和各节点状态



三、开始使用TBase数据库

1、创建默认的分组和分片组

在使用TBase数据库之前,需要创建默认的分组和分片组
TBase的所有 datanode 节点都将添加到默认组中。另外,为了增加TBase数据分发的灵活性,增加了一个中间逻辑层来维护数据记录到物理节点的映射,这称为分片。
因此,需要提前创建分片。命令如下:



2、创建数据库、用户、表、插入表数据



3、通过DBeaver图形客户端访问TBase

(1)启动DBeaver图形客户端程序


(2)新建数据库连接

点击“数据库”菜单中的“新建数据库连接”,如下所示:


(3)在数据库驱动程序列表中,找到PostgreSQL,如下所示:


(4)输入TBase数据库的相关信息,如下所示:


(5)测试连接

点击左下层的“测试连接”按钮,成功连接,则显示如下提示框:


(6)点击完成

DBeaver成功连接到TBase数据库后,界面如下:


此时,就可以通过DBeaver图形客户端,对TBase数据库进行访问和操作了。

最后修改时间:2024-05-27 10:51:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论