当前位置: 首页 > news >正文

Docker 安装 Citus 单节点集群:全面指南与详细操作

Docker 安装 Citus 单节点集群:全面指南与详细操作

文章目录

    • Docker 安装 Citus 单节点集群:全面指南与详细操作
      • 一 服务器资源
      • 二 部署图
      • 三 安装部署
        • 1 创建网络
        • 2 运行脚本
          • 1)docker-compose.cituscd1.yml
          • 2)docker-compose.cituswk1.yml
          • 3)docker-compose.cituswk2.yml
          • 4)docker-compose.cituswk3.yml
      • 四 配置访问
      • 五 节点添加
      • 六 示例创建表

本文详细介绍了如何使用 Docker 安装 Citus 单节点集群,并为其配置多个工作节点与协调器。通过具体的服务器资源表、部署示意图,以及 docker-compose 脚本,逐步指导读者如何创建 Docker 网络、配置 PostgreSQL 的 postgresql.confpg_hba.conf,并完成节点的添加与管理。此外,本文还提供了完整的 SQL 命令示例,帮助用户检查节点健康状况、查看节点表信息、创建分布式表和分片管理。无论是初学者还是有经验的开发者,都可以通过本文轻松完成 Citus 集群的安装与配置。

一 服务器资源

域名解释服务器IP端口角色备注
pg-cd1192.168.0.115434coordinator
pg-wk1192.168.0.115432worker
pg-wk2192.168.0.215432worker
pg-wk3192.168.0.315432worker

二 部署图

在这里插入图片描述

三 安装部署

1 创建网络
docker network create --driver bridge dbnet
2 运行脚本
1)docker-compose.cituscd1.yml
version: "3"services:pg-cd-1:image: citusdata/citus:12.1.3restart: alwayscontainer_name: pg-cd-1environment:- TZ=Asia/Shanghai- POSTGRES_USER=postgres- POSTGRES_PASSWORD=123456- PGUSER=postgres- PGPASSWORD=123456working_dir: /postgresqlports:- "15434:5432"networks:- dbnetextra_hosts:- pg-cd1:192.168.0.1- pg-wk1:192.168.0.1- pg-wk2:192.168.0.2- pg-wk3:192.168.0.3volumes:- ./postgresql/data:/var/lib/postgresql/data- ./postgresql/healthcheck-volume:/healthcheckhealthcheck:test: ["CMD-SHELL", "pg_isready -U postgres"]interval: 30stimeout: 10sretries: 5
networks:dbnet:external: true
2)docker-compose.cituswk1.yml
version: "3"services:pg-wk-1:image: citusdata/citus:12.1.3restart: alwayscontainer_name: pg-wk-1environment:- TZ=Asia/Shanghai- POSTGRES_USER=postgres- POSTGRES_PASSWORD=123456- PGUSER=postgres- PGPASSWORD=123456working_dir: /postgresqlnetworks:- dbnetextra_hosts:- pg-cd1:192.168.0.1- pg-wk1:192.168.0.1- pg-wk2:192.168.0.2- pg-wk3:192.168.0.3ports:- "15432:5432"volumes:- ./postgresql/data:/var/lib/postgresql/data- ./postgresql/healthcheck-volume:/healthcheckhealthcheck:test: ["CMD-SHELL", "pg_isready -U postgres"]interval: 30stimeout: 10sretries: 5
networks:dbnet:external: true
3)docker-compose.cituswk2.yml
version: "3"services:pg-wk-2:image: citusdata/citus:12.1.3restart: alwayscontainer_name: pg-wk-2environment:- TZ=Asia/Shanghai- POSTGRES_USER=postgres- POSTGRES_PASSWORD=123456- PGUSER=postgres- PGPASSWORD=123456working_dir: /postgresqlnetworks:- dbnetextra_hosts:- pg-cd1:192.168.0.1- pg-wk1:192.168.0.1- pg-wk2:192.168.0.2- pg-wk3:192.168.0.3ports:- "15432:5432"volumes:- ./postgresql/data:/var/lib/postgresql/data- ./postgresql/healthcheck-volume:/healthcheckhealthcheck:test: ["CMD-SHELL", "pg_isready -U postgres"]interval: 30stimeout: 10sretries: 5
networks:dbnet:external: true
4)docker-compose.cituswk3.yml
version: "3"services:pg-wk-3:image: citusdata/citus:12.1.3restart: alwayscontainer_name: pg-wk-3environment:- TZ=Asia/Shanghai- POSTGRES_USER=postgres- POSTGRES_PASSWORD=123456- PGUSER=postgres- PGPASSWORD=123456working_dir: /postgresqlnetworks:- dbnetextra_hosts:- pg-cd1:192.168.0.1- pg-wk1:192.168.0.1- pg-wk2:192.168.0.2- pg-wk3:192.168.0.3ports:- "15432:5432"volumes:- ./postgresql/data:/var/lib/postgresql/data- ./postgresql/healthcheck-volume:/healthcheckhealthcheck:test: ["CMD-SHELL", "pg_isready -U postgres"]interval: 30stimeout: 10sretries: 5
networks:dbnet:external: true

