postgre_citus集群部署

主从节点服务器拉取citusdb

注意, 两者的USER必须一致, 由于是用trust连接, 密码可以不一样

docker run -d --name citus_db \
               -p 15432:5432 \
               -e "POSTGRES_USER=citus" \
               -e "POSTGRES_PASSWORD=citus123" \
               -v /data/psql/citus_db:/var/lib/postgresql/data \
               citusdata/citus

修改从服务器pg_hba.conf

sudo vim /data/psql/citus_db/pg_hba.conf
# 加入以下后, 重启从服务器容器
host all all {你的主机ip}/24 trust
host replication all {你的主机ip}/24 trust

主服务器添加子节点

SELECT * from master_add_node('{你的节点ip}', 15432);

查看节点是否添加成功

SELECT * FROM master_get_active_worker_nodes();

测试集群

创建表

create table test_table(id int, name varchar(16));

表分片

SELECT master_create_distributed_table('test_table', 'id', 'hash');

分片个数,及每个分片副本数

(表名, 分片个数, 从机个数)

SELECT master_create_worker_shards('test_table', 2, 1);

插入数据

这里会发现数据在节点服务器上被打散为2个表, 分配逻辑是根据表分片时的master_create_distributed_table('test_table', 'id', 'hash'), 实际上主服务器只保存了元数据

查看执行计划

可以发现数据来源是从子节点获取

添加新评论

本站现已启用评论投票,被点踩过多的评论将自动折叠。与本文无关评论请发留言板。请不要水评论,谢谢。

已有 0条评论