官方文档地址:http://docs.minio.org.cn/docs/master/minio-bucket-notification-guide

存储桶(Bucket)如果发生改变,比如上传对象和删除对象,可以使用存储桶事件通知机制进行监控,并通过以下方式发布出去:

官方文档中是通过配置文件来实现的,也可以通过web页面配置来实现



这里以MySQL通知为例,其他的按照文档或图形化界面配置操作就行了

使用MySQL发布MinIO事件

这个通知目标支持两种格式: namespace and access。

如果使用的是 namespace 格式,MinIO将存储桶里的对象同步成数据库表中的行。每一行有两列:key_name和value。key_name是这个对象的存储桶名字加上对象名,value都是一个有关这个MinIO对象的JSON格式的事件数据。如果对象更新或者删除,表中相应的行也会相应的更新或者删除。

如果使用的是access,MinIO将将事件添加到表里,行有两列:event_time 和 event_data。event_time是事件在MinIO server里发生的时间,event_data是有关这个MinIO对象的JSON格式的事件数据。在这种格式下,不会有行会被删除或者修改。

下面的步骤展示的是如何在namespace格式下使用通知目标,_access_差不多,不再赘述。

第一步:确保确保至少满足第低要求

MinIO要求MySQL 版本 5.7.8及以上,MinIO使用了MySQL5.7.8版本引入的 JSON 数据类型。我们使用的是MySQL5.7.32进行的测试。

第二步:集成MySQL到MinIO

MinIO Server的配置文件默认路径是 ~/.minio/config.json。MySQL配置信息是在notify这个节点下的mysql节点下,在这里为你的MySQL实例创建配置信息键值对,key是你的MySQL的名称,value是下面表格中列列的键值对集合。

下面是一个MySQL配置示例:

"mysql": {
"1": {
"enable": true,
"dsnString": "",
"table": "minio_images",
"host": "172.17.0.1",
"port": "3306",
"user": "root",
"password": "password",
"database": "miniodb"
}
}

更新完配置文件后,重启MinIO Server让配置生效。如果一切顺利,MinIO Server会在启动时输出一行信息,类似 SQS ARNs: arn:minio:sqs:us-east-1:1:mysql。

和之前描述的一样,你也可以添加多个MySQL实例,只要ID不重复就行。

图形化配置如下 (table表名看说明是会自动创建,但是保存的时候提示需要填写,那就手动填写上后再保存)





重启MinIO Server让配置生效



第三步:使用MinIO客户端启用bucket通知

现在可以在一个叫images的存储桶上开启事件通知,一旦上有文件上传到存储桶中,MySQL中会insert一条新的记录或者一条已经存在的记录会被update,如果一个存在对象被删除,一条对应的记录也会从MySQL表中删除。因此,MySQL表中的行,对应的就是存储桶里的一个对象。

要配置这种存储桶通知,我们需要用到前面步骤MinIO输出的ARN信息。更多有关ARN的资料,请参考这里。

有了mc这个工具,这些配置信息很容易就能添加上。假设咱们的MinIO服务别名叫myminio,可执行下列脚本:

# Create bucket named `images` in myminio
mc mb myminio/images
# Add notification configuration on the `images` bucket using the MySQL ARN. The --suffix argument filters events.
mc event add myminio/images arn:minio:sqs:us-east-1:1:postgresql --suffix .jpg
# Print out the notification configuration on the `images` bucket.
mc event list myminio/images
arn:minio:sqs:us-east-1:1:postgresql s3:ObjectCreated:*,s3:ObjectRemoved:* Filter: suffix=”.jpg”

图形化界面配置







第四步:验证MySQL

打开一个新的terminal终端并上传一张JPEG图片到images 存储桶。

mc cp myphoto.jpg myminio/images

打开一个MySQL终端列出表 minio_images 中所有的记录。

$ mysql -h 172.17.0.1 -P 3306 -u root -p miniodb
mysql> select * from minio_images;
+--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| key_name | value |
+--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| images/myphoto.jpg | {"Records": [{"s3": {"bucket": {"arn": "arn:aws:s3:::images", "name": "images", "ownerIdentity": {"principalId": "minio"}}, "object": {"key": "myphoto.jpg", "eTag": "467886be95c8ecfd71a2900e3f461b4f", "size": 26, "sequencer": "14AC59476F809FD3"}, "configurationId": "Config", "s3SchemaVersion": "1.0"}, "awsRegion": "us-east-1", "eventName": "s3:ObjectCreated:Put", "eventTime": "2017-03-16T11:29:00Z", "eventSource": "aws:s3", "eventVersion": "2.0", "userIdentity": {"principalId": "minio"}, "responseElements": {"x-amz-request-id": "14AC59476F809FD3", "x-minio-origin-endpoint": "http://192.168.86.110:9000"}, "requestParameters": {"sourceIPAddress": "127.0.0.1:38260"}}]} |
+--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

