文档

MySQL 通知设置

本页记录了将 MySQL 服务配置为 Bucket Notifications 目标的相关设置。 有关如何使用这些设置的教程,请参阅 将事件发布到 MySQL

你可以通过以下方式建立或修改设置:

  • 在启动或重启 MinIO Server 之前,在宿主机系统上定义 环境变量。 如何定义环境变量,请参考所用操作系统的文档。

  • 使用 mc admin config set 定义 配置项

如果同时定义了环境变量和对应的配置项,MinIO 使用环境变量的值。

有些设置只有环境变量或配置项中的一种,而不是两者同时存在。

Important

每个配置项都会控制 MinIO 的基础行为和功能。 MinIO 强烈建议 先在 DEV 或 QA 等较低级别环境中测试配置变更,再应用到生产环境。

多个 MySQL 目标

你可以在顶层键后追加唯一标识符 _ID,为每组相关的 MySQL 设置指定多个 MySQL 服务端点。

示例

以下命令分别将两个不同的 MySQL 服务端点设置为 PRIMARYSECONDARY

export MINIO_NOTIFY_MYSQL_ENABLE_PRIMARY="on"
export MINIO_NOTIFY_MYSQL_DSN_STRING_PRIMARY="username:password@tcp(mysql.example.com:3306)/miniodb"
export MINIO_NOTIFY_MYSQL_TABLE_PRIMARY="minioevents"
export MINIO_NOTIFY_MYSQL_FORMAT_PRIMARY="namespace"

export MINIO_NOTIFY_MYSQL_ENABLE_SECONDARY="on"
export MINIO_NOTIFY_MYSQL_DSN_STRING_SECONDARY="username:password@tcp(mysql.example.com:3306)/miniodb"
export MINIO_NOTIFY_MYSQL_TABLE_SECONDARY="minioevents"
export MINIO_NOTIFY_MYSQL_FORMAT_SECONDARY="namespace"

在这些设置中,MINIO_NOTIFY_MYSQL_ENABLE_PRIMARY 表示该环境变量关联到 ID 为 PRIMARY 的 MySQL 服务端点。

mc admin config set notify_mysql:primary \
   dsn_string="username:password@tcp(mysql.example.com:3306)/miniodb"
   table="minioevents" \
   format="namespace" \
   [ARGUMENT=VALUE ...]

mc admin config set notify_mysql:secondary \
   dsn_string="username:password@tcp(mysql.example.com:3306)/miniodb"
   table="minioevents" \
   format="namespace" \
   [ARGUMENT=VALUE ...]

设置

启用

必需

MINIO_NOTIFY_MYSQL_ENABLE

指定 on 以启用将存储桶通知发布到 MySQL 服务端点。

默认为 off

若设置为 on,则还必须指定以下环境变量:

notify_mysql

用于定义 MySQL 服务端点以配合 MinIO bucket notifications 使用的顶层配置键。

使用 mc admin config set 设置或更新 MySQL 服务端点。 每个目标都*必需*以下参数:

其他可选参数请以空白字符(" ")分隔列表形式指定。

mc admin config set notify_mysql \
  dsn_string="username:password@tcp(mysql.example.com:3306)/miniodb"
  table="minioevents" \
  format="namespace" \
  [ARGUMENT="VALUE"] ... \

数据源名称(DSN)字符串

必需

MINIO_NOTIFY_MYSQL_DSN_STRING
notify_mysql dsn_string

指定 MySQL 服务端点的数据源名称(DSN)。MinIO 期望使用以下格式:

<user>:<password>@tcp(<host>:<port>)/<database>

例如:

"username:password@tcp(mysql.example.com:3306)/miniodb"

Changed in version RELEASE.2023-05-27T05-56-19Z: 在添加目标之前,如果指定的 URL 可解析且可达, MinIO 会先检查其健康状态。 如果现有目标处于离线状态,MinIO 也不再阻止添加新的通知目标。

必需

MINIO_NOTIFY_MYSQL_TABLE
notify_mysql table

指定 MinIO 发布事件通知到的 MySQL 表名。

格式

必需

MINIO_NOTIFY_MYSQL_FORMAT
notify_mysql format

指定写入 MySQL 服务端点的事件数据格式。 MinIO 支持以下取值:

namespace

对于每个存储桶事件,MinIO 会创建一个 JSON 文档,将事件中的存储桶和对象名称作为文档 ID,并将实际事件作为文档体的一部分。 对该对象的后续更新会修改该对象在表中的现有条目。 同样,删除该对象也会删除对应的表条目。

access

对于每个存储桶事件,MinIO 会创建一个包含事件详情的 JSON 文档,并以 MySQL 生成的随机 ID 追加到表中。 对对象的后续更新会产生新的索引条目,且现有条目保持不变。

最大打开连接数

可选

MINIO_NOTIFY_MYSQL_MAX_OPEN_CONNECTIONS
notify_mysql max_open_connections

指定与 MySQL 数据库建立的最大打开连接数。

默认为 2

队列目录

可选

MINIO_NOTIFY_MYSQL_QUEUE_DIR
notify_mysql queue_dir

指定目录路径,以启用 MinIO 对未投递消息的持久化事件存储,例如 /opt/minio/events

当 MySQL 服务器/代理离线时,MinIO 会将未投递事件存储在指定位置;连接恢复后会重放这些已存储事件。

队列上限

可选

MINIO_NOTIFY_MYSQL_QUEUE_LIMIT
notify_mysql queue_limit

指定未投递消息的最大上限。默认为 100000

注释

可选

MINIO_NOTIFY_MYSQL_COMMENT
notify_mysql comment

指定与 MySQL 配置关联的注释。