PostgreSQL基于Citus的分布式搭建
前言
Citus简介
Citus以插件的方式扩展到postgresql中,独立于postgresql内核,所以能很快的跟上pg主版本的更新,部署也比较简单,是现在非常流行的分布式方案。Citus在苏宁有大规模应用,微软也提供citus的商业支持。下面是citus的架构:
Citus
节点主要分为协调节点和工作节点,协调节点不存储真实数据,只存储数据分布的元信息,实际的数据被分成若干分片,打散到不同worker节点中,应用连接协调节点,协调节点进行sql解析,生成分布式执行计划,下发到worker节点执行,cn将结果汇总返回客户端。
其它特性:
● PostgreSQL兼容
● 水平扩展
● 实时并发查
● 快速数据加载
● 实时增删改查
● 持分布式事务
● 支持常用DDL
交互
- 客户端应用访问数据时只和CN节点交互。
- CN收到SQL请求后,生成分布式执行计划,并将各个子任务下发到相应的Worker节点,之后收集Worker的结果,经过处理后返回最终结果给客户端。
服务器
192.168.2.100:5432 master
192.168.2.101:5432 worker101
192.168.2.102:5432 worker102
192.168.2.103:5432 worker103
192.168.2.104:5432 worker104
安装
全部节点上的操作
安装 citus
1 | curl https://install.citusdata.com/community/rpm.sh | sudo bash |
查看 PG
配置文件路径
1 | psql -U postgres -c 'SHOW config_file' |
预加载 citus
扩展
1 | # preload citus extension |
加载待所有的数据库中
1 | sudo -i -u postgres psql -c "CREATE EXTENSION citus;" |
成功输出
1 | CREATE EXTENSION |
在Worker
节点上执行
1 | echo "host all all 192.168.2.100/32 trust" >> /var/lib/pgsql/10/data/pg_hba.conf |
在主节点上执行
添加 worker
节点
1 | # 新版:citus_add_node 旧版:master_add_node |
查看节点
1 | # 新版:citus_get_active_worker_nodes 旧版:master_get_active_worker_nodes |
1 | node_name | node_port |
使用
1 | sudo -i -u postgres psql |
这个,有点复杂。