Citus 搭建 PostgreSQL 集群

在服务器中安装 Citus

注:主从节点都需要安装配置 Citus

配置 pg_ctl 环境变量 、配置 host 、配置 白名单

配置及使用 Citus 扩展

  • PG 集群中的主节点被称 协调节点(Coordinator Node),简称为 CN 节点。

  • 其他从节点 称为工作节点(Worker Node,WN/DN)。 

  • CN 只存储和数据分布相关的元数据,实际的表数据被分成M个分片,打散到N个DN上。 

  • 应用程序将它们的查询发送到协调器节点(CN 节点),该节点将查询转发给相关的数据节点并收集结果。

1. 添加 Citus 配置

主从节点 同步编辑配置文件 postgresql.conf,在文件底部添加以下配置

1
shared_preload_libraries = 'citus'

2. 创建一个 Citus 数据库

主从节点 同步创建数据库.

注意:每个 Citus 数据库集群必须单独添加 Citus 扩展

1
create database dbname;

3. 添加 Citus 扩展

主从节点 同步添加 Citus 扩展

1
CREATE EXTENSION citus;

4. CN 节点添加 work 节点

选择一台 PG 服务器作为主节点,添加从节点。

注意:从节点 此时必须是允许主节点免密登录的,否则无法成功安装节点

1
2
3
4
5
-- 语法 
SELECT master_add_node('IP地址', 端口号);

-- 示例
SELECT master_add_node('10.0.0.2', 5432);

5. 检查节点是否安装成功

检查节点是否安装成功,同时也可以查询安装了那些节点。

1
select * from master_get_active_worker_nodes();

6. 使用 Citus 给表做分片

使用 Citus 对表做分布式存储时,需要单独对每个表最分片处理

6.1 创建表

1
create table test_table(id int primary key);

6.2 配置分片策略

  • 设置分片数,4个主机,设置分片4,每个主机一张表
1
set citus.shard_count=4;
  • 配置副本数
1
set citus.shard_replication_factor=2;

6.3 执行表分片

旧版的 master_create_distributed_tablemaster_create_worker_shards 都已被废弃

表亲和 字段一般为关联字段(外键)

1
2
3
4
5
-- 语法 
SELECT create_distributed_table('表名','亲和表字段','hash')

-- 示例
SELECT create_distributed_table('test_table','id');

6.4 查看分片分布

1
SELECT * from pg_dist_shard_placement order by shardid, placementid;

6.5 插入生成数据

1
insert into test_table select generate_series(1, 10000);

citus常用命令

1. 集群同步使用命令

语法

1
SELECT run_command_on_workers($cmd$ /* the command to run; */  $cmd$);

示例

1
SELECT run_command_on_workers($cmd$ drop extension pg_pathman; $cmd$);

相关资料


Citus 搭建 PostgreSQL 集群
https://blog.pangcy.cn/2021/09/11/数据库相关/PostgreSQL/Citus 搭建 PostgreSQL 集群/
作者
子洋
发布于
2021年9月11日
许可协议