一、闲扯

公司有项目要用到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_64
yum install -y readline readline-dev
yum install -y readline.x86_64 readline-devel.x86_64
yum install -y zlib.x86_64 zlib-devel.x86_64
yum install -y openssl-devel
yum install -y uuid uuid-devel
yum install -y git.x86_64

ssh连接优化:

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

3.2 修改主机名,配置账号

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

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

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

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

3.3 创建tbase用户并配置权限

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

mkdir /data #新建文件夹
useradd -d /data/tbase tbase #添加新用户并指向/data/tbase
passwd 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 tbase
cd ~
mkdir .ssh
chmod 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 ~/.ssh
chmod 644 authorized_keys


⑥测试互信

ssh 'tbase@172.16.8.248'  #247上执行
ssh 'tbase@172.16.8.247'  #248上执行
ssh 'tbase@172.16.8.247'  #247上执行

两台机器能够互相免密,则互信配置成功。

三、安装部署

1. 获取TBase安装包

① 可以从git或腾讯工蜂直接wget,我直接用之前的V2.1.0版本。

cd /data/tbase
任选一个:
wget https://git clone https://用户名:密码@git.code.tencent.com/Tencent_Open_Source/TBase.git #腾讯工蜂
wget git clone https://github.com/Tencent/TBase #GIT,可能会慢一些
https://pan.baidu.com/s/1FTRykAe0D_UEw9x7bKXhgA 提取码: z31m  #我的网盘,TBase版本V2.1.0

② 解压

cd /data/tbase
unzip mirrors-tbase-v2.1.0-release.zip
mv mirrors-tbase-v2.1.0-release.zip /opt  #个人习惯把原始安装包统一放在/opt下面

2. 源码编译安装configure

2.1 编译configure

cd /data/tbase/tbase  #进入刚刚解压的安装包
chmod +x configure*
./configure --prefix=/data/tbase/tbase_bin_v2.1 --enable-user-switch --with-openssl --with-ossp-uuid CFLAGS=-g  #执行脚本编译

大量刷屏后执行完毕。

2.2 安装configure

make clean
make && make install

出现下图时第一步成功了。

3. 安装contrib:

chmod +x contrib/pgxc_ctl/make_signature
cd contrib
make -sj
make install

出现下图则成功。

4. 配置环境变量

tbase用户下的~/.bashrc添加下列配置(所有机器都需要,注意根据自己实际配置添加)

export TBASE_HOME=/data/tbase/tbase_bin_v2.1
export PATH=$TBASE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$TBASE_HOME/lib:${LD_LIBRARY_PATH}


使配置生效:

source ~/.bashrc

截至目前,所有所需基本环境已配置完毕,进入集群初始化阶段。

5. 生成pgxc_ctl模板配置文件

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

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

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

cd /data/tbase/pgxc_ctl
vim 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 tbase
create 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集群起来后,需要创建分布式表才能够使用。

TBase开源版V2.1.0 集群搭建部署完整版相关推荐

  1. Spark2.2.0集群搭建部署之【HADOOP集群篇】

    软件准备信息,详见Spark2.2.0集群搭建部署之[软件准备篇] 基础配置信息,详见Spark2.2.0集群搭建部署之[基础配置篇] SSH无密访问,详见park2.2.0集群搭建部署之[无密访问篇 ...

  2. Spark2.2.0集群搭建部署之【基础配置篇】

    软件准备信息,详见Spark2.2.0集群搭建部署之[软件准备篇] Spark集群在生产环境中,主要部署在linux的集群中,所以需要先安装JDK,SCALA等基础配置. 由于Spark是计算框架,所 ...

  3. Hadoop分布式集群搭建(完整版)

    一.前期准备工作 VMware和Centos7下载安装教程: https://blog.csdn.net/m0_59209350/article/details/117793482 XShell和Xf ...

  4. Spark2.2.0集群搭建部署之【软件准备篇】

    本文主要展示如何在虚拟机上搭建部署Spark2.2.0的详细步骤,包括环境安装.无密登录.Hadoop集群,Spark集群. 需要准备的软件为: VMware-WorkStation CentOS-7 ...

  5. Spark2.1.0 + CarbonData1.0.0集群模式部署及使用入门

    1 引言 Apache CarbonData是一个面向大数据平台的基于索引的列式数据格式,由华为大数据团队贡献给Apache社区,目前最新版本是1.0.0版.介于目前主流大数据组件应用场景的局限性,C ...

  6. Spark-1.4.0集群搭建

    主要内容 Ubuntu 10.04 系统设置 ZooKeeper集群搭建 Hadoop-2.4.1集群搭建 Spark 1.4.0集群搭建 假设已经安装好Ubuntu操作系统 Ubuntu 10.04 ...

  7. hadoop-3.0.0集群搭建

    2019独角兽企业重金招聘Python工程师标准>>> hadoop-3.0.0集群搭建 下载hadoop包 wget -c http://ftp.jaist.ac.jp/pub/a ...

  8. redis5.0集群搭建(两台服务器)

    redis5.0集群搭建(两台服务器) 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-5.0.2 版本. 两台虚拟机都是 C ...

  9. Ubuntu 12.04下spark1.0.0 集群搭建(原创)

    spark1.0.0新版本的于2014-05-30正式发布啦,新的spark版本带来了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL组件,增强了标准库(ML.str ...

  10. Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误

    25. 集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据 ...

最新文章

  1. MFC中显示 .bmp格式的位图
  2. 综合布线工作组2008年上半年技术课题工作安排会议通知
  3. 深入理解netfilter框架|经典PDF
  4. 机器人学 —— 机器人视觉(极几何)
  5. python nodemcu_python开发nodemcu(一)
  6. Spring学习--实现 FactoryBean 接口在 Spring IOC 容器中配置 Bean
  7. 面向对象的 XSLT编程
  8. 毕啸南专栏 | 对话王小川:搜狗不是谁的“变量”,是行业主要玩家
  9. mysql 键缓冲区_mysql:键缓存
  10. Fireworks快捷键大全和ps查看切图的坐标颜色
  11. export ,export default 和 import 区别以及用法
  12. 太强了!这款轻量级的数据库中间件完美解决了SpringBoot中分库分表问题?
  13. 我与计算机作文450字,第一次上网作文450字(通用5篇)
  14. 【Gym-102606 H】Heat Pipes【奇环染色、bfs 生成树】
  15. 简约清新二次元引导个人主页源码
  16. gp338信令_细说GP338GP328对讲机编程
  17. 我是社保局工作的,给大家介绍一下准确的“一老一小”保险知识[转载]
  18. linux下oob_cmd命令,linux下 OOB 炸弹的制作
  19. Indexes and Indexing
  20. 一周XX思考(第12期)

热门文章

  1. oracle dataaccess component,【Delphi】运用Oracle Data Access Component(ODAC)组件
  2. windows 域介绍
  3. iOS-性能优化的那些事
  4. sqlserver格式化-年月日
  5. Unity Shader入门精要学习笔记 - 第11章 让画面动起来
  6. 拷优(CopyU!)mini独家具备穿透U盘防拷贝软件的功能!
  7. MATLAB 图像识别
  8. 前端之品优购项目(一)
  9. FS4066耐高压1到4节内置MOS的锂电池充电管理芯片
  10. 数据治理系列1:数据治理框架【解读分析】