0
点赞
收藏
分享

微信扫一扫

《童虎学习笔记》9分钟入门PG分布式集群Citus

本专栏全部文章 时间
总目录 《童虎学习笔记》总目录(含视频实战)_童虎学习笔记的博客-CSDN博客

来我的dou音 aa10246666, 看配套视频


一、实战环境

Citus是Postgres的一个extension扩展,将Postgres转换成一个分布式数据库,在集群的多个节点上分发数据和查询,具有像分片、分布式SQL引擎、复制表和分布式表等特性。

节点 cn_node1(协调节点,不存储数据) postgresql 14.2 10.211.55.9
节点 worker1_node2(工作节点,存储数据) postgresql 14.2 10.211.55.4
节点 worker2_node3(工作节点,存储数据) postgresql 14.2 10.211.55.6
citus-10.2 / debian 9

二、安装Citus

所有节点(cn, worker1, worker2)都做如下操作

1、安装Citus

2、配置PG

文件 /etc/postgresql/14/main/pg_hba.conf 中添加

 其中postgres是系统用户用于添加节点、创建分布表、参考表等操作,appuser是应用程序连接cn节点使用数据库的帐号

重启PG使配置生效

3、新建样例数据库并授权

在这里我们新建了一个数据库d1, 又新建了一个用户appuser, 又在d1数据库里新建了扩展citus, 并授予appuser用户对d1数据库的all权限


三、添加worker节点

仅在cn节点做如下操作

1、添加2个worker节点

检查worker节点信息是否正确添加


四、创建distributed分布表

分布表的特点是数据分布在每个worker节点上

1、方式1, 先建表,再将其设置为分布表,再向表中插入数据

在cn节点的d1上建表t1

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

此时到cn、worker1和worker2上查看一下t1表的分布情况

可以看到cn节点的表是逻辑表,2个worker节点是是分片后的表,接下来我们在cn节点插入数据

此时再到cn、worker1和worker2上查看一下t1表的分布情况

可以看到当在cn节点对t1表插入数据后,cn节点上的表大小没有变化,说明cn节点不存储数据。同时查看worker1和worker2节点表t1的大小变大了,说明worker节点是实际存储数据的。

在cn节点发起一个查询,验证可以正常返回结果

2、方式1, 先建表,再向表中插入数据,再将其设置为分布表

在cn节点的d1上建表t11

在cn节点先插入数据

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

按上面的提示,我们删除本地数据,而不影响workder节点上的数据

此时到cn、worker1和worker2上查看一下t11表的分布情况

经观察,说明cn节点不存储数据,说明worker节点是实际存储数据的。


五、创建reference参考表

参考表的特点是数据分布在每个worker节点上且每个节点上都一份而经分片的全量数据,正是因为每个节点都有一份全量数据,所以可以减小对参考表进行关联时查询的耗时。

1、方式1, 先建表,再将其设置为参考表,再向表中插入数据

在cn节点的d1上建表t2

将t2表配置为参考表

注意参考表没有分片键,所以此外只接受一个表名做为参数

插入数据

此时到cn、worker1和worker2上查看一下t2表的分布情况

2、方式1, 先建表,再向表中插入数据,再将其设置为参考表

在cn节点的d1上建表t22

插入数据

将表t22配置为参考表 

按上面的提示,我们删除本地数据,而不影响workder节点上的数据

此时到cn、worker1和worker2上查看一下t22表的分布情况


六、查看表分布情况

在cn节点操作

1、查看citus的系统中的表

通过上面可以清晰的看出来系统中现在有2个分布表分别是t1和t11,有2上参考表分别是t2和t22

2、查询表的分片情况

通过上面的内容,假设我们要查找t11表的id=50的记录所在的分片是102056,但这个shard在哪台服务器的哪个表里呢,可以通过下面的语句查询出来

可以看到t11表的id=50的值所在的分片,是192.168.40.143这个worker节点的t11_102056这张分布表

举报

相关推荐

0 条评论