-
集群规划
集群规划
机器1 62.234.17.162
机器2 36.137.53.249
节点名称 | IP | 数据目录 |
GTM master | 62.234.17.162 | /data/tbase/data/gtm |
GTM slave | 36.137.53.249 | /data/tbase/data/gtm |
CN1 | 62.234.17.162 | /data/tbase/data/coord |
CN2 | 36.137.53.249 | /data/tbase/data/coord |
DN1 master | 62.234.17.162 | /data/tbase/data/dn001 |
DN1 slave | 36.137.53.249 | /data/tbase/data/dn001 |
DN2 master | 36.137.53.249 | /data/tbase/data/dn002 |
DN2 slave | 62.234.17.162 | /data/tbase/data/dn002 |
-
创建目录和用户(集群所有机器都需要配置)
#集群所有机器都需要配置
mkdir /data
mkdir -p /data/tbase/data/gtm
mkdir -p /data/tbase/data/coord
mkdir -p /data/tbase/data/dn001
mkdir -p /data/tbase/data/dn002
mkdir -p /data/tbase/install
-
安装相关rpm依赖包(集群所有机器都需要配置)
#集群所有机器都需要配置
mkdir /data
mkdir -p /data/tbase/data/gtm
mkdir -p /data/tbase/data/coord
mkdir -p /data/tbase/data/dn001
mkdir -p /data/tbase/data/dn002
mkdir -p /data/tbase/install
如果依赖安装失败,建议检查操作系统,centos7.6以下的版本应该不会报错,8.0以上的版本可能会报错
-
源码获取(集群所有机器都需要配置)
cd /data/tbase
git clone 链接
-
配置环境变量(使用root用户)(集群所有机器都需要配置)
mkdir -p /data/tbase/install
chown -R tbase:tbase /data
export SOURCECODE_PATH=/data/tbase/tbase
export INSTALL_PATH=/data/tbase/install
export SOURCECODE_PATH=/data/jd/jd/teledbx-stable
export INSTALL_PATH=/data/jd/jd/teledbx
-
源码编译(集群所有机器都需要配置)
-
configure配置。运行成功之后如图所示
cd ${SOURCECODE_PATH}
chmod +x configure*
./configure --prefix=${INSTALL_PATH} --enable-user-switch --with-openssl --with-ossp-uuid CFLAGS=-g
-
安装 安装成功后如下图
make clean
make -sj 4
make install
-
contrib安装(集群所有机器都需要配置)
chmod +x contrib/pgxc_ctl/make_signature
cd contrib
make -sj 4
make install
-
配置虚拟机互信(集群所有机器都需要配置)
(注意:除第①和第②步在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 #生成公钥私钥
④ 互相分发密钥(主节点也需要给自己配置互信),执行命令后需要输入一次目标机器tbase用户的密码:
机器1:62.234.17.162 机器2:36.137.53.249
ssh-copy-id -i /data/tbase/.ssh/id_rsa.pub tbase@36.137.53.249 #在62上执行,密钥路径建议使用绝对路径
ssh-copy-id -i /data/tbase/.ssh/id_rsa.pub tbase@62.234.17.162 #在36上执行,密钥路径建议使用绝对路径
ssh-copy-id -i /data/tbase/.ssh/id_rsa.pub tbase@62.234.17.162#在62上执行,密钥路径建议使用绝对路径
⑤ 配置权限
分发密钥后,.ssh下会有一个authorized_keys文件,需要添加600或644权限
cd ~/.ssh
chmod 644 authorized_keys
⑥测试互信
ssh 'tbase@36.137.53.249' #62上执行
ssh 'tbase@62.234.17.162' #36上执行
ssh 'tbase@62.234.17.162' #62上执行
两台机器能够互相免密,则互信配置成功。
-
配置环境变量(重要,没配好后面会找不到pgxc_ctl命令)
tbase用户下的vim ~/.bashrc添加下列配置(所有机器都需要,注意根据自己实际配置添加)
export TBASE_HOME=/data/tbase/install/tbase_bin_v2.0
export PATH=$TBASE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$TBASE_HOME/lib:${LD_LIBRARY_PATH}
使配置生效:
source ~/.bashrc
截至目前,所有所需基本环境已配置完毕,进入集群初始化阶段。
-
初始化集群
mkdir /data/tbase/pgxc_ctl
cd /data/tbase/pgxc_ctl
vim pgxc_ctl.conf
pgxc_ctl.conf文件配置(改ip和shared_buffers等参数,要配安全组,允许tcp的下面端口):
进入到pgxc_ctl交互工具,然后执行deploy all
[tbase@VM-16-17-centos pgxc_ctl]$ pgxc_ctl
/bin/bash
Installing pgxc_ctl_bash script as /data/tbase/pgxc_ctl/pgxc_ctl_bash.
Installing pgxc_ctl_bash script as /data/tbase/pgxc_ctl/pgxc_ctl_bash.
Reading configuration using /data/tbase/pgxc_ctl/pgxc_ctl_bash --home /data/tbase/pgxc_ctl --configuration /data/tbase/pgxc_ctl/pgxc_ctl.conf
Finished reading configuration.****** PGXC_CTL START **********
Current directory: /data/tbase/pgxc_ctl
PGXC deploy all
执行成功之后如图所示:
不成功的话检查上面的参数
初始化集群
进入到pgxc_ctl命令交互工具,执行init all命令,执行成功之后截图如下(本次实验GTM slave节点没有拉起来,暂时未找到原因,后续找到原因会进行更新。GTM slave是备节点,不会影响数据库的使用,只是无法进行GTM组件容灾的演练)
[tbase@VM-16-17-centos pgxc_ctl]$ pgxc_ctl
/bin/bash
Installing pgxc_ctl_bash script as /data/tbase/pgxc_ctl/pgxc_ctl_bash.
Installing pgxc_ctl_bash script as /data/tbase/pgxc_ctl/pgxc_ctl_bash.
Reading configuration using /data/tbase/pgxc_ctl/pgxc_ctl_bash --home /data/tbase/pgxc_ctl --configuration /data/tbase/pgxc_ctl/pgxc_ctl.conf
Finished reading configuration.****** PGXC_CTL START **********
Current directory: /data/tbase/pgxc_ctl
PGXC init all
集群状态查看
进入pgxc_ctl命令交互界面,执行monitor all命令可以查看各个组件的运行情况。
[tbase@VM-16-17-centos pgxc_ctl]$ pgxc_ctl
/bin/bash
Installing pgxc_ctl_bash script as /data/tbase/pgxc_ctl/pgxc_ctl_bash.
Installing pgxc_ctl_bash script as /data/tbase/pgxc_ctl/pgxc_ctl_bash.
Reading configuration using /data/tbase/pgxc_ctl/pgxc_ctl_bash --home /data/tbase/pgxc_ctl --configuration /data/tbase/pgxc_ctl/pgxc_ctl.conf
Finished reading configuration.****** PGXC_CTL START **********
Current directory: /data/tbase/pgxc_ctl
PGXC monitor all
-
集群访问和创建分布式表
[tbase@VM-16-17-centos pgxc_ctl]$ psql -h62.234.17.162 -p 30004 -d postgres -U tbase
postgres=# create default node group default_group with (dn001,dn002);
postgres=# create sharding group to group default_group;
postgres=# create table t1(id int primary key,name varchar(20));
postgres=# insert into t1 select generate_series(1,100);