PostgreSQL基于Citus实现的分布式集群

这篇具有很好参考价值的文章主要介绍了PostgreSQL基于Citus实现的分布式集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

前言

因客户的需求,本文详细阐述了PostgreSQL基于Citus实现的分布式集群的全过程。

📣 1.Citus介绍

Citus是一个PostgreSQL扩展,它将Postgres转换为分布式数据库,因此您可以在任何规模上实现高性能。
可以使用这些Citus超能力使您的Postgres数据库在单个Citus节点上扩展。或者,您可以构建一个能够处理高交易吞吐量的大型集群,尤其是在多租户应用程序中,运行快速分析查询,并处理大量时间序列或物联网数据进行实时分析。当数据大小和数量增长时,可以轻松地向集群中添加更多的工作节点并重新平衡碎片。

使用Citus,您可以用新的超能力扩展PostgreSQL数据库:
1.分布式表在PostgreSQL节点集群中进行分片,以组合它们的CPU、内存、存储和I/O容量。
2.引用表被复制到所有节点,以便从分布式表中进行联接和外键,从而获得最大的读取性能。
3.分布式查询引擎路由并并行化集群中分布式表上的SELECT、DML和其他操作。
4.列存储压缩数据,加快扫描速度,并支持在常规表和分布式表上进行快速投影。
5.通过从任何节点进行查询,您都可以利用集群的全部容量进行分布式查询

Citus集群由一个中心的协调节点(CN)和若干个工作节点(Worker)构成。
coordinate:协调节点,一般称为cn,存储所有元数据,不存实际数据,该节点直接对用户开放,等于一个客户端。
worker:工作节点,不存储元数据,存储实际数据。执行协调节点发来的查询请求。一般不直接对用户开放。

PostgreSQL基于Citus实现的分布式集群,PostgreSQL,postgresql,分布式,数据库

📣 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

PostgreSQL基于Citus实现的分布式集群,PostgreSQL,postgresql,分布式,数据库

📣 3.安装citus

✨ 3.1 yum安装

1.安装依赖
yum install -y libcurl-devel lz4 zstd epel-release libzstd-devel unzip libcurl make

2.yum 安装,所有节点均安装
curl https://install.citusdata.com/community/rpm.sh
yum install -y citus_14

PostgreSQL基于Citus实现的分布式集群,PostgreSQL,postgresql,分布式,数据库

✨ 3.2 创建拓展

##以下操作,所有节点均操作

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

PostgreSQL基于Citus实现的分布式集群,PostgreSQL,postgresql,分布式,数据库

📣 4.集群配置

✨ 4.1修改配置文件

1.coordinate节点的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节点的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

PostgreSQL基于Citus实现的分布式集群,PostgreSQL,postgresql,分布式,数据库

✨ 4.2 新增节点

psql -d clusterdb
– 查看工作节点:
SELECT * FROM master_get_active_worker_nodes();

select * from pg_dist_node;
##管理操作仅仅在协调节点(cn)上操作:
– 节点可以是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);文章来源地址https://www.toymoban.com/news/detail-756232.html

✨ 4.3 集群信息

-- 查看工作节点
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实现的分布式集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Linux环境下搭建Hadoop3.3.5伪分布式集群

    目录 架构设计: 一、下载hadoop安装包 二、解压及构建软连接 三、 修改配置文件 1. 配置workers文件   //hadoop02中叫slaves 2. 修改hadoop-env.sh          3. 修改core-site.xml     4. 修改hdfs-site.xml 5. 配置:mapred-site.xml文件   6. 配置yarn-site.xml文件  四、根据hdfs-site.xml的配置项,准备数

    2024年01月19日
    浏览(47)
  • 第100讲:MHA+Atlas实现MySQL主从复制读写分离分布式集群

    Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。 Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来

    2024年02月21日
    浏览(57)
  • 分布式锁实现方案-基于zookeeper的分布式锁实现(原理与代码)

    目录 一、基于zookeeper的分布式锁 1.1 基于Zookeeper实现分布式锁的原理 1.1.1 分布式锁特性说明 1.1.1.1 特点分析 1.1.1.2 本质 1.1.2 Zookeeper 分布式锁实现原理 1.1.2.1 Zookeeper临时顺序节点特性 1.1.2.2 Zookeeper满足分布式锁基本要求 1.1.2.3 Watcher机制 1.1.2.3 总结 1.2 分布式锁流程说明 1.2.1

    2024年04月24日
    浏览(41)
  • Redis集群(分布式缓存):详解持久化、主从同步原理、哨兵机制、Cluster分片集群,实现高并发高可用

            单机式Redis存在以下问题,因此需要Redis集群化来解决这些问题        Redis数据快照,简单来说就是 把内存中的所有数据都记录到磁盘中 。当Redis实例故障重启后,从 磁盘读取快照文件,恢复数据 。快照文件称为RDB文件,默认是保存在当前运行目录。     (1)

    2024年02月08日
    浏览(59)
  • 基于RocketMQ实现分布式事务

    在一个微服务架构的项目中,一个业务操作可能涉及到多个服务,这些服务往往是独立部署,构成一个个独立的系统。这种分布式的系统架构往往面临着分布式事务的问题。为了保证系统数据的一致性,我们需要确保这些服务中的操作要么全部成功,要么全部失败。通过使用

    2024年03月12日
    浏览(72)
  • 基于zookeeper实现分布式锁

    目录 zookeeper知识点复习 相关概念 java客户端操作 实现思路分析  基本实现 初始化链接 代码落地  优化:性能优化  实现阻塞锁 监听实现阻塞锁 优化:可重入锁 zk分布式锁小结  Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的 功

    2024年02月02日
    浏览(61)
  • 微服务---分布式多级缓存集群实现方案(Caffeine+redis+nginx本地缓存+Canal数据同步)

    传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时,会对数据库产生冲击 多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻T

    2024年02月12日
    浏览(41)
  • PostgreSQL-分布式事务之两阶段提交

    在日常操作中,对于一组相关操作,通常需要其全部成功或全部失败。 在关系型数据库中,将这组相关操作称为“ 事务 ”。 在一个事务中,多个插入、修改、删除操作要么全部成功,要么全部失败,这称为“ 原子性 ”,实际上一个事务还需要有其他三个特性,即“ 一致性

    2024年02月04日
    浏览(48)
  • 基于 Redis 实现分布式限流

    分布式限流是指通过将限流策略嵌入到分布式系统中,以控制流量或保护服务,保证系统在高并发访问情况下不被过载。 分布式限流可以防止系统因大量请求同时到达导致压力过大而崩溃,从而提高系统的稳定性和可靠性。同时,它可以使得业务资源能够更好地分配,提高系

    2024年02月12日
    浏览(43)
  • 3、基于Zookeeper实现分布式锁

    3.1.1 安装启动 如下,说明启动成功: 3.1.2 相关概念 Zookeeper提供一个多层级的节点命名空间(节点称为znode),每个节点都用一个以斜杠(/)分隔的路径表示,而且每个节点都有父节点(根节点除外),非常类似于文件系统。并且每个节点都是唯一的。 1、znode节点有四种类型

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包