使用 MinIO 和 PostgreSQL 简化数据事件

本教程将教您如何使用 Docker 和 Docker Compose 在 MinIO 和 PostgreSQL 之间设置和管理数据事件,也称为存储桶或对象事件。

您可能已经在利用 MinIO 事件与外部服务进行通信,现在您将通过使用 PostgreSQL 自动化和简化数据事件管理来增强数据处理能力。本文是为那些对 MinIO、PostgreSQL 和 Docker 有基本了解的人量身定制的,提供了一种实践方法来部署一个 MinIO 和 PostgreSQL 协同工作的内聚环境。

让我们深入了解如何使用 Docker Compose 部署这些服务,并探索将事件从 MinIO 发布到 PostreSQL 的实际应用。

先决条件:

  • 已安装 Docker 和 Docker Compose
  • MinIO、PostgreSQL 和 Docker 的基础知识
  • 使用 Docker 访问 MinIO UI 或命令行界面

MinIO 和集成服务

Kubernetes 原生 MinIO 与各种云原生技术无缝集成。本指南将利用 MinIO 对 Postgres、Redis、Kafka 等服务的原生支持。这些集成对于跨不同云环境的流畅数据管理至关重要。

我们将使用 Docker Compose 创建一个用户友好的配置驱动设置。 本教程提供了一条简单的途径来集成高级通知功能和微调 MinIO 设置,以满足项目的特定要求。

数据管理中的实际应用

正如所展示的那样,MinIO 与 PostgreSQL 的集成在各个领域开辟了大量的实际应用:

  • 数据分析和报告:自动捕获 MinIO 存储桶中的数据变化,并使用 PostgreSQL 进行分析和生成见解。

  • 备份和恢复:通过跟踪 MinIO 中存储的数据的每一次更改,实施强大的数据备份解决方案。

  • 事件驱动型应用:开发响应 MinIO 中数据更改的应用,例如在上传新数据时触发进程或发出警报。

  • 合规性和审核:维护数据访问和更改的日志,以符合法规标准。

此设置在实时数据跟踪至关重要的环境中特别有用,例如金融服务、医疗保健和电子商务。

部署 MinIO 和 PostgreSQL 服务

在 MinIO 中设置事件通知

MinIO 中的事件通知通过各种方法进行配置,包括使用用户界面、运行命令行实用程序以及使用各种编程语言和 SDK 编写脚本。让我们来看看每种方法的优缺点:

  • MinIO 控制台:此方法提供用户友好的图形界面,允许您直观地管理 Webhook 设置。

  • MinIO 的 mc 命令行工具:对于那些喜欢命令行界面的用户,MinIO 提供了 mc 命令工具,它允许对 webhook 进行详细且可编写脚本的配置。

  • 代码和脚本:借助 Bash 和 Python 脚本,此方法在设置 Webhook 时提供了高度的灵活性和自动化。

使用 Docker-Compose 部署:MinIO + Postgres

我们将首先设置 MinIO 及其环境以及 PostgreSQL 数据库。这涉及部署 Docker Compose 文件(如果尚未运行这些服务)。

我们将使用下面的 docker-compose YAML 文件,使用 Docker Compose 部署和启动 MinIO 和 PostgreSQL。

version: '3.8'
services:minio:container_name: minioimage: minio/minioenvironment:MINIO_ACCESS_KEY: minioMINIO_SECRET_KEY: minio123command: server /data --console-address ":9001"ports:- "9000:9000"- "9001:9001"volumes:- minio_data:/datapostgres:container_name: postgresimage: postgres:alpineenvironment:POSTGRES_DB: postgresPOSTGRES_USER: myuserPOSTGRES_PASSWORD: mypasswordports:- "5432:5432"volumes:- postgres_data:/var/lib/postgresql/datavolumes:minio_data:postgres_data:

此 docker-compose 结构概述了两个服务及其各自的配置变量,以及每个服务的持久卷和网络端口转发。

When configuring the PostgreSQL connection in MinIO, include the user and password in the connection string. For instance, your connection string in the MinIO configuration might look like: connection_string=“user=myuser password=mypassword host=postgres dbname=postgres port=5432 sslmode=disable”. This ensures that MinIO can successfully connect and authenticate with the PostgreSQL database.

在 PostgreSQL 中为存储桶事件创建表

在设置 Flask 应用程序来记录和处理来自 MinIO 存储桶的事件通知之前,我们首先需要在 PostgreSQL 中建立适当的数据库结构。这涉及创建一个专用表来记录这些事件。

