配置Citus 分片集群

citus 集群包括三台机器,一台协调机器(cn),两台存储数据机器(worker),这三台机器都先安装好postgresql和citus

sudo su - postgres

psql -p 9700 进入pg(假设pg端口为9700)

新建样例数据库并授权:

在这里我们新建了一个数据库d1, 由于citus不会传递create database命令,所以,需要在每台机器都执行一次创建数据库的命令

这一步三台机器都要去做

create database d1;
\c d1;
CREATE EXTENSION citus;

在cn节点添加worker:

su postgres
psql -p 9700
\c d1
SELECT citus_set_coordinator_host('192.168.11.166', 9700); 设置cn协调节点 SELECT
* from citus_add_node('192.168.11.167', 9700); SELECT * from citus_add_node('192.168.11.168', 9700); SELECT rebalance_table_shards(); 或者 SELECT rebalance_table_shards('t1');

检查节点是否添加正确:

SELECT * FROM citus_get_active_worker_nodes();

创建distributed分布表:

\c d1;  就算有副本集,如果一个分片挂了,整个系统依然会卡住,所以,副本集好像用处不大,所以这部分设置可以忽略
设置分片数量:(默认32)
set citus.shard_count=8;  
设置副本集数量:(默认1)
set citus.shard_replication_factor=2;

在cn节点的d1上建表t1

\c d1
CREATE TABLE t1 (
  id bigint primary key,
  name text
);

以id列为分片键,将表设置为分布表, 默认一共创建32个分片,平均分配到每台worker上

SELECT create_distributed_table('t1', 'id');
查看分片情况:
SELECT * FROM citus_shards;
查看worker节点信息:
select
* from pg_dist_node ;
查看分布表信息:
SELECT * FROM citus_tables;

 可以试试插入10万条数据看看:INSERT INTO t1 (id, name) select generate_series(1,100000), 'aaa';

先插入数据,再建分布表:

先有数据,再调用SELECT create_distributed_table('t1', 'id');进行分片也是可以的,

记得先把数据库开启citus

\c d1;
CREATE EXTENSION citus;
SELECT create_distributed_table('表名', 'id');

添加节点成功后,数据会自动发到分片上,就可以调用下面命令,删除cn节点本地数据:

SELECT truncate_local_data_after_distributing_table(
public.t11
);

 数据库运行后,添加新的分片节点:

在cn节点和新加的节点都执行下面语句(有可能其他节点也要执行,我当时是全部节点都执行了)

否则rebalance_table_shards会报这个错:ERROR: connection to the remote node 10.128.0.37:5432 failed with the following error: ERROR: subscription "citus_shard_move_subscription_10" does not exist

echo "wal_level = logical" >> /var/lib/pgsql/15/data/postgresql.conf
systemctl restart postgresql-15

然后新节点创建数据库:

create database d1;
\c d1;
CREATE EXTENSION citus;

cn节点执行添加节点命令:

\c d1
SELECT * from citus_add_node('新节点ip', 5432);
SELECT rebalance_table_shards();

 然后就看到数据开始重新分布了:

d1=# SELECT rebalance_table_shards();
NOTICE:  Moving shard 102009 from 192.168.11.168:5432 to 192.168.11.171:5432 ...
NOTICE:  Moving shard 102008 from 192.168.11.167:5432 to 192.168.11.171:5432 ...
NOTICE:  Moving shard 102011 from 192.168.11.168:5432 to 192.168.11.171:5432 ...
 rebalance_table_shards 
------------------------
 
(1 row)

 

参考文档:

https://blog.csdn.net/tonghu_note/article/details/124537330

posted @   IWing  阅读(819)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示