文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

发布事件到 PostgreSQL

MinIO 支持发布存储桶通知事件PostgreSQLMinIO 支持 PostgreSQL 9.5 及更高版本.

为 MinIO 部署添加 PostgreSQL 端点

以下过程添加一个新的 PostgreSQL 服务端点以支持存储桶通知在 MinIO 部署中。

前提条件

PostgreSQL 9.5 and later

MinIO 依赖 PostgreSQL 9.5 引入的功能。

MinIOmc命令行工具

这个过程使用mc用于特定操作的命令行工具。 请参阅mc 快速入门有关安装说明。

1) 将 PostgreSQL 端点添加到 MinIO

您可以使用环境变量配置新的 PostgreSQL 服务端点or通过设置运行时配置设置。

MinIO支持使用PostgreSQL服务端点和相关配置设置进行指定环境变量. Theminio server进程将在下次启动时应用指定的设置。

以下示例代码设置全部environment variables 与配置 PostgreSQL 服务端点相关。最低必需variables are:

   export MINIO_NOTIFY_POSTGRES_ENABLE_<IDENTIFIER>="on"
   export MINIO_NOTIFY_POSTGRES_CONNECTION_STRING_<IDENTIFIER>="host=postgresql-endpoint.example.net port=4222"
   export MINIO_NOTIFY_POSTGRES_TABLE_<IDENTIFIER>="minioevents"
   export MINIO_NOTIFY_POSTGRES_FORMAT_<IDENTIFIER>="namespace|access"
   export MINIO_NOTIFY_POSTGRES_MAX_OPEN_CONNECTIONS_<IDENTIFIER>="2"
   export MINIO_NOTIFY_POSTGRES_QUEUE_DIR_<IDENTIFIER>="/opt/minio/events"
   export MINIO_NOTIFY_POSTGRES_QUEUE_LIMIT_<IDENTIFIER>="100000"
   export MINIO_NOTIFY_POSTGRES_COMMENT_<IDENTIFIER>="PostgreSQL Notification Event Logging for MinIO"
  • 替换<IDENTIFIER>使用一个唯一的描述性字符串来标识 PostgreSQL 服务端点。使用相同的<IDENTIFIER>所有与新目标服务端点相关的环境变量的值。 以下示例假设标识符为PRIMARY.

    如果指定的<IDENTIFIER>匹配 MinIO 部署上现有的 PostgreSQL 服务端点,新的设置覆盖该端点的任何现有设置。使用mc admin config get notify_postgres审查 MinIO 部署中当前配置的 PostgreSQL 端点。

  • 替换<ENDPOINT>随着PostgreSQL 连接字符串for PostgreSQL service endpoint。MinIO 支持key=value连接字符串的格式。例如:

    "host=https://postgresql.example.com port=5432 ..."

    有关支持的 PostgreSQL 连接字符串参数的更完整文档,请参阅PostgreSQL 连接字符串.

PostgreSQL Service for Bucket Notifications有关每个环境变量的完整文档。

MinIO 支持在运行中添加或更新 PostgreSQL 端点minio server使用该过程mc admin config set命令 和notify_postgres配置键。您必须重启minio server应用任何新的或更新的配置设置的过程。

以下示例代码设置全部与配置 PostgreSQL 服务端点相关的设置。最低必需设置是:

mc admin config set ALIAS/ notify_postgres:IDENTIFIER \
   connection_string="ENDPOINT" \
   table="<string>" \
   format="<string>" \
   max_open_connections="<string>" \
   queue_dir="<string>" \
   queue_limit="<string>" \
   comment="<string>"
  • 替换IDENTIFIER使用唯一的描述性字符串来标识 PostgreSQL 服务端点。本过程中的以下示例 假设标识符为PRIMARY.

    如果指定的IDENTIFIER匹配 MinIO 部署上现有的 PostgreSQL 服务端点,新的设置覆盖该端点的任何现有设置。使用mc admin config get notify_postgres审查 MinIO 部署中当前配置的 PostgreSQL 端点。

  • 替换<ENDPOINT>随着PostgreSQL URI 连接字符串PostgreSQL 服务端点。MinIO 支持key=valuePostgreSQL 连接字符串的格式。例如:

    "host=https://postgresql.example.com port=5432 ..."

    有关支持的 PostgreSQL 连接字符串参数的更完整文档,请参阅PostgreSQL 连接字符串.

PostgreSQL 存储桶通知配置设置有关每个设置的完整文档。

1) 重启 MinIO 部署

您必须重启 MinIO 部署以使配置更改生效。 使用mc admin service restart重启部署的命令。

mc admin service restart ALIAS

替换ALIAS随着别名部署的重新启动。

Theminio server进程在启动时会为每个已配置的 PostgreSQL 目标打印一行信息,类似于以下内容:

SQS ARNs: arn:minio:sqs::primary:postgresql