在 PostgreSQL 中创建“事件”表

首先访问 PostgreSQL 容器。这可以通过执行“docker exec”命令来完成。接下来,您需要创建“事件”表。此表旨在存储有关每个事件的各种详细信息。在 PostgreSQL 容器中执行以下命令:

docker exec postgres psql -U myuser -d postgres -c "DROP TABLE IF EXISTS events; CREATE TABLE events (key TEXT PRIMARY KEY, value JSONB);"

创建表后,通过在命令提示符下键入 exit 退出 PostgreSQL 容器:

我们已准备好使用事件来记录和分析与 MinIO 存储桶的交互,以系统地跟踪存储桶中的文件上传、修改或删除等事件。

使用本地 PostgreSQL 服务器设置事件通知

若要在 MinIO 中使用在 Docker 环境中的主机上运行的 PostgreSQL 服务器设置事件通知,请在连接字符串中用作 host.docker.internal 主机。此特殊 DNS 名称解析为主机使用的内部 IP 地址。此设置在我之前的文章 From Docker to Localhost 中有详细介绍。

如果 postgres 在 localhost 上运行,则连接字符串将为:

connection_string="user=myuser password=mypassword host=host.docker.internal dbname=postgres port=5432 sslmode=disable"

这种方法对于确保 Docker 容器中的 MinIO 能够与主机上运行的 PostgreSQL 进行有效通信至关重要。

MinIO UI 和 mc :增强数据管理的双重方法

在云存储和数据管理领域,灵活性和控制力至关重要。MinIO 通过其双重方法满足了这一需求:直观的 MinIO 控制台 (UI) 和强大的 mc (MinIO 客户端) 命令行界面 (CLI)。本教程包含使用两者的说明,因此您可以选择这个多功能且全面的工具集的任何元素。

MinIO UI: 图形用户界面用户友好,非常适合那些喜欢可视化配置和管理方法的人。它允许您轻松浏览存储桶、设置事件通知和监控存储。UI 对于快速设置和更熟悉点击式环境的用户特别有益。

mc 命令行工具:另一方面, mc CLI 提供对 MinIO 实例的精细控制。它是用于脚本编写、自动化和详细配置的强大工具。该接口非常适合需要精确控制其存储、网络和数据管理任务的高级用户。CLI 有助于执行复杂的任务,例如批处理操作、自动备份脚本以及跨各种环境直接操作对象。

通过利用 UI 和 CLI,MinIO 用户可以享受两全其美的优势:易用性和高级控制,确保高效灵活的数据管理体验。

让我们看一下管理数据事件的不同方法。

使用 MinIO UI

在 MinIO 用户界面中配置 PostgreSQL:

打开浏览器并转到“http://localhost:9001”。使用在安装过程中创建的 MinIO 凭据登录。导航到 MinIO 控制台中的事件通知设置,单击“添加事件目标”,然后选择“PostgreSQL”作为服务。

如下面的屏幕截图所示,为我们希望创建的存储桶事件输入标识符“minio-postgres-demo”,然后继续配置所需的参数。

如前所述,通过分配“连接字符串”,我们可以将 Postgres 容器设置为主机;同样,将“表”名称“事件”添加为目标的表名称。

设置 PostgreSQL 服务终结点的过程涉及使用环境变量或设置运行时配置设置。指定这些设置后,需要重新启动 MinIO 服务器才能生效。这是因为 MinIO 在启动时加载其配置,而在 UI 中所做的更改需要重新启动才能被系统识别和实现。

重新启动 MinIO 服务器:

请务必注意,仅在 UI 中配置设置不会自动触发 MinIO 服务的重启。因此,在完成 PostgreSQL 事件通知的 UI 配置后,应使用带有 docker exec minio 前缀的命令手动重新启动 MinIO 部署。此步骤可确保获取配置更改,并且事件通知开始按预期运行。

docker exec minio mc admin service restart

创建存储桶:

要在 PostgreSQL 中有效地使用 MinIO 中的事件通知,请先在 MinIO 部署中创建一个存储桶。在此存储桶中,您希望监控的所有事件都将发生。出于本指南的目的,我们将此存储桶命名为“test”。此名称应与事件通知配置中使用的命名一致,以确保功能正常。

订阅存储桶通知事件:

成功创建存储桶事件后,我们可以继续访问要为其订阅事件的存储桶。以下屏幕截图为名为“test”的存储桶订阅了“minio-postgres-demo”事件,该事件将针对我们的 PostgreSQL 部署。在这里,您可以指定任何前缀或后缀,也可以选择要订阅的事件类型。

