今天在开发的时候遇上了一个问题就是要去我们数据平台中进行数据的提取,数据存储用的是minio,一个MinIO部署由一组存储和计算资源组成,运行一个或多个 minio server 节点,共同作为单个对象存储库。独立的MinIO实例由具有单个 minio server 节点的单个服务器池组成。 独立实例最适合初始开发和评估。MinIO部署可以直接在物理设备上运行,在 裸金属
或非虚拟化基础架构中运行。 或者,在云服务中的虚拟机中运行MinIO,例如使用Docker、Podman或Kubernetes。 MinIO可以在本地、私有云中或市场上提供的众多公共云中运行。
MinIO可以部署到三种拓扑结构:
-
单服务器单磁盘, 一个MinIO服务器只有一个驱动器或用于数据的文件夹
例如,在本地PC上测试时,使用计算机硬盘上的文件夹。
-
单服务器多磁盘, 一个MinIO服务器有多个挂载的驱动器或文件夹用于数据
例如,一个容器中有两个或更多挂载的卷。
-
多服务器多磁盘, 多个MinIO服务器具有多个挂载的驱动器或卷用于数据
例如,使用Ansible、Terraform或手动流程进行生产部署
分布式部署利用了一个以上的物理或虚拟机的计算和存储资源。 在现代情况下,这通常意味着在私有或公共云环境中运行MinIO,例如使用Amazon Web Services、Google Cloud Platform、Microsoft的Azure平台或其他许多平台。然在测试MinIO时可能只涉及单个计算机上的单个驱动器,但大多数生产MinIO部署使用多个计算和存储设备来创建高可用性环境。 服务器池是一组 minio server 节点,它们汇集其驱动器和资源以支持对象存储的写入和检索请求。MinIO支持将一个或多个服务器池添加到现有的MinIO部署中进行横向扩展。 当MinIO有多个服务器池可用时,单个对象始终写入同一服务器池中相同的纠错集。如果一个服务器池出现故障,MinIO会停止对所有池的I/O操作,直到集群恢复正常运作。您必须使池恢复正常操作以恢复对部署的I/O操作。 在执行修复操作时,其他池中写入的对象仍然安全保存在磁盘上。
官方提供了很详细的介绍文档,感兴趣的话可以自行阅读即可。
在自己的服务器上面想要能够使用到minio中存储的数据,就需要将其复制过来进行处理,需要先安装命令,操作很简单如下:
curl https://dl.minio.org.cn/client/mc/release/linux-amd64/mc \
--create-dirs \
-o $HOME/minio-binaries/mc
chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/
之后mc --help来检查是否安装成功即可。
如果Linux是ARM架构的话可以使用下面的命令来安装:
curl https://dl.minio.org.cn/client/mc/release/linux-arm64/mc \
--create-dirs \
-o ~/minio-binaries/mc
chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/
mc --help
成功安装mc命令后,可以alias创建别名,如下:
mc alias set myminio https://minioserver.example.net ACCESS_KEY SECRET_KEY
完成后可以测试连接:
mc admin info myminio
mc提供了丰富的命令集,实例如下所示:
Command | 描述 |
---|---|
mc alias list mc alias remove mc alias set mc alias import mc alias export | mc alias 命令为管理 mc 可以连接并对其运行操作的 S3 兼容主机列表提供了方便的界面。 |
mc anonymous get mc anonymous get-json mc anonymous links mc anonymous list mc anonymous set mc anonymous set-json | mc anonymous 命令支持为桶及其内容设置或移除匿名 policies。 具有匿名策略的桶允许公共访问,客户端可以无需 authentication 执行策略授予的任何操作。 |
mc batch describe mc batch generate mc batch list mc batch start mc batch status | The mc batch 命令允许你在 MinIO 部署上运行一个或多个作业任务。 |
mc cat | mc cat 命令用于将一个文件或对象的内容连接到另一个文件 或对象中。您还可以使用该命令将指定文件或对象的内容 显示在 |
mc cp | mc cp 命令用于将对象从一个MinIO部署复制到另一个MinIO 部署, 或者 从MinIO复制到本地文件系统。 |
mc diff | mc diff 是 MinIO(mc 是一个命令行工具,用于与 MinIO 服务器 进行交互)的一个命令,用于比较两个文件系统目录或 MinIO 存储 桶。 mc diff 命令只列出那些缺失或在大小上不同的对象。 需要注意的是, mc diff 不 比较对象的内容。 |
mc du | mc du 命令总结了存储桶和文件夹的磁盘使用情况。 您还可以对本地文件系统使用 du 命令,以产生类似于 |
mc encrypt clear mc encrypt info mc encrypt set | mc encrypt 命令用于设置、更新或禁用默认桶的服务器端加密(SSE)模式。 MinIO 自动使用指定的 SSE 模式对对象进行加密。 |
mc event add mc event ls mc event rm | mc event 命令支持添加、删除和列出存储桶事件通知。 |
mc find | mc find 命令支持在 MinIO 部署上搜索对象。 您还可以使用此命令在文件系统上搜索文件。 |
mc get | mc get 命令从目标 S3 部署将对象下载到本地文件系统。 |
mc head | mc head 命令显示对象的最初 |
mc idp ldap accesskey mc idp ldap add mc idp ldap disable mc idp ldap enable mc idp ldap info mc idp ldap ls mc idp ldap policy mc idp ldap rm mc idp ldap update | mc idp ldap 命令允许你管理用于第三方 Active Directory 或 LDAP 身份和访问管理(IAM)集成的配置。 |
mc idp openid add mc idp openid disable mc idp openid enable mc idp openid info mc idp openid ls mc idp openid rm mc idp openid update | mc idp openid 命令允许您管理第三方 OpenID 身份和访问管理 (IAM) 集成配置。 |
mc idp ldap policy attach mc idp ldap policy detach mc idp ldap policy entities | mc idp ldap policy 命令展示了策略与相关组或用户之间的映射关系。 |
mc ilm restore mc ilm rule add mc ilm rule edit mc ilm rule export mc ilm rule import mc ilm rule ls mc ilm rule rm mc ilm tier add mc ilm tier check mc ilm tier info mc ilm tier ls mc ilm tier rm mc ilm tier update | mc ilm 命令用于在 MinIO 部署上管理 对象生命周期管理规则 和分层。 |
mc legalhold clear mc legalhold info mc legalhold set | mc legalhold 命令用于为对象(们)设置、移除或检索 对象合法保留(WORM) 设置。 |
mc license info mc license register mc license update | mc license 命令用于与 MinIO SUBNET 的集群注册。 使用这些命令来注册一个部署,注销一个部署,显示有关集群当前许可证的信息,或更新集群的许可证密钥。 |
mc ls | mc ls 命令列出 MinIO 或另一个 S3 兼容服务上的存储桶和 对象。 |
mc mb | mc mb 命令在指定的路径创建一个新的桶或 目录。 |
mc mirror | mc mirror 命令用于将内容同步到 MinIO 部署,类似于 |
mc mv | mc mv 命令可以将对象从源移动到目标,例如在不同的 MinIO 部署之间, 或者 在同一 MinIO 部署中的不同桶之间。 mc mv 命令还支持将对象在本地文件系统和 MinIO 之间移动。 |
mc od | mc od 命令将本地文件分块并按指定的部分和部分大小复制到远程位置。 该命令输出了上传文件所花费的时间。 |
mc ping | mc ping 命令执行对指定目标的存活检查。 |
mc pipe | mc pipe 命令将内容从 STDIN 流式传输到目标对象。 |
mc put | mc put 是 mc命令行工具的一个命令,它用于将本地文件系统中的对象上传到目标 S3 部署中的桶。 |
mc quota clear mc quota info mc quota set | mc quota 命令用于配置、显示或删除存储桶的硬性配额限制。 |
mc rb | mc rb 命令用于从 MinIO 或 其他 S3 兼容服务 中删除一个或多个桶。 要仅删除存储桶的内容,请改用 mc rm。 |
mc replicate add mc replicate backlog mc replicate export mc replicate import mc replicate ls mc replicate resync mc replicate rm mc replicate status mc replicate update | mc replicate 命令用于配置和管理 MinIO 部署的 服务器端存储桶复制,包括 活动-活动复制配置 和 重新同步。 |
mc retention clear mc retention info mc retention set | mc retention 命令用于为存储桶中的一个或多个对象配置 写一次读多次(WORM)锁定 设置。 您还可以为存储桶设置默认的对象锁定设置,其中所有没有明确对象锁定设置的对象将继承存储桶的默认设置。 |
mc rm | mc rm 命令用于从 MinIO 部署的存储桶中删除对象。 要完全删除一个存储桶,请使用 mc rb 命令。 |
mc share download mc share ls mc share upload | 使用 mc share 命令来管理 MinIO 存储桶上对象的预签名 URL,用于下载和上传对象。 |
mc sql | mc sql 命令为指定的 MinIO 部署中的对象提供了一个 S3 选择接口,用于执行 SQL 查询。 |
mc stat | mc stat 命令显示 MinIO 存储桶中对象的信息, 包括对象元数据。 |
mc support callhome mc support diag mc support inspect mc support perf mc support profile mc support proxy mc support top api mc support top disk mc support top locks | MinIO客户端的 mc support 命令提供了分析部署健康或性能以及运行诊断的工具。 您还可以上传生成的健康报告,以便 MinIO 工程团队进一步分析。 |
mc tag list mc tag remove mc tag set | mc tag 命令用于向桶或对象添加、删除和列出标签。 |
mc tree | mc tree 命令以树状格式列出 MinIO 桶中的所有前缀。 该命令可选地支持列出每个前缀内的所有对象, 包括桶的根目录。 |
mc undo | mc undo 命令用于撤销由于对指定路径执行了 |
mc update | mc update 命令会自动将 mc 二进制文件 更新到最新稳定版本。 |
mc version enable mc version info mc version suspend | mc version 命令用于启用、禁用和检索 MinIO 存储桶的 版本控制 状态。 |
mc watch | mc watch 命令用于监控指定 MinIO 存储桶或本地文件系统 路径上的事件。对于 S3 服务,应使用 mc event add 命令来配置 S3 兼容服务上的存储桶事件通知。 |
mc 使用一个 JSON
格式的配置文件来存储 某些类型的信息,比如为每个配置的 S3 兼容服务 设置的 别名。对于 Linux 和 OSX,默认的配置文件位置是 ~/.mc/config.json
.
对于 Windows,mc 会尝试通过查询特定的环境变量来构建 默认的文件路径。如果某个变量未设置,mc 会移动到下一个 变量。如果所有尝试都失败,mc 会返回一个错误。 以下列表描述了 mc 检查的每个可能的 文件路径位置的顺序:
-
HOME\.mc\config.json
-
USERPROFILE\.mc\config.json
-
HOMEDRIVE+HOMEPATH\.mc\config.json
您可以使用 --config-dir
我的用户名是test,在test权限下安装了mc命令,可以正常使用,但是当我切换到root权限下的时候发现命令无法使用,系统报错:command not found。
这里提供几种解决方法,根据自己的实际需要选择即可。
方法一:将用户目录添加到root用户的PATH中
这里又可以分为两种模式,一种是临时生效,一种是永久生效。
临时生效:在root用户的会话中,临时将用户目录添加到PATH中。
export PATH=$PATH:/home/test/.local/bin
永久生效:将上述命令添加到root用户的shell配置文件中,例如~/.bashrc
或~/.bash_profile
。
echo 'export PATH=$PATH:/home/test/.local/bin' >> ~/.bashrc
source ~/.bashrc
方法二:将命令复制到系统路径中
复制命令:将用户安装的命令复制到系统的默认搜索路径中,例如/usr/local/bin
。
sudo cp /home/test/.local/bin/mc /usr/local/bin/
修改权限:确保root用户有权限执行该命令。
sudo chmod +x /usr/local/bin/mc
方法三:使用绝对路径执行命令
如果只是偶尔需要使用该命令,可以直接使用绝对路径来执行。
/home/test/.local/bin/mc
方法四:创建符号链接
创建符号链接:在系统的默认搜索路径中创建一个指向用户安装命令的符号链接。
sudo ln -s /home/test/.local/bin/mc /usr/local/bin/mc
修改权限:确保root用户有权限执行该符号链接。
sudo chmod +x /usr/local/bin/mc
实践的确可行,解决了上述报错问题。
感兴趣的话可以自行尝试看下,这里做简单的记录备忘!