0
点赞
收藏
分享

微信扫一扫

Citus_14-11.0.6 部署

梦为马 2022-09-08 阅读 64

环境:

IP

主机名

节点类型

系统

软件版本

111.111.111.160

citus00

coordinator node (CN)

CentOS 8.3

PostgreSQL 14.5 + Citus 11.0.6

111.111.111.161

citus01

worker node

CentOS 8.3

PostgreSQL 14.5 + Citus 11.0.6

111.111.11.1162

citus02

worker node

CentOS 8.3

PostgreSQL 14.5 + Citus 11.0.6

在所有节点执行以下步骤

1、本地离线安装citus和postgresql

rpm -ivh citus_14-11.0.6-1.rhel8.x86_64.rpm

rpm -ivh citus_14-devel-11.0.6-1.rhel8.x86_64.rpm

rpm -ivh citus_14-llvmjit-11.0.6-1.rhel8.x86_64.rpm

 

rpm -ivh postgresql14-libs-14.5-1PGDG.rhel8.x86_64.rpm

rpm -ivh postgresql14-14.5-1PGDG.rhel8.x86_64.rpm

rpm -ivh postgresql14-server-14.5-1PGDG.rhel8.x86_64.rpm

rpm -ivh postgresql14-contrib-14.5-1PGDG.rhel8.x86_64.rpm

过程中如果有缺失的包可以使用本地yum源安装解决这个问题。

 

2、修改环境变量

可以先删除默认创建的postgres用户

userdel -r postgres

然后创建用户组

groupadd -g 5001 postgres

useradd -g 5001 -u 5001 -s /bin/bash -m postgres

这样的好处是用户home目录就会在/home/postgres下,否则默认是在/var/lib/pgsql下,

su - postgres

vi ~/.bashrc

添加下面变量

#For PostgreSQL

export PGHOME=/usr/pgsql-14

export PGDATA=/app/pgsql/14.5/data

export PGHOST=/app/pgsql/14.5/socket

export PGUSER=postgres

export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH

export PATH=$PGHOME/bin:$PATH

 

$ mkdir -p /app/pgsql/14.5/data

$ mkdir -p /app/pgsql/14.5/socket

$ mkdir -p /app/pgsql/14.5/tablespace      --自定义表空间目录

 

3、初始化数据库

$ initdb

 

3.1、修改 postgresql.conf

$  cd $PGDATA

$  vi postgresql.conf

# 修改listen_addresses

listen_addresses = '*'

 

3.2、修改unix_socket_directories

如果只是单纯修改这个参数指定的路径,那么psql会报错,在用户环境变量中指定PGHOST变量为这个目录就可以解决这个问题了,所以前面的PGHOST环境变量已经指定

unix_socket_directories = '/app/pgsql/14.5/socket'

 

3.3、加载pg_stat_statements和citus插件

默认这个插件是注释掉的,pg_stat_statements这个插件记录了所有SQL语句的执行统计信息,对SQL优化帮助很大,但是启用该插件需要重启数据库,所以在建库的时候就直接配置上就好。

citus分布式数据的插件

shared_preload_libraries = 'citus,pg_stat_statements' # (change requires restart)

 

3.4、配置pg_hba.conf

集群网段是111.111.111.0/24

cd $PGDATA

vi pg_hba.conf

# Allow unrestricted access to nodes in the local network. The following ranges

# correspond to 24, 20, and 16-bit blocks in Private IPv4 address spaces.

host    all             all             111.111.111.0/24        trust

 

3.5、配置防火墙

查看

firewall-cmd --zone=public --query-port=5432/tcp

 

添加5432端口(--permanent永久生效,没有此参数重启后失效)

firewall-cmd --zone=public --add-port=5432/tcp --permanent

 

重新载入

firewall-cmd --reload

 

4、配置自启动

4.1、修改数据存储目录在自启动脚本中的值

# vi /usr/lib/systemd/system/postgresql-14.service

# Location of database directory

# Environment=PGDATA=/var/lib/pgsql/14/data/ #-- 注释掉这一句

Environment=PGDATA=/app/pgsql/14.5/data/  #-- 修正为实际值

 

4.2、修改完服务脚本后要使用下面命令重新载入配置,不然会报错:

systemctl daemon-reload

使用系统命令控制数据库启停

systemctl enable postgresql-14

systemctl status postgresql-14

systemctl start postgresql-14

 

5、给需要的数据库安装Citus扩展

 

CREATE EXTENSION citus;

 

------第六步只在coordinator节点执行

6、在coordinator节点添加coordinator和worker信息

SELECT citus_set_coordinator_host('111.111.111.160', 5432);

SELECT * from citus_add_node('111.111.111.161', 5432);

SELECT * from citus_add_node('111.111.111.162', 5432);

 

7、验证安装是否成功

所有节点均可执行

SELECT * FROM master_get_active_worker_nodes();

select citus_version();

 

8、Citus的分片复制

Citus将每个数据分片复制两份或多份,分布到不同的worker节点上,如果其中存储相同分片的一个worker节点宕掉,Coordinator节点会将查询路由到有相同分片的正常worker节点。要使用Citus的分片复制功能,需要创建分布式表之前设置启用分片复制功能,将“shard_replication_factor”,也就是每个分片的副本数量,设置为2或者更高,以支持更好的容错性。

本次的环境只有2个worker节点,就设置为2

SET citus.shard_replication_factor = 2;

 

9、citus创建表并分片

创建测试表

create table student(no int primary key,student_name varchar(40),age int,class_no int);

insert into student values(220001,'韩梅梅',16,2201);

insert into student values(220002,'李雷',17,2202);

worker节点本身也可以创建表,但是无法分片到其他节点,会报错

postgres=# SELECT create_distributed_table('student', 'no');

ERROR:  operation is not allowed on this node

HINT:  Connect to the coordinator and run it again.

总结:想要分片到整个集群的表,必须在coordinator节点创建并使用create_distributed_table分片到worker节点。

coordinator节点可以创建表,修改数据,worker节点可以在coordinator节点创建的表中修改数据,且自动同步到其他worker节点和coordinator节点,但是无法删除表。

举报

相关推荐

0 条评论