图形化操作

MinIO存储桶通知指南的更多相关文章

  1. MinIO客户端快速入门指南

    官方文档地址:http://docs.minio.org.cn/docs/master/minio-client-quickstart-guide MinIO Client (mc)为ls,cat,c ...

  2. Android推送通知指南

      Android推送通知指南 在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是 ...

  3. aws存储桶s3使用

    关于aws s3的使用说明: aws官方文档地址:https://docs.aws.amazon.com/s3/index.html#lang/zh_cn 创建s3与基础使用: 1.登陆aws控制台- ...

  4. 利用S3fs在Amazon EC2 Linux实例上挂载S3存储桶

    一.准备!!! 1.使用拥有足够权限的IAM账号登录AWS控制台 2.创建S3存储桶,给存储桶命名如"my-bucket"(如果使用已有存储桶,本步骤可略过) 3.有该S3存储桶访 ...

  5. s3存储桶:s3可扩展的云存储

    S3(Simple Storage Service,简单存储服务),即可扩展的云存储,又称桶存储,S3 是一种面向 Internet 的存储服务.S3为任意类型的文件提供临时或永久的存储服务.用于存储 ...

  6. MinIO Client完全指南

    官方文档地址:http://docs.minio.org.cn/docs/master/minio-client-complete-guide 下载,添加云存储服务参考这篇文章:https://www ...

  7. 四、C#简单操作MinIO

    MinIO的官方网站非常详细,以下只是本人学习过程的整理 一.MinIO的基本概念 二.Windows安装与简单使用MinIO 三.Linux部署MinIO分布式集群 四.C#简单操作MinIO He ...

  8. 二、Windows安装与简单使用MinIO

    MinIO的官方网站非常详细,以下只是本人学习过程的整理 一.MinIO的基本概念 二.Windows安装与简单使用MinIO 三.Linux部署MinIO分布式集群 四.C#简单操作MinIO 一. ...

  9. Python Client API文档

    官网文档地址:http://docs.minio.org.cn/docs/master/python-client-api-reference 初使化MinIO Client对象 from minio ...

随机推荐

  1. JAVA学习的第一周

    这是发表的第一篇博客,关于Java编程的学习体会如下 1.了解Java的产生与发展时机:1995左右出现Java语言,然后Java的最主要的特点是"跨平台".对于跨平台我不太理解, ...

  2. 意想不到的Python ttkbootstrap 制作账户注册信息界面

    嗨害大家好,我是小熊猫 今天给大家来整一个旧活~ 前言 ttkbootstrap 是一个基于 tkinter 的界面美化库,使用这个工具可以开发出类似前端 bootstrap 风格的tkinter 桌 ...

  3. python+tkinter 的布局

    from tkinter import * win = Tk() win.title("布局") # #窗口标题 win.geometry("600x500+200+20 ...

  4. Blazor快速实现扫雷(MineSweeper)

    如何快速的实现一个扫雷呢,最好的办法不是从头写,而是移植一个已经写好的! Blazor出来时间也不短了,作为一个.net开发者就用它来作吧.Blazor给我的感觉像是Angular和React的结合体 ...

  5. 算法竞赛进阶指南 0x50 总论

    目录 AcWing895. 最长上升子序列 方法一 方法二 当询问最长子序列是哪些的时候 896. 最长上升子序列 II 思路 O(NlogN)做法:贪心+二分 代码 AcWing\897. 最长公共 ...

  6. 基于infiniband(IB)网的MVAPICH2安装

    一.下载安装包 下载链接:http://mvapich.cse.ohio-state.edu/downloads/  二.解压编译安装 mkdir /home/xujb/mvapich2 tar -x ...

  7. 对象的反序列化流_ObjectInputStream和transient关键字瞬态关键字

    对象的反序列化流_ObjectInputStream package com.yang.Test.ObjectStreamStudy; import java.io.FileInputStream; ...

  8. 服务器配置IP

    1.服务器系统一般有两个或多个网卡.在企业中一般给服务器网卡配一个可连外网的IP,如172.16.20.22 255.255.255.0 172.16.20.1 方便联网下载安装部分软件,若没有VPN ...

  9. 万答#12,MGR整个集群挂掉后,如何才能自动选主,不用手动干预

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 本文转载自微信公众号"老叶茶馆" MGR整个集群挂掉后,如能 ...

  10. 推荐几款最好用的MySQL开源客户端,建议收藏!

    一.摘要 众所周知,MYSQL 是目前使得最广泛.最流行的数据库技术之一,为了更方便的管理数据库,市场上出现了大量软件公司和个人开发者研发的客户端工具,比如我们所熟知的比较知名的客户端: Navica ...