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

2.架構(gòu)設(shè)計(jì)
| 主機(jī)名 | IP | 操作系統(tǒng) | 內(nèi)存/空間 | 角色 | 說(shuō)明 |
|---|---|---|---|---|---|
| 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é)點(diǎn)均安裝
curl https://install.citusdata.com/community/rpm.sh yum install -y citus_14

3.2 創(chuàng)建拓展
##以下操作,所有節(jié)點(diǎn)均操作
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é)點(diǎn)的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é)點(diǎn)的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é)點(diǎn)
psql -d clusterdb
– 查看工作節(jié)點(diǎn):
SELECT * FROM master_get_active_worker_nodes();
select * from pg_dist_node; ##管理操作僅僅在協(xié)調(diào)節(jié)點(diǎn)(cn)上操作: – 節(jié)點(diǎn)可以是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é)點(diǎn)
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實(shí)現(xiàn)分布式集群的全過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于PostgreSQL Citus分布式集群的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
postgresql數(shù)據(jù)庫(kù)如何查看數(shù)據(jù)中表的信息
這篇文章主要給大家介紹了關(guān)于postgresql數(shù)據(jù)庫(kù)如何查看數(shù)據(jù)中表信息的相關(guān)資料,要查詢數(shù)據(jù)表信息,需要用到 系統(tǒng)表或系統(tǒng)視圖等,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04
Postgresql刪除數(shù)據(jù)庫(kù)表中重復(fù)數(shù)據(jù)的幾種方法詳解
本文詳細(xì)講解了Postgresql刪除數(shù)據(jù)庫(kù)表中重復(fù)數(shù)據(jù)的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
Vcenter清理/storage/archive空間的處理方式
通過(guò)SSH登陸到Vcenter并檢查/storage/archive目錄發(fā)現(xiàn)占用過(guò)高,該目錄用于存儲(chǔ)歸檔的日志文件和歷史數(shù)據(jù),解決方案是保留近30天的歸檔文件,這篇文章主要給大家介紹了關(guān)于Vcenter清理/storage/archive空間的處理方式,需要的朋友可以參考下2024-11-11
postgresql實(shí)現(xiàn)對(duì)已有數(shù)據(jù)表分區(qū)處理的操作詳解
這篇文章主要為大家詳細(xì)介紹了postgresql實(shí)現(xiàn)對(duì)已有數(shù)據(jù)表分區(qū)處理的操作的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
PostgreSQL簡(jiǎn)介及實(shí)戰(zhàn)應(yīng)用
PostgreSQL是一種功能強(qiáng)大的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),以其穩(wěn)定性、高性能、擴(kuò)展性和復(fù)雜查詢能力在眾多項(xiàng)目中得到廣泛應(yīng)用,本文將從基礎(chǔ)概念講起,逐步深入到高級(jí)特性、性能優(yōu)化和實(shí)戰(zhàn)應(yīng)用,幫助讀者全面掌握PostgreSQL,感興趣的朋友跟隨小編一起學(xué)習(xí)吧2025-08-08
解決postgresql 自增id作為key重復(fù)的問(wèn)題
這篇文章主要介紹了解決postgresql 自增id作為key重復(fù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
postgresql數(shù)據(jù)庫(kù)執(zhí)行計(jì)劃圖文詳解
了解PostgreSQL執(zhí)行計(jì)劃對(duì)于程序員來(lái)說(shuō)是一項(xiàng)關(guān)鍵技能,執(zhí)行計(jì)劃是我們優(yōu)化查詢,驗(yàn)證我們的優(yōu)化查詢是否確實(shí)按照我們期望的方式運(yùn)行的重要方式,這篇文章主要給大家介紹了關(guān)于postgresql數(shù)據(jù)庫(kù)執(zhí)行計(jì)劃的相關(guān)資料,需要的朋友可以參考下2024-01-01
在postgresql數(shù)據(jù)庫(kù)中判斷是否是數(shù)字和日期時(shí)間格式函數(shù)操作
這篇文章主要介紹了在postgresql數(shù)據(jù)庫(kù)中判斷是否是數(shù)字和日期時(shí)間格式函數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12