在配置存储桶通知并将关联的 PostgreSQL 部署设为目标时,必须指定 ARN 资源。

识别您的存储桶通知的ARN

你定义了<IDENTIFIER>在先前创建端点时分配给您的存储桶通知的目标ARN。 以下步骤返回在部署上配置的ARN。 通过查找先前创建的ARN来识别它。<IDENTIFIER>您指定的。

审查 JSON 输出

  1. 复制并运行以下命令,将ALIAS随着别名部署的。

    mc admin info --json ALIAS
    
  2. 在 JSON 输出中,查找键info.sqsARN.

    您需要的ARN是与该键匹配的值<IDENTIFIER>您指定的。

    例如,arn:minio:sqs::primary:postgresql.

使用 jq 解析 JSON 获取值

  1. 安装 jq

  2. 复制并运行以下命令,将ALIAS随着别名部署的。

    mc admin info --json ALIAS | jq  .info.sqsARN
    

    这将返回用于通知的ARN,例如arn:minio:sqs::primary:postgresql

3) 使用 PostgreSQL 端点作为目标配置存储桶通知

使用mc event add添加新存储桶通知事件的命令,将已配置的 PostgreSQL 服务设为目标:

mc event add ALIAS/BUCKET arn:minio:sqs::primary:postgresql \
  --event EVENTS
  • 替换ALIAS随着别名MinIO 部署的。

  • 替换BUCKET使用要配置事件的存储桶名称。

  • 替换EVENTS使用逗号分隔的列表事件MinIO 触发通知的条件。

使用mc event ls要查看为给定通知目标配置的所有存储桶事件:

mc event ls ALIAS/BUCKET arn:minio:sqs::primary:postgresql

4) 验证已配置的事件

对您配置了新事件的存储桶执行操作,并 检查 PostgreSQL 服务中的通知数据。所需操作 取决于您配置的events在配置存储桶通知时已指定。

例如,如果存储桶通知配置包含s3:ObjectCreated:Put事件,您可以使用mc cp在存储桶中创建新对象并触发通知的命令。

mc cp ~/data/new-object.txt ALIAS/BUCKET

更新 MinIO 部署中的 PostgreSQL 端点

以下过程更新现有的 PostgreSQL 服务端点以支持存储桶通知在 MinIO 部署中。

前提条件

PostgreSQL 9.5 and later

MinIO 依赖 PostgreSQL 9.5 引入的功能。

MinIOmc命令行工具

这个过程使用mc用于特定操作的命令行工具。 请参阅mc 快速入门有关安装说明。

1) 列出部署中已配置的PostgreSQL端点

使用mc admin config get列出部署中当前配置的 PostgreSQL 服务端点的命令:

mc admin config get ALIAS/ notify_postgres

替换ALIAS随着别名MinIO 部署的。

命令输出类似于以下内容:

notify_postgres:primary queue_dir="" connection_string="postgresql://" queue_limit="0"  table="" format="namespace"
notify_postgres:secondary queue_dir="" connection_string="" queue_limit="0"  table="" format="namespace"

Thenotify_postgreskey 是用于配置PostgreSQL 通知设置. Theconnection_stringkey 指定 给定 PostgreSQL 服务端点的notify_postgreskey. Thenotify_postgres:<IDENTIFIER>suffix 描述了该 PostgreSQL 服务端点的唯一标识符。

记下您想要更新的 PostgreSQL 服务端点的标识符,以便进行下一步操作。

2) 更新 PostgreSQL 端点

使用mc admin config set设置 PostgreSQL 服务端点新配置的命令:

mc admin config set ALIAS/ notify_postgres:IDENTIFIER \
   connection_string="ENDPOINT" \
   table="<string>" \
   format="<string>" \
   max_open_connections="<string>" \
   queue_dir="<string>" \
   queue_limit="<string>" \
   comment="<string>"

以下配置设置是最小值PostgreSQL 服务端点所需信息:

所有其他配置设置都是可选的. 查看PostgreSQL 通知设置有关完整的 PostgreSQL 配置设置列表,请参阅相关文档。

3) 重启 MinIO 部署

您必须重启 MinIO 部署以使配置更改生效。 使用mc admin service restart重启部署的命令。

mc admin service restart ALIAS

替换ALIAS随着别名部署的重新启动。

Theminio server进程在启动时会为每个已配置的 PostgreSQL 目标打印一行信息,类似于以下内容:

SQS ARNs: arn:minio:sqs::primary:postgresql

4) 验证更改

对配置了事件通知的存储桶执行操作,使用更新后的 PostgreSQL 服务端点,并检查 PostgreSQL 服务中的通知数据。所需 操作取决于具体events在配置存储桶通知时已指定。

例如,如果存储桶通知配置包含s3:ObjectCreated:Put事件,您可以使用mc cp在存储桶中创建新对象并触发通知的命令。

mc cp ~/data/new-object.txt ALIAS/BUCKET