在 MinIO UI 的下一个屏幕截图中,我们可以看到 “test” 存储桶已成功订阅我们之前创建的 “event”。

使用 mc 命令行实用程序

使用 mc 的以 CLI 为中心的方法提供了一种强大而有效的方法来将 MinIO 与 PostgreSQL 集成,从而增强了云存储操作中的整体数据工作流和管理。对于那些喜欢将自动化/脚本和手动控制相结合来管理云存储和数据流程的人来说,这特别有益。

部署上述 docker-compose.yaml 后,继续使用 MinIO 客户端 mc 命令行实用工具。此设置涉及在 MinIO 中创建别名、配置 PostgreSQL 终端节点以及设置存储桶通知。

我们将在“minio”容器的交互式终端内工作,我们可以通过运行单个命令来生成该容器:

docker exec -it minio /bin/sh

从这个 shell 中运行 mc 命令的原因是 Docker minio/minio 镜像已经安装了 mc 并准备就绪。

配置 MinIO 以从 MinIO 容器内直接向 PostgreSQL 数据库发送事件通知

进入容器后,我们可以访问 mc 实用程序,从而可以继续执行配置 MinIO 以将事件直接发送到 PostgreSQL 的步骤。

为您的 MinIO 实例设置别名。这简化了将来的命令:

mc alias set myminio http://localhost:9000 minio minio123

创建“test”存储桶以监控:

mc mb myminio/test

配置 MinIO 实例以连接到 PostgreSQL 数据库以获取事件通知:

mc admin config set myminio notify_postgres:minio-postgres-demo connection_string="user=myuser password=mypassword host=postgres dbname=postgres port=5432 sslmode=disable" table="events" format="namespace"

重新启动 MinIO 服务以应用新配置:

mc admin service restart myminio

为特定存储桶操作(如 PUT、GET 和 DELETE)设置事件通知:

mc event add myminio/test arn:minio:sqs::minio-postgres-demo:postgresql --event put,get,delete

有关更详细的说明和信息,您可以参考 MinIO 文档中的存储桶通知和监控存储桶和对象事件。

验证设置

在 MinIO 中设置事件通知并在 PostgreSQL 中创建必要的“事件”表后,验证一切是否正常运行至关重要,例如,每当指定存储桶上有操作(如 PUT、GET、DELETE)时,MinIO 是否正确地将事件数据发送到 PostgreSQL。

让我们确认事件数据是否按预期记录。

首先,创建一个应触发事件通知的方案。例如,将文件上传到您为通知设置的 MinIO 存储桶。此操作应生成一个事件,该事件将发送到 PostgreSQL 数据库。

创建“sample.txt”文件并将其复制到“myminio/test”存储桶:

echo "Sample Content" > sample.txt
mc cp sample.txt myminio/test/

使用“exit”退出“docker exec”交互式 shell:

exit

使用“docker exec postgres”连接到 PostgreSQL 容器,以使用 psql 查询 events 表:

docker exec postgres psql -U myuser -d postgres -c "SELECT * FROM events;"

此 SQL 命令将显示“事件”表的内容。查找与文件上传事件对应的最近条目。输出应显示一行,其中包含有关在 MinIO 中触发的事件的详细信息。检查“test/sample.txt”、“eventName”、“bucket”、“object”、“key”等字段,以及确认事件已正确记录的任何其他相关详细信息。如果您看到预期的数据,则确认 MinIO 已成功向 PostgreSQL 发送事件通知。

如果您在 PostgreSQL 表中看不到预期的事件数据,请确保 MinIO 存储桶事件通知设置正确,PostgreSQL 表架构与 MinIO 发送的内容匹配,并且 MinIO 和 PostgreSQL 之间的网络连接正常运行。

通过执行这些步骤,您可以有效地验证 MinIO 与 PostgreSQL 的集成是否按预期工作。此过程对于确保数据事件管理准确可靠至关重要。

数据事件和数据管理

通过设置和利用 MinIO 和 PostgreSQL 集成,展示了 MinIO 在处理云存储和数据管理方面的稳健性和多功能性。无论是通过 MinIO UI 的图形易用性还是 CLI 提供的 mc 全面控制,MinIO 都能确保您的数据管理策略不仅高效,而且与 PostgreSQL 等现代数据库解决方案无缝集成。

