PostgreSQL基于Citus實現分布式集群的全過程
1.Citus介紹
Citus是一個PostgreSQL擴展,它將Postgres轉換為分布式數據庫,因此您可以在任何規(guī)模上實現高性能。
可以使用這些Citus超能力使您的Postgres數據庫在單個Citus節(jié)點上擴展?;蛘撸梢詷嫿ㄒ粋€能夠處理高交易吞吐量的大型集群,尤其是在多租戶應用程序中,運行快速分析查詢,并處理大量時間序列或物聯網數據進行實時分析。當數據大小和數量增長時,可以輕松地向集群中添加更多的工作節(jié)點并重新平衡碎片。
使用Citus,您可以用新的超能力擴展PostgreSQL數據庫:
1.分布式表在PostgreSQL節(jié)點集群中進行分片,以組合它們的CPU、內存、存儲和I/O容量。
2.引用表被復制到所有節(jié)點,以便從分布式表中進行聯接和外鍵,從而獲得最大的讀取性能。
3.分布式查詢引擎路由并并行化集群中分布式表上的SELECT、DML和其他操作。
4.列存儲壓縮數據,加快掃描速度,并支持在常規(guī)表和分布式表上進行快速投影。
5.通過從任何節(jié)點進行查詢,您都可以利用集群的全部容量進行分布式查詢
Citus集群由一個中心的協調節(jié)點(CN)和若干個工作節(jié)點(Worker)構成。
coordinate:協調節(jié)點,一般稱為cn,存儲所有元數據,不存實際數據,該節(jié)點直接對用戶開放,等于一個客戶端。
worker:工作節(jié)點,不存儲元數據,存儲實際數據。執(zhí)行協調節(jié)點發(fā)來的查詢請求。一般不直接對用戶開放。

2.架構設計
| 主機名 | IP | 操作系統 | 內存/空間 | 角色 | 說明 |
|---|---|---|---|---|---|
| pgcn | 172.18.12.80 | centos7.8 | 2c/18G 400G | coordinate | 安裝PG 14+ Citus 14.1.0 |
| pgwk01 | 172.18.12.81 | centos7.8 | 2c/18G 400G | worker | 安裝PG 14+ Citus 14.1.0 |
| pgwk02 | 172.18.12.82 | centos7.8 | 2c/18G 400G | worker | 安裝PG 14+ Citus 14.1.0 |
| pgwk03 | 172.18.12.83 | centos7.8 | 2c/18G 400G | worker | 安裝PG 14+ Citus 14.1.0 |
| pgwk04 | 172.18.12.84 | centos7.8 | 2c/18G 400G | worker | 安裝PG 14+ Citus 14.1.0 |

3.安裝citus
3.1 yum安裝
1.安裝依賴
yum install -y libcurl-devel lz4 zstd epel-release libzstd-devel unzip libcurl make
2.yum 安裝,所有節(jié)點均安裝
curl https://install.citusdata.com/community/rpm.sh yum install -y citus_14

3.2 創(chuàng)建拓展
##以下操作,所有節(jié)點均操作
su - postgres
psql
create database clusterdb;
\c clusterdb
alter system set shared_preload_libraries='citus';
clusterdb=# select pg_reload_conf();
clusterdb=# select * from pg_available_extensions where name='citus';
name | default_version | installed_version | comment
-------+-----------------+-------------------+----------------------------
citus | 12.1-1 | | Citus distributed database
(1 row)
clusterdb=# \q
systemctl status postgresql-14
systemctl restart postgresql-14
root@pgcn:~$ su - postgres
root@pgcn:~$ psql
postgres=# \c clusterdb
You are now connected to database "clusterdb" as user "postgres".
clusterdb=# show shared_preload_libraries;
shared_preload_libraries
--------------------------
citus
(1 row)
clusterdb=# create extension citus;
CREATE EXTENSION
clusterdb=# \dx
List of installed extensions
Name | Version | Schema | Description
----------------+---------+------------+------------------------------
citus | 12.1-1 | pg_catalog | Citus distributed database
citus_columnar | 11.3-1 | pg_catalog | Citus Columnar extension
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(3 rows)
clusterdb=# \dx+ citus

4.集群配置
4.1修改配置文件
1.coordinate節(jié)點的pg_hba.conf配置:
cat >> /var/lib/pgsql/14/data/pg_hba.conf <<“EOF” host all all 0.0.0.0/0 md5 EOF
2.worker節(jié)點的pg_hba.conf配置:
cat >> /var/lib/pgsql/14/data/pg_hba.conf <<“EOF” host all all 172.18.12.0/24 trust EOF
systemctl restart postgresql-14

4.2 新增節(jié)點
psql -d clusterdb
– 查看工作節(jié)點:
SELECT * FROM master_get_active_worker_nodes();
select * from pg_dist_node; ##管理操作僅僅在協調節(jié)點(cn)上操作: – 節(jié)點可以是ip或者dns name SELECT * from master_add_node(‘172.18.12.81', 5432); SELECT * from master_add_node(‘172.18.12.82', 5432); SELECT * from master_add_node(‘172.18.12.83', 5432); SELECT * from master_add_node(‘172.18.12.84', 5432);
4.3 集群信息
-- 查看工作節(jié)點
clusterdb=# SELECT * FROM master_get_active_worker_nodes();
node_name | node_port
--------------+-----------
172.18.12.83 | 5432
172.18.12.81 | 5432
172.18.12.84 | 5432
172.18.12.82 | 5432
(4 rows)
clusterdb=# select * from pg_dist_node;
nodeid | groupid | nodename | nodeport | noderack | hasmetadata | isactive | noderole | nodecluster | metadatasynced | shouldhaveshards
--------+---------+--------------+----------+----------+-------------+----------+----------+-------------+----------------+------------------
43 | 43 | 172.18.12.82 | 5432 | default | t | t | primary | default | t | t
44 | 44 | 172.18.12.83 | 5432 | default | t | t | primary | default | t | t
46 | 46 | 172.18.12.84 | 5432 | default | t | t | primary | default | t | t
42 | 42 | 172.18.12.81 | 5432 | default | t | t | primary | default | t | t
以上就是PostgreSQL基于Citus實現分布式集群的全過程的詳細內容,更多關于PostgreSQL Citus分布式集群的資料請關注腳本之家其它相關文章!
相關文章
PostgreSQL?16?新特性之正態(tài)分布隨機數函數的示例
這篇文章主要介紹了PostgreSQL?16?新特性之正態(tài)分布隨機數函數,PostgreSQL 16 新增了一個內置的 random_normal() 函數,用于生成這種隨機數,通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-01-01
詳解如何在Ubuntu?18.04上安裝和使用PostgreSQL
關系數據庫管理系統是許多網站和應用程序的關鍵組件,它們提供了一種結構化的方式來存儲、組織和訪問信息,本文演示了如何在?Ubuntu?18.04?VPS?實例上安裝?Postgres,并提供了基本數據庫管理的說明,需要的朋友可以參考下2024-07-07
CentOS 9 Stream 上安裝 PostgreSQL 16的步
在CentOS9Stream上安裝PostgreSQL16,首先添加PostgreSQL官方倉庫,然后禁用系統自帶PostgreSQL版本,避免沖突,使用dnf命令安裝PostgreSQL16,并初始化數據庫,本文給大家介紹CentOS 9 Stream 上安裝 PostgreSQL 16的步驟,感興趣的朋友一起看看吧2024-11-11