四 配置访问

1 修改 postgresql.conf 配置。

# Uncomment listen_addresses for the changes to take effect
listen_addresses = '*'

2 配置postgres客户端访问,修改 pg_hba.conf 。

# 每个节点都得配置,重启的时候有互相通信。
host    all             all             192.168.0.1/32        trust
host    all             all             192.168.0.3/32       trust
host    all             all             192.168.0.2/32       trust

五 节点添加

# 查看扩展
select * from pg_available_extensions;# 设置协调节点
SELECT citus_set_coordinator_host('pg-cd1', 15434);# 设置工作节点
SELECT citus_add_node('pg-wk1', 15432);
SELECT citus_add_node('pg-wk2', 15432);
SELECT citus_add_node('pg-wk3', 15432);# citus_get_active_worker_nodes() 函数返回活动工作线程主机名和端口号的列表。
SELECT * from citus_get_active_worker_nodes();# 检查所有节点之间的连通性
SELECT * FROM citus_check_cluster_node_health();# 集群中工作节点的信息
select * from pg_dist_node# 查看集群表信息
select * from citus_tables;# citus_total_relation_size 获取指定分布式表的所有分片使用的总磁盘空间
SELECT pg_size_pretty(citus_total_relation_size('devices'));# 查看表节点分布
SELECTdp.logicalrelid::regclass AS table_name,n.nodename,n.nodeport,pg_size_pretty(pg_total_relation_size(p.placementid::regclass)) AS shard_size
FROMpg_dist_partition dp
JOINpg_dist_shard s ON dp.logicalrelid = s.logicalrelid
JOINpg_dist_placement p ON s.shardid = p.shardid
JOINpg_dist_node n ON p.groupid = n.groupid
WHEREn.noderole = 'primary'
ORDER BYdp.logicalrelid,n.nodename;# 查看分片信息
select * from citus_shards

六 示例创建表

创建分布式表

CREATE TABLE events (id bigserial NOT NULL,device_id bigint,event_id bigserial,event_time timestamptz default now(),data jsonb not null,primary key (id)
);CREATE INDEX idx_dev_eve ON events (device_id, event_id);-- distribute the events table across shards placed locally or on the worker nodes
SELECT create_distributed_table('events', 'id', 'hash');INSERT INTO events (device_id, data)
SELECT s % 100, ('{"measurement":'||random()||'}')::jsonb FROM generate_series(1,10000) s;CREATE TABLE devices (device_id bigint primary key,device_name text,device_type_id int
);
CREATE INDEX ON devices (device_type_id);-- co-locate the devices table with the events table
SELECT create_distributed_table('devices', 'device_id', colocate_with := 'events');-- insert device metadata
INSERT INTO devices (device_id, device_name, device_type_id) 
SELECT s, 'device-'||s, 55 FROM generate_series(0, 99) s;

相关文章:

Docker 安装 Citus 单节点集群:全面指南与详细操作

Docker 安装 Citus 单节点集群:全面指南与详细操作 文章目录 Docker 安装 Citus 单节点集群:全面指南与详细操作一 服务器资源二 部署图三 安装部署1 创建网络2 运行脚本1)docker-compose.cituscd1.yml2)docker-compose.cituswk1.…...

Arthas redefine(加载外部的.class文件,redefine到JVM里 )