当您继续探索 MinIO 的功能时,请记住,该系统的灵活性旨在满足广泛的用例和场景。对于那些希望更深入地研究技术细节或探索更高级配置的人来说,关于存储桶通知和监控存储桶和对象事件的 MinIO 文档是宝贵的资源。利用 MinIO 和 PostgreSQL 的强大功能来增强您的云存储解决方案和数据管理实践。

祝你好运,在您的项目中实施这些策略,请记住,MinIO的团队始终在这里支持您的数据事件管理之旅!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413722.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于R语言的NDVI的Sen-MK趋势检验

本实验拟分析艾比湖地区2010年至2020年间的NDVI数据,数据从MODIS遥感影像中提取的NDVI值,在GEE遥感云平台上将影像数据下载下来。代码如下: import ee import geemap geemap.set_proxy(port7890)# 设置全局网络代理 Map geemap.Map()# 指定…

CSV文件中json列的处理2

如上所示,csv文件中包含以中括号{}包含的json字段,可用如下方法提取: import pandas as pd from datetime import date todaystr(date.today()) import jsonfilepath/Users/kangyongqing/Documents/kangyq/202401/调课功能使用统计/ file104…

手动添加测试用例配置输入参数和期望值

1.选中函数,点击右键选择插入测试用例。这里所选择的插入测试用例区别于之前的测试用例的地方在于,这里插入测试用例是手动配置的,之前的是自动生成的。手动配置可以自定义选择输入参数和期望值。 2.添加测试用例后,点击测试用例&…

MacOS受欢迎的数据库开发工具 Navicat Premium 15 中文版

Navicat Premium 15 Mac是一款数据库管理工具,提供了一个全面的解决方案,用于连接、管理和维护各种数据库系统。以下是Navicat Premium 15 Mac的一些主要功能和特点: 软件下载:Navicat Premium 15 中文版下载 多平台支持&#xff…

算法题-爬楼梯-不同思路解法

主要记录个人思考过程,不同方案实现思路的演变 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:…

【iOS】——基于Vision Kit框架实现图片文字识别

文章目录 前言一、文本识别的分类二、实现步骤1.导入Vision Kit框架2.创建请求处理器3.在请求处理器中设置文字识别功能4.将图片添加到请求处理器中5.发起文字识别请求6.处理识别结果 三、运行结果测试1.纯英文环境2.中英文混合环境 前言 根据苹果的官方文档,Visio…

.net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别

//全局过滤器 builder.Services.AddMvc(m > { m.Filters.Add<AllResultFilter>(); }); 1、实现过滤器 public class AllResultFilter : IResultFilter {/// <summary>/// 结果执行后方法/// 不可更改结果/// </summary>/// <param name"con…

TCP高并发服务器简介(select、poll、epoll实现与区别)

select、poll、epoll三者的实现&#xff1a; select实现TCP高并发服务器的流程&#xff1a; 一、创建套接字&#xff08;socket函数&#xff09;&#xff1a;二、填充服务器的网络信息结构体&#xff1a;三、套接字和服务器的网络信息结构体进行绑定&#xff08;bind函数&…

2023年12月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:多项式相加 我们经常遇到两多项式相加的情况, 在这里, 我们就需要用程序来模拟实现把两个多项式相加到一起。 首先, 我们会有两个多项式,每个多项式是独立的一行, 每个多项式由系数、 幂数这样的多个整数对来表示。 如多项式 2…

半波整流电路原理详解+参数与计算公式

什么是半波整流电路&#xff1f; 半波整流电路的基本操作非常简单&#xff0c;输入信号通过二极管&#xff0c;由于只能通过一个方向的电流&#xff0c;二极管的整流作用&#xff0c;单个二极管只允许通过一半的波形。 下图说明了半波整流电路的基本原理。 半波整流电路工作图…

翻译: Streamlit从入门到精通六 实战缓存Cache请求数据

Streamlit从入门到精通 系列&#xff1a; 翻译: Streamlit从入门到精通 基础控件 一翻译: Streamlit从入门到精通 显示图表Graphs 地图Map 主题Themes 二翻译: Streamlit从入门到精通 构建一个机器学习应用程序 三翻译: Streamlit从入门到精通 部署一个机器学习应用程序 四翻译…

android 开发 W/TextToSpeech: speak failed: not bound to TTS engine

问题 笔者使用TTS(TextToSpeech)对于文本内容进行语音播报&#xff0c;控制台报错 android 开发 speak failed:not bound to TTS engine详细问题 笔者核心代码&#xff1a; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.speech.tts.…