Citus,PostgreSQL的最佳分布式改造!
对于一直工作在关系型数据库,且功能强大的PostgreSQL的开发者来说。
Citus 无疑是给他们插上了一对火箭!让关系型数据库的用户,也能翱翔在大数据的时代。
Citus 正在被很多大数据机构使用,日均更新5~10亿记录,甚至有在70个节点上,运行数据规模达1.4PB!
Citus 适用于多租户、实时分析场景。(这也正是我迫切需要的!)
下边介绍Citus的上手经历。
试验架构
graph TB m[(citus0)] slave1[(citus1)] slave2[(citus2)] m---slave1 m---slave2
准备主机
分布式,至少两台以上主机。
- 协调节点,负责统筹。主机名:citus0
- 工作节点,负责存储计算。主机名:citus1、citus2
编译安装
在每一台机器上,按以下操作同样参数安装。
版本
- OS:FreeBSD-12.1-RELEASE-AMD64
- PostgreSQL:12.3
- Citus:9.4.0
编译参数
PostgreSQL 12.3 编译
编译:
1 | kg install llvm90 gettext curl gmake |
Citus 9.4.0 编译
编译
1 | ./configure 'LDFLAGS= -L/usr/local/lib -lpthread -L/usr/local/lib -fstack-protector-strong ' CPPFLAGS=-I/usr/local/include |
设置并启用Citus
所有主机上的共同操作
注意:**以下所有操作都在要每个节点主机上完整操作完。包括建库和启用citus
。且一定是先建库,进入main
库后再启动citus
扩展**
- 初始化数据库
1
2su postgres
initdb data - 配置
postgresql.conf
listen_addresses = ‘*’
port = 5432
shared_buffers = 256MB # 按需调节
shared_preload_libraries = ‘citus’ # 关键配置
- 配置
pg_hba.conf
host all all 192.168.1.1/24 trust # 开放内网访问
- 启动PostgreSQL
script 1
pg_ctl -D data start
- 建库并启用Citus
1
2
3
4psql
create database main;
\c main
create extension citus;协调节点上的操作
1
2
3
4
5
6
7
8
9
10psql main
select master_add_node('citus1',5432);
select master_add_node('citus2',5432);
main=# select master_get_active_worker_nodes();
master_get_active_worker_nodes
--------------------------------
(citus1,5432)
(citus2,5432)
(2 行记录)使用Citus
现在只要在协调节点citus0
上的main
库中建表。所有工作节点都会自动创建分表。
在协调节点上存储会将数据分发到不同的工作节点上。查询也是在多个工作节点上分布查询了。
- 本文标题:Citus,PostgreSQL的最佳分布式改造!
- 本文作者:jf wang
- 创建时间:2020-08-14 12:23:02
- 本文链接:https://www.wangjunfeng.com.cn/2020/08/14/postgresql-citus/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!