MinIO 支持将 bucket notification 事件发布到 MySQL 服务端点。MinIO 仅 支持 MySQL 5.7.8 及更高版本。
将 MySQL 端点添加到 MinIO 部署
以下过程添加了一个新的 MySQL 服务端点以支持 bucket notifications 部署。
先决条件
MySQL 5.7.8 及更高版本
MinIO 依赖于 MySQL 5.7.8 引入的功能。
MinIO mc
命令行工具
1) 将 MySQL 端点添加到 MinIO
你可以通过设置环境变量 或 运行时配置设置来配置 一个新的 MySQL 服务端点。
MinIO 支持使用 环境变量
来指定 MySQL 服务端点及相关
配置设置。
当您设置环境变量后,minio server
进程将在下一次启动时
应用这些设置。
以下示例代码设置了与配置 MySQL 服务端点相关的 所有 环境变量。 最低 必需的 变量是:
export MINIO_NOTIFY_MYSQL_ENABLE_<IDENTIFIER>="on"
export MINIO_NOTIFY_MYSQL_DSN_STRING_<IDENTIFIER>="user:password@tcp(hostname:port)/database"
export MINIO_NOTIFY_MYSQL_TABLE_<IDENTIFIER>="minio-events"
export MINIO_NOTIFY_MYSQL_FORMAT_<IDENTIFIER>="namespace|access"
export MINIO_NOTIFY_MYSQL_MAX_OPEN_CONNECTIONS_<IDENTIFIER>="2"
export MINIO_NOTIFY_MYSQL_QUEUE_DIR_<IDENTIFIER>="/opt/minio/events"
export MINIO_NOTIFY_MYSQL_QUEUE_LIMIT_<IDENTIFIER>="100000"
export MINIO_NOTIFY_MYSQL_COMMENT_<IDENTIFIER>="MySQL Event Notification Logging for MinIO"
将
<IDENTIFIER>
替换为 MySQL 服务端点的唯一 描述性字符串。 对于与新的目标服务端点相关的所有环境变量, 使用相同的<IDENTIFIER>
值。 以下示例假设标识符为PRIMARY
。如果指定的
<IDENTIFIER>
与MinIO部署上现有的 MySQL 服务端点匹配,新设置将 覆盖 该端点上 任何现有的设置。 使用mc admin config get notify_mysql
来查看MinIO部署上当前配置的MySQL端点。将``<ENDPOINT>``替换为MySQL服务端点的DSN。 MinIO 期望以下格式:
<user>:<password>@tcp(<host>:<port>)/<database>
例如:
username:password@tcp(mysql.example.com:3306)/miniodb
请参阅 MySQL Service for Bucket Notifications 以获取每个环境变量的完整文档说明。
MinIO 支持在运行中的 minio server
进程上使用 mc admin config set
命令
和 notify_mysql
配置键添加或更新 MySQL 端点。
您必须重新启动 minio server
进程以应用
任何新的或更新的配置设置。
以下示例代码设置与配置 MySQL 服务端点相关的 所有 设置。 最小 必需 设置包括:
mc admin config set ALIAS/ notify_mysql:IDENTIFIER \
dsn_string="<ENDPOINT>" \
table="<string>" \
format="<string>" \
max_open_connections="<string>" \
queue_dir="<string>" \
queue_limit="<string>" \
comment="<string>"
将
IDENTIFIER
替换为唯一的描述性字符串 MySQL 服务端点。此过程中的以下示例 假设标识符为PRIMARY
。如果指定的
IDENTIFIER
与 MinIO 部署上现有的 MySQL 服务端点匹配,新的设置将 覆盖 该端点上任何现有的设置。 使用mc admin config get notify_mysql
命令来查看 MinIO 部署上当前配置的 MySQL 端点。将
<ENDPOINT>
替换为 MySQL 服务端点的 DSN。 MinIO 期望以下格式:<user>:<password>@tcp(<host>:<port>)/<database>
例如:
username:password@tcp(mysql.example.com:3306)/miniodb
请参阅 MySQL Bucket Notification Configuration Settings 以获取每个设置的完整文档说明。
2) 重新启动MinIO部署。
您必须重新启动MinIO部署以应用配置更改。
使用 mc admin service restart
命令来重新启动部署。
mc admin service restart ALIAS
将 ALIAS
替换为要重新启动的部署的
别名。
minio server
进程在启动时为每个配置的 MySQL 打印一行目标
类似于以下内容:
SQS ARNs: arn:minio:sqs::primary:mysql
当配置与关联的MySQL部署作为目标的存储桶通知时, 您必须指定ARN资源。
Identifying the ARN for your bucket notifications
在创建端点之前,您定义了 <IDENTIFIER>
以便为您的存储桶通知分配目标ARN。
以下是返回部署上配置的ARNs的步骤:
识别之前创建的ARN,请查找您指定的 <IDENTIFIER>
。
查看 JSON 输出
复制并运行以下命令,将
ALIAS
替换为部署的 别名。mc admin info --json ALIAS
在JSON输出中,查找键
info.sqsARN
。您需要的ARN是匹配您指定的
<IDENTIFIER>
的该键的值。例如,
arn:minio:sqs::primary:mysql
.
使用 jq 解析 JSON 中的值
复制并运行以下命令,将
ALIAS
替换为部署的 别名。mc admin info --json ALIAS | jq .info.sqsARN
这将返回用于通知的ARN,例如
arn:minio:sqs::primary:mysql
。
3) 使用MySQL端点作为目标配置存储桶通知
使用 mc event add
命令添加一个新的桶通知事件,
使用配置的MySQL服务作为目标的事件:
mc event add ALIAS/BUCKET arn:minio:sqs::primary:mysql \
--event EVENTS
使用 mc event ls
命令查看给定通知目标的
所有配置桶事件:
mc event ls ALIAS/BUCKET arn:minio:sqs::primary:mysql
4) 验证配置的事件
对您配置了新事件的存储桶执行一个操作,
并检查MySQL服务以获取通知数据。
所需操作取决于在配置存储桶通知时指定的
事件类型
。
例如,如果桶通知配置包括 s3:ObjectCreated:Put
事件,
您可以使用 mc cp
命令在
桶中创建一个新对象并
触发通知。
mc cp ~/data/new-object.txt ALIAS/BUCKET
在MinIO部署中更新MySQL端点
以下步骤将更新现有的MySQL服务端点 以支持MinIO部署中的: 存储桶通知
先决条件
MySQL 5.7.8 及更高版本
MinIO 依赖于 MySQL 5.7.8 引入的功能。
MinIO mc
命令行工具
1) 列出部署中配置的 MySQL 端点
使用 mc admin config get
命令来列出
部署中当前配置的MySQL服务端点:
mc admin config get ALIAS/ notify_mysql
将 ALIAS
替换为 MinIO 部署的 别名。
命令的输出类似于以下内容:
notify_mysql:primary format="namespace" table="minio_images" dsn_string="user:pass@tcp(mysql.example.com:3306)/miniodb"
notify_mysql:secondary format="namespace" table="minio_images" dsn_string="user:pass@tcp(mysql.example.com:3306)/miniodb"
notify_mysql
是一个顶级配置键,用于
MySQL 通知设置。
dsn_string
键指定了给定
notify_mysql 键的MySQL服务端点。 notify_mysql:<IDENTIFIER>
后缀描述了该MySQL服务端点的唯一标识符。
请注意,您想要在下一步中更新的MySQL服务端点的 标识符。
2) 更新 MySQL 端点
- 使用 :mc-cmd:`mc admin config set`命令来设置
MySQL 服务端点:
mc admin config set ALIAS/ notify_mysql:IDENTIFIER \
dsn_string="<ENDPOINT>" \
table="<string>" \
format="<string>" \
max_open_connections="<string>" \
queue_dir="<string>" \
queue_limit="<string>" \
comment="<string>"
以下配置设置是MySQL服务端点所需的 最低要求:
所有其他配置设置都是 可选的。 请参阅 MySQL 通知设置 以获取完整的MySQL配置设置列表。
3) 重新启动MinIO部署。
您必须重新启动MinIO部署以应用配置更改。
使用 mc admin service restart
命令来重新启动部署。
mc admin service restart ALIAS
将 ALIAS
替换为要重新启动的部署的
别名。
minio server
进程在启动时为每个配置的 MySQL 打印一行
目标类似于以下内容:
SQS ARNs: arn:minio:sqs::primary:mysql
4) 验证更改
对具有事件配置的桶执行操作,并使用更新的MySQL服务端点
检查MySQL服务中的通知数据。
所需操作取决于在配置桶通知时指定的哪些
事件
。
例如,如果桶通知配置包括 s3:ObjectCreated:Put
事件,
您可以使用 mc cp
命令在
桶中创建一个新对象并
触发通知。
mc cp ~/data/new-object.txt ALIAS/BUCKET