绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Citus 多节点安装部署
2022-04-13 11:05:14

概述

Citus 是以PostgreSQL插件的形式实现分布式数据库的,所以搭建Citus数据库前需要做PostgreSQL数据库安装部署,2021-09-17发布的citus10.2已经可以支持PG14了,所以本篇文章直接介绍citus10.2+PG14.1。

安装部署

这里跳过PG数据库的安装部署,直接从安装citus插件开始。

安装方式

github源码下载地址:https://github.com/citusdata/citus/releases
使用脚本方式直接安装:https://www.citusdata.com/download

安装依赖包

yum -y install lz4.x86_64 lz4-devel.x86_64 libcurl.x86_64 libcurl-devel.x86_64

源码编译

# export PG_CONFIG=/opt/postgresql_14.1/bin/pg_config
# ./configure --prefix=/opt/citus_10.2.3 --without-zstd
# make -j 8 && make install

# chown -R postgres: /opt/postgresql_14.1/

配置数据库

--修改postgresql.conf文件
shared_preload_libraries = 'citus,pg_stat_statements'

--修改pg_hba.conf文件,保证PG实例之间是可以相互访问的
host    all             all             172.16.3.90/32          trust

--重启数据库
$ pg_ctl -D /data/pgdata14/ restart

--添加扩展
[postgres@mogdb2 tmp]$ psql -p 1432
psql (14.1)
Type "help" for help.

postgres=# create extension citus ;
CREATE EXTENSION
postgres=# \dx
                 List of installed extensions
  Name   | Version |   Schema   |         Description
---------+---------+------------+------------------------------
 citus   | 10.2-4  | pg_catalog | Citus distributed database
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language

关键函数

在做citus集群配置之前,先来了解几个比较重要的表/函数/视图。

--查看worker节点信息
select * from master_get_active_worker_nodes();

--添加worker节点
select * from master_add_node('nodename',port);

--删除worker节点
select * from master_remove_node('nodename',port);

--查看分片信息
select * from pg_dist_shard;

--查看分片分布
select * from pg_dist_shard_placement;

配置集群

选一个PG实例做为CN节点,以后访问citus集群就通过这个实例做入口,然后向其添加worker节点

--添加worker节点
select * from master_add_node('172.16.3.91',1432);

--设置分片(默认32)和副本(默认1,副本数量不能超过worker节点数量)
alter system set citus.shard_count=8;
alter system set citus.shard_replication_factor=2;

创建表

--创建普通表
create table enmotech(id serial,col1 varchar(8),updatetime timestamptz default now());

create table enmotech_dist(id serial,col1 varchar(8),updatetime timestamptz default now());

create table enmotech_ref(id serial,col1 varchar(8),updatetime timestamptz default now());

create table enmotech_col(id serial,col1 varchar(8),updatetime timestamptz default now());

--分布表
select create_distributed_table('enmotech_dist','id');

--亲和表
select create_distributed_table('enmotech_col','id',colocate_with =>'enmotech_dist');

--引用表
select create_reference_table('enmotech_ref');

添加worker

--添加节点,引用表会直接copy到新的节点
postgres=# select master_add_node('172.16.3.91','1433');
NOTICE:  Replicating reference table "enmotech_ref" to the node 172.16.3.91:1433

--重平衡分片分布
postgres=# select rebalance_table_shards();
NOTICE:  Moving shard 102008 from 172.16.3.91:1432 to 172.16.3.91:1433 ...
NOTICE:  Moving shard 102009 from 172.16.3.91:1432 to 172.16.3.91:1433 ...
NOTICE:  Moving shard 102010 from 172.16.3.91:1432 to 172.16.3.91:1433 ...
NOTICE:  Moving shard 102011 from 172.16.3.91:1432 to 172.16.3.91:1433 ...

image.png


分享好友

分享这个小栈给你的朋友们,一起进步吧。

Citus
创建时间:2022-04-13 09:43:21
Citus
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~