文章目录 二、命令列表2.2 class/classloader相关命令2.2.3 redefine(加载外部的.class文件,redefine到JVM里 )举例1:加载新的代码,jad/mc 命令使用举例2:上传 .class 文件到服务器的技巧 本人其他相关文章…...

C++教程(三):c++常用的配置文件类型

目录 1. INI 文件 2. JSON 文件 3. YAML 文件 4. XML 文件 5. TOML 文件 6. 二进制配置文件(Protocol Buffers, MessagePack, Avro 等) 总结 在 C 项目中,常用的配置文件类型有多种选择,具体选择取决于项目的复杂性、可读性…...

Arduino Uno控制雨滴传感器模块的设计方案

以下是Arduino Uno控制雨滴传感器模块的设计方案: 一、硬件准备: 1. Arduino Uno 开发板一块。 2. 雨滴传感器模块一个。 3. 杜邦线若干。 4. 9V直流电源一个。 二、硬件连接: 1. 将Arduino Uno板的Vin引脚、GND引脚分别连接到9V直流电…...

华为常见命令手册

常见命令 display ip interface brief —> 查看设备上的每个接口的IP地址【地址/掩码/状态】 display interface gi0/0/0 → 查看该接口的MAC 地址 ipconfig → 查看 PC 上面的 IP地址 display arp → 查看设备的 ARP 表 arp -a → 查看 PC 上面的 ARP 表 display m…...

TinyAP:使用TinyML对抗Wi-Fi攻击的智能接入点

论文标题: 英文:TinyAP: An intelligent Access Point to combat Wi-Fi attacks using TinyML中文:TinyAP:使用TinyML对抗Wi-Fi攻击的智能接入点 作者信息: Anand Agrawal 和 Rajib Ranjan Maiti,来自印…...

grafana频繁DataSourceError问题

背景 随着 Grafana 数据量的不断增加,逐渐暴露出以下问题: Grafana 页面加载缓慢;Grafana 告警频繁出现 DatasourceError 错误。 对于第一个问题,大家可以参考这篇文章:Grafana 加载缓慢的解决方案。 不过&#xf…...

python-ds:Python 中的数据结构库(适用于面试的数据结构和算法合集)

在软件开发中,数据结构是组织和存储数据的方式,对算法的效率和程序的性能至关重要。Python 提供了许多内置的数据结构,但在一些复杂的应用场景中,原生数据结构可能无法满足特定需求。这时,一个功能强大、易于使用的数据…...

AccessoriesqueryController

目录 1、 AccessoriesqueryController 1.1、 库存配件查询 1.2、 查询仓库 1.2.1、 //把数据库数据加到表格:跟默认然一行数据进行合并 1.3、 /// 查询 1.3.1、 配件编码查询 1.3.2、 配件名称查询 1.3.3、 配件类型查询 AccessoriesqueryControlle…...

M3u8视频由手机拷贝到电脑之后,通过potplayer播放报错找不到文件地址怎么解决?

该文章前面三节主要介绍M3u8视频是什么,视频播放错误(找不到地址)的解决方法在后面 M3U8是一种多媒体播放列表文件格式,主要用于流媒体播放。 一、文件格式特点 1. 文本文件:M3U8是一个采用 UTF-8 编码的文本文件,这意味着它可…...

【分布式微服务云原生】windows+docker+mysql5.7.44一主一从主从复制

目录 1. 主库设置2. 从库设置3. 验证主从复制内容汇总表格 摘要: 在Windows系统上通过Docker部署MySQL主从复制,以下是详细的步骤和命令,帮助你设置一主一从的MySQL复制环境。 1. 主库设置 步骤1:运行MySQL主库容器 docker run …...

鸿蒙NEXT开发-界面渲染(条件和循环)(基于最新api12稳定版)

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...

TypeScript 设计模式之【状态模式】

文章目录 状态模式:优雅切换的交通信号灯状态模式的奥秘状态模式有什么利与弊?如何使用状态模式来优化你的系统代码实现案例状态模式的主要优点状态模式的主要缺点状态模式的适用场景总结 状态模式:优雅切换的交通信号灯 当你站在繁忙的十字路口&#…...

MongoDB 聚合管道

参考: 聚合管道 - MongoDB 手册 v7.0 介绍 聚合管道由一个或多个处理文档的阶段组成: 每个阶段对输入文档执行一个操作。例如,某个阶段可以过滤文档、对文档进行分组并计算值。 从一个阶段输出的文档将传递到下一阶段。 一个聚合管道可以返回针对文档…...

python-patterns:Python 设计模式大全

python-patterns 是一个开源的 Python 项目,它提供了各种经典的设计模式的 Python 实现。设计模式是一种针对常见软件设计问题的可复用解决方案,通过使用设计模式,开发者可以编写出结构更加合理、易于维护和扩展的代码。 Python 是一门动态语…...

Nginx编译所需基本库pcre、zlib、openssl

一、基本库介绍 pcre:(Perl Compatible Regular Expressions) 是一个用 C 语言编写的正则表达式库,用于进行文本匹配和搜索。它提供了与 Perl 正则表达式兼容的功能,并且广泛用于许多不同的软件项目中,如网…...

C#进阶:探索嵌套类、匿名类及对象初始化器的强大运用

在C#中,嵌套类、匿名类以及对象初始化器是几种强大的特性,它们可以极大地提高代码的可读性和灵活性。下面分别介绍这些特性的运用。 1. 嵌套类 嵌套类是指定义在另一个类内部的类。内部类可以访问其外围类的所有成员(包括私有成员&#xff…...

匈牙利算法模板

P3386 【模板】二分图最大匹配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路:最模板的一集.还未匹配则匹配&#xff0c;否则之前一个给现在这个让位置. int n,m,e; vector<int> vct[505]; int match[505]; bool vis[505]; bool mark[505][505]; bool dfs(int s)…...

ubuntu 安装harbor

#安装包 wget https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-offline-installer-v2.10.3.tgz wget https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-offline-installer-v2.10.3.tgz.asc#导入签名公钥 gpg --keyserver hkps://ke…...

Python/大数据/机器识别毕业设计选题题目推荐

基于Python和Diango在线购物商城系统报告文档指导搭建视频 基于深度学习的人脸识别与管理系统&#xff0c;Python实现 基于Python/机器学习链家网新房数据可视化及预测系统 Python豆瓣电影情感分析推荐系统爬虫可视化&#xff0c;过滤算法 基于python的django框架生鲜商城管…...

基于Python的人工智能应用案例系列(17):LSTM正弦波预测

概述 本案例展示了如何使用LSTM&#xff08;长短期记忆网络&#xff09;来预测正弦波序列的未来值。由于正弦波具有周期性&#xff0c;传统的神经网络难以准确预测其上升或下降趋势&#xff0c;而LSTM则能够通过学习值的模式来进行更精准的预测。本案例将训练LSTM模型并预测正弦…...

Python空间地表联动贝叶斯地震风险计算模型

&#x1f3af;要点 使用贝叶斯推断模型兼顾路径和场地效应&#xff0c;量化传统地理统计曲线拟合技术。使用破裂和场地特征等地质信息以及事件间残差和事件内残差描述数学模型模型使用欧几里得距离度量、角距离度量和土壤差异性度量确定贝叶斯先验分布和后验分布参数&#xff…...

虚幻引擎-设置UI自适应屏幕大小

在游戏中&#xff0c;如果想实现不同分辨率下&#xff0c;都可以支持当前的UI界面布局&#xff0c;都需要用到锚点功能。 ‌虚幻引擎中的UI锚点&#xff08;Anchor&#xff09;是指控件在屏幕或父物体上的固定点&#xff0c;用于确定控件的位置和布局。‌ 锚点的作用是确保UI元…...

C++继承的三种方式[ACCESS]

C继承的定义 两个类的继承关系在派生类中声明&#xff0c;派生类定义使用以下语法&#xff1a; class DerivedClass: [ACCESS] BaseClass{ /…/ }; 冒号&#xff08;:&#xff09;后的[ACCESS]是继承的最高权限级别符&#xff0c;可以是以下三个值&#xff08;存取权限级别&am…...

idea 同一个项目不同模块如何设置不同的jdk版本

在IntelliJ IDEA中&#xff0c;可以为同一个项目中的不同模块设置不同的JDK版本。这样做可以让你在同一个项目中同时使用多个Java版本&#xff0c;这对于需要兼容多个Java版本的开发非常有用。以下是设置步骤&#xff1a; 打开项目设置&#xff1a; 在IDEA中&#xff0c;打开你…...

1-仙灵之谜(区块链游戏详情介绍)

1-仙灵之谜&#xff08;区块链游戏详情介绍&#xff09; 前言&#xff08;该游戏仅供娱乐&#xff09;正文 前言&#xff08;该游戏仅供娱乐&#xff09; 依稀记得本科那会儿参加了一个区块链实验室&#xff0c;那时每周末大家都会爬山或者抽出一下午讨论区块链以及未来&#x…...

基于51单片机的温湿度上下限监测预警proteus仿真

地址&#xff1a;https://pan.baidu.com/s/1hSprWBYhKKx8Txzaj33YPA?pwdjp3d 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMic…...

考核总结.

事件循环 单线程的js在处理异步事件时进行的一种循环过程。 在 JS中任务分为同步与异步任务&#xff0c;其中异步任务又分为两种&#xff1a;宏任务和 微任务。宏任务和微任务的执行顺序&#xff1a;总方针是先同步再异步&#xff0c;异步中先微任务&#xff0c;在宏任务。一次…...

后端学习路线

后端学习路线 一、编程语言 至少需要学习一门编程语言&#xff0c;建议学习JAVA和GO语言。 二、数据库 数据库分为关系型数据库和非关系型数据库&#xff0c;区别在于分关系型数据库常用于大数据&#xff0c;而非关系型数据库一般不在大数据方面使用。 关系型数据库&#x…...

车辆重识别(注意力 U-Net:学习在哪些区域寻找胰腺)论文阅读2024/10/01

什么是注意力机制&#xff1f; 什么是加性注意力&#xff1f; 大致说一下流程&#xff1a; 对于一张特征图来说&#xff0c;对于这张图中的每一个像素向量&#xff08;例如a&#xff09;&#xff0c;计算该向量与所有像素向量的相似度&#xff0c;对这些相似度进行激活函数…...

网站建设后台怎么弄/关联词有哪些五年级

所有题目均有五种语言实现。C实现目录、C++ 实现目录、Python实现目录、Java实现目录、JavaScript实现目录...

中企动力网站建设方案/建设优化网站

有些网站图片做了防盗处理&#xff0c;这时可以通过伪造http_referer &#xff0c;让网站认为是网站内的访问之后把相应的内容保存下来&#xff01;步骤一&#xff1a;引入dll: /Files/xiachufeng/Interop.MSXML2.rar步骤二: 编写函数 /// <summary>/// 伪造http_refere…...

广东网站优化/网上广告宣传怎么做

前几天写了个ffmpeg版本&#xff0c;今天特意抽空改写个vlc版本&#xff0c;之前vlc播放视频后&#xff0c;被接管了不能识别到鼠标&#xff0c;需要重新编译vlc源码得到支持鼠标消息的版本。/*** vlc视频播放类 作者:feiyangqingyun(QQ:517216493) 2018-5-2* 1:多线程实时播放…...

十档行情免费网站/线上营销渠道

3.D:/php下复制php.ini-development文件&#xff0c;并将文件名改为php.ini&#xff0c;修改php配置文件php.ini&#xff0c;保存即可。第730行 ; extension_dir "ext" 先去前面的分号再改为 extension_dir "D:\php\ext"第919行 ;date.timezone 先去前面…...

wordpress 不显示ip/什么是sem推广

现在这个年代&#xff0c;你要是不懂高并发&#xff0c;你都不好意思说自己是搞互联网的! 一、什么是并发&#xff0c;什么是高并发 并发&#xff0c;两个及以上的行为一起发生&#xff0c;比如你一边吃饭一边看电视 高并发&#xff0c;多个行为&#xff08;至于是多少&…...

做网络歌手的网站/百度一下你就知道123

比explain更加详细的分析计划&#xff1a;Query Profiler 2019-05-10 14:47:45 阅读&#xff1a;78 来源&#xff1a; 互联网 标签&#xff1a;profile show explain sql profiles Profiler query Query 一、前言 这篇博客是之前总结的一个知识点&#xff0c;也是偶然看别人…...