# V8对象存储SOP手册

本手册就V8产品线使用的对象存储服务相关标准化维护进行说明。

# 产品支持说明

理论上V8产品支持所有标准S3协议的对象存储。

目前项目上已再用的对象存储:minio、oss、obs、cos(项目化客开适配)、天翼云对象存储。

# 阅读场景:

  1. 售前与销售阶段 数据内容说明:针对于桶级别存储的文件做到了细颗粒度的内容描述与业务归属说明。 安全与权限管控: 精细化的安全与权限管控,通过说明文档中对“公共桶”和“私有桶”的划分,你可以强调系统的安全性设计。“我们在底层存储上就做好了隔离。对外公开的资源和对内保密的业务单据,在存储层面就是分开的,这从根源上降低了数据越权访问的风险。”

  2. 规划与部署阶段 新环境搭建:需要为V8平台部署对象存储服务(特别是MinIO)时。 高可用规划:需要决策是使用单机版还是集群版MinIO。文档明确指出了单机与高可用集群的区别,例如高可用集群至少需要 4个节点,这对硬件资源规划至关重要。

  3. 客开定制化阶段 SPI扩展机制:文档中详细介绍了V8平台的存储SPI(Service Provider Interface)扩展机制。开发人员不需要去猜怎么改底层代码,而是可以直接参考文档,按照标准的接口规范,编写自己的存储插件(比如对接公司内部搭建的FastDFS或Ceph),然后替换掉默认的MinIO存储。这为定制化存储方案提供了标准化的接入路径。

  4. 运维与扩容阶段 存储空间不足:当现有MinIO集群磁盘空间不够时,文档详细说明了如何进行在线扩容(包括磁盘数量要求、纠删码规则等)。 数据备份与恢复:需要制定备份策略或执行数据迁移时,文档提供了具体的备份步骤和脚本参考。

  5. 配置与故障排查阶段 配置文件调整:在进行环境迁移、更换存储类型(如从MinIO切换到阿里云OSS)或调整文件上传限制时,需要查阅文档中的配置详解。 数据清理:当对象存储空间占用过高时,文档提供了详细的清理清单,列出了哪些目录(如temp、i18n、boot等)可以安全清理,哪些绝对不能动,以及清理后的恢复方案。

# 操作视频与工具

操作视频: https://fcndlqpk2w3r.feishu.cn/wiki/EsGLwI4aYijaYmkayBScdICxnkb?fromScene=spaceOverview

Minio自动化工具下载: https://frontend-project-dev.oss-cn-beijing.aliyuncs.com/software/clean_minio.zip

# MinIO对象存储部署

# 一、单机与高可用集群的要求和区别:

# 1. 单机Minio:

适用场景: 开发测试、个人学习、非关键业务的中小规模存储。 特点: 部署简单,资源消耗低,但无数据冗余,节点故障会导致服务不可用或数据丢失。

软件与环境要求:

  1. 操作系统:Linux (CentOS 7+/Ubuntu 20.04+), macOS, Windows (仅限实验)。

  2. 文件系统:强烈建议使用 XFS 格式,避免使用 NFS 挂载(会破坏一致性模型)

  3. 端口:需开放 API 端口 (默认 9000) 和 控制台端口 (默认 9001)。

  4. 数据目录:必须是空目录或包含 MinIO 元数据的目录,不能包含其他无关文件。

# 2. 高可用集群Minio:

适用场景: 生产环境、关键业务数据、需要 99.99% 以上可用性。 特点: 利用纠删码 (Erasure Code) 技术实现数据冗余,允许磁盘或节点故障而不丢失数据。

核心硬性要求:

  1. 节点数量:至少 4 个节点(服务器/虚拟机)。 原因: MinIO 的纠删码机制至少需要 4 个驱动器/节点才能生效(2个数据块+2个校验块)。3 个节点无法满足高可用的冗余要求。

驱动器配置:

  1. 每个节点建议配置 相同数量 的磁盘(推荐每节点 4~16 块盘)。

  2. 所有节点的磁盘总数必须是纠删码集(EC Set)大小的倍数。

时间同步:

  1. 集群内所有节点的时间差不能超过 15 分钟(建议配置 NTP 服务进行秒级同步)。

网络互通:

  1. 节点间必须通过内网互通,建议带宽 ≥10Gbps。

  2. 需配置负载均衡器(如 Nginx、F5)作为统一入口,分发 API 请求。

# 3. 单机与高可用集群Minio的区别:

维度 单机模式 高可用集群模式
数据安全性 低 (磁盘损坏即数据丢失) 高 (允许丢失一半磁盘/节点数据仍可读)
部署复杂度 低 (一条命令即可启动) 高 (需规划网络、时间同步、负载均衡)
最小规模 1 台服务器 4 台服务器
扩展性 难以在线扩容 (通常需迁移数据) 支持在线水平扩展 (增加节点)
写入仲裁 需要多数派节点确认 (Write Quorum)

# 二、Minio对象存储部署与更新:

# 1. 推荐使用工具完成MinIO对象存储的部署:《MinIO对象存储工具部署 (opens new window)


# 2. MinIO程序更新方法。

在开始任何更新之前,请务必遵循以下黄金法则

  1. 备份数据与配置:使用 mc admin cluster bucket export 和 mc admin cluster iam export 命令对存储桶元数据和 IAM 配置进行快照备份。
  2. 阅读发行说明:访问 MinIO 官方发布页面,仔细查阅新版本与当前版本之间的发行说明,特别关注是否存在不向后兼容的变更。
  3. 测试环境验证:始终先在开发或测试环境中验证升级流程,确认无误后再应用到生产环境。

更新操作步骤: 这种方法更直接,适用于所有部署方式,特别是当服务器无法直接访问外网时。

1. 停止 MinIO 服务
systemctl stop minio

2. 下载并替换二进制文件
# 1. 下载(选择自己需要更新的版本)
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# 2. 替换 (假设旧文件在 /usr/local/bin/)
sudo mv minio /usr/local/bin/minio
# 3. 赋予执行权限
sudo chmod +x /usr/local/bin/minio

3. 启动 MinIO 服务
systemctl start minio

4. 验证更新
# 1. 检查服务状态
sudo systemctl status minio

# 2. 检查版本号
minio --version
# 或使用 mc 命令
mc admin info

# MinIO对象存储扩容

# 单机与高可用模式下的磁盘扩容实操方案:见《MinIO对象存储磁盘扩容实操 (opens new window)

1762534634561.png

在MinIO集群中扩容磁盘需要遵循特定的规则,以确保数据均衡和纠删码(Erasure Coding)的有效性。以下是扩容磁盘的关键步骤和要求:


# 一、扩容磁盘的基本规则

  1. 扩容单位 MinIO要求以纠删码组(Erasure Set)为单位扩容,且扩容后需保持每组磁盘数量一致

    • 默认情况下,纠删码组大小为 4到16块磁盘(必须跨节点分布)。
    • 例如:初始集群为4节点×2磁盘=8块,若默认纠删码组大小为4,则共有2个纠删码组(每组4块,跨4节点)。
  2. 扩容磁盘数量要求

    • 必须成组扩容:每次扩容的磁盘数需是纠删码组大小的整数倍。
      • 若纠删码组大小为4,则每次至少扩容4块(例如:+4、+8、+12等)。
    • 必须均匀分布到所有节点:新磁盘需在所有节点间均衡添加。
      • 例如:4节点集群扩容4块磁盘 → 每节点新增1块磁盘。
  3. 扩容后磁盘数量限制

    • 单个MinIO集群最多支持32个节点,每个节点最多16块磁盘(总磁盘数≤512块)。

# 二、具体扩容步骤

# 场景示例

初始集群:4节点,每节点2块100G磁盘(共8块,默认2个纠删码组,每组4块)。 目标:扩容到每节点4块磁盘(共16块)。

# 步骤1:准备新磁盘
  • 确保每个节点新增的磁盘容量和类型与原磁盘一致(推荐)。
  • 例如:每节点新增2块100G磁盘(共+8块)。
# 步骤2:动态扩容(无需停机)
  1. 扩展磁盘目录 修改MinIO启动命令,将新磁盘路径加入原有命令:

    # 原命令(假设):
    minio server http://node{1...4}/data/{1...2}/disk
    
    # 扩容后命令(每节点新增2块磁盘):
    minio server http://node{1...4}/data/{1...4}/disk
    
    • 重启MinIO服务(滚动重启节点,避免服务中断)。
  2. 自动数据均衡

    • MinIO会自动将数据均衡分布到新磁盘,无需手动干预。
    • 通过监控工具(如mc admin info)观察均衡进度。
# 步骤3:验证扩容
# 检查集群状态和可用容量
mc admin info myminio
  • 确认新磁盘已加入,且Usable Space按纠删码比例增加。

# 三、扩容后的容量计算

  • 初始容量:8块×100G = 800G,默认EC:4(4数据+4校验),可用400G。
  • 扩容后:16块×100G = 1600G,EC组仍为4数据+4校验(每组8块,共2组),可用800G。
    • 可用容量公式(数据分片数 / 总磁盘数) × 总原始容量

# 四、注意事项

  1. 不可缩减磁盘
    MinIO不支持减少磁盘数量,扩容后无法回退。

  2. 节点扩展 vs 磁盘扩展

    • 增加节点:需保持每节点磁盘数一致(如从4节点×2盘扩容到8节点×2盘)。
    • 增加磁盘:需保持所有节点同步增加(如4节点×2盘→4节点×4盘)。
  3. 性能影响

    • 扩容期间可能短暂影响I/O性能(数据均衡占用资源)。
    • 建议在低峰期操作。

# 五、总结

  • 扩容要求:成组(纠删码组倍数)、均匀分布、同类型磁盘。
  • 操作步骤:修改启动命令→滚动重启→自动均衡。
  • 容量增长:可用空间按纠删码比例线性增加(如默认EC:4下,50%利用率)。

通过遵循上述规则,可以安全地扩展MinIO集群的存储容量。

# 对象存储备份

步骤一: 停止 MinIO 服务
# 停止服务可以确保所有缓存中的数据都已写入磁盘,防止备份过程中产生数据不一致或文件损坏。
sudo systemctl stop minio

步骤二: 备份配置文件与 SSL 证书(重要)
# 除了核心数据,MinIO 的运行还依赖环境变量、配置文件以及可能存在的 SSL 证书。恢复时如果缺少这些,服务将无法正常启动。
# 创建统一的备份目录
sudo mkdir -p /backup/minio
# 备份 MinIO 配置文件(路径根据你的实际安装方式可能有所不同)
sudo cp /etc/default/minio /backup/minio/
sudo cp /etc/minio/minio.conf /backup/minio/
# 如果启用了 SSL/TLS,备份证书和私钥
sudo cp -r /etc/pki/tls/certs/minio.crt /backup/minio/
sudo cp -r /etc/pki/tls/private/minio.key /backup/minio/

步骤三: 执行底层数据目录备份
#根据你的备份目标(是打包归档还是同步到另一块硬盘/NAS),可以选择以下两种方式之一。请将其中的 /data/minio 替换为你实际的 MinIO 数据存储目录。

# 方式 A:使用 tar 打包压缩(适合归档和异地传输)
# 将数据目录打包成带日期的压缩文件,方便长期保存和移动。
sudo tar -czvf /backup/minio/data_backup_$(date +%Y%m%d).tar.gz /data/minio

# 方式 B:使用 rsync 目录同步(适合快速建立本地或 NAS 镜像)
# 如果你是将数据备份到同一台服务器的另一块硬盘,或者挂载的 NFS/SMB 目录,rsync 的速度最快且支持断点续传。
sudo rsync -avz --delete /data/minio/ /backup/minio/data/

步骤四: 重新启动 MinIO 服务
#底层数据拷贝完成后,即可恢复业务运行。
sudo systemctl start minio

步骤五: 验证备份完整性
# 备份完成后,建议随机抽取几个大文件,对比原目录和备份目录中文件的 md5sum 或文件大小,确保底层拷贝过程没有发生传输错误。
# 例如查看原文件和备份文件的大小与修改时间
ls -lh /data/minio/your-bucket/large-file
ls -lh /backup/minio/data/your-bucket/large-file

# V8对象存储应用场景

一、公共桶

  1. 免登录可下载文件(样式文件,图片等)
    门户样式库文件 门户字体库文件 门户图片,其他可公开的图片 业务可公开的

  2. 元数据文件
    元数据中心产生的元数据文件

  3. jar文件(做为maven仓库使用)
    udc发布应用时构建产物 V8平台应用及组件jar

  4. udc发布时产生的设计态元数据 udc发布时过程文件(后端源码,设计态元数据,前端描述)

  5. 国际化运行态词条/语种列表 应用及组件的运行态词条列表 各租户启用的语种列表

  6. 可公开的配置文件 平台级公开的配置信息(默认语种等)

二、私有桶

  1. 业务数据
    流程图 正文内容 后端生成的业务文件 用户上传的附件等

三、摆渡桶

  1. 跨环境推送通道/数据
    跨环境业务作为通道使用,里边内容闲时可清

# V8对象存储安全要求

公共桶:公共读(public-read)权限,可以不通过身份验证直接读取您 Bucket 中的数据

私有桶:私有权限private,对文件的所有访问操作需要进行身份验证。

摆渡桶:私有权限private,对文件的所有访问操作需要进行身份验证。

# V8文件中心/对象存储配置详解

一、文件中心通用配置

seeyon:
  file:
    ##对象存储类型,默认nfs,必填(minio,oss,obs,spi)
    storage-type: minio
    ##key生成器类型,客开过key生成器的用户需要配置,不配时默认使用V8默认key生成器,非必填
    key-gen: spi
    ##最大可上传文件大小,单位/byte,5.3.0版本之前默认100M,5.3.0版本及之后版本默认5G,非必填
    max-size: 5242880000
    ##上传文件类型后端黑名单列表,非必填
    blacklist: jsp,asp,jspx,aspx,ps,sh,bat,php
    ##可以配置到单个应用的配置中用于解除全局黑名单某类型文件单应用限制,非必填
    white-list: bat,jsp
    ##openApi/safe.backendModeDownloadUrlStrategy=time/safe.clientDownloadUrlStrategy=1=time时获取下载地址有效期,单位/秒,默认300秒,非必填
    download-sign-expire-time: 300
    ##标准storageKey临时文件保留时间,单位/天,默认30天,非必填
    temp-keep-day: 30
    ##是否启用文件删除接口,默认开启,关闭后删除接口失效存储使用量会变大, 非必填
    enable-delete: true
    ##单个节点最大下载并发量,默认50,非必填
    download-max-count: 50
    ##单个节点最大上传并发量,默认50,非必填
    upload-max-count: 50
    ##批量打包下载单次最大文件数,默认150,非必填
    batch-download-max-count: 150
    ##安全配置项
    safe:
      ##屏蔽下载按钮的端,默认空,非必填
      disableDownloadClients: pc,mobile
      ##下载地址鉴权策略,user(绑定用户)/time(仅验证有效期),默认user,非必填
      backendModeDownloadUrlStrategy: user
      ##5.60.0版本之后新增配置,不同客户端鉴权策略,非必填,移动端钉钉"1",PC端钉钉"2",移动端企微"3",PC端企微"4",移动端飞书"5",PC端飞书"6"
      clientDownloadUrlStrategy: 1=time,3=time,7=time,9=time
      ##是否开启文件下载业务鉴权,默认开启,非必填
      enableFileAuth: true
    ##文件中心spi配置,由于文件中心要提前加载所以需要把spi的jar包配到这里  配置方式和标准spi配置方式一致
    spi-plugins:
      - file:/root/public/xxx.jar

二、minio配置

seeyon:
  file:
    ##对象存储类型,默认nfs,必填(minio,oss,obs,spi)
    storage-type: minio
	minio:
      ##对象存储ak/minio账号, 必填
      access-key-id: fsdwrewrewfwfwe
      ##对象存储sk/minio密码, 必填
      access-key-secret: fasdfdsafdsfds
      ##对象存储域名 , 必填
      api-endpoint: minio.seeyonv8.com
      ##协议 , 必填
      api-endpoint-protocol: http
      ##5.0之前版本前端模式使用,5.0之后版本已去掉前端模式代码
      access-endpoint: minio.seeyonv8.com
      ##5.0之前版本前端模式使用,5.0之后版本已去掉前端模式代码
      access-endpoint-protocol: http
      ##非必填,连接失败是否重试,默认true
      conn-retry: true
      ##私有桶名, 必填
      private-bucket-name: seeyon-prod-private
      ##公共桶名, 必填
      public-bucket-name: seeyon-prod-public
      ##摆渡桶名, 必填
      ferryboat-bucket-name: seeyon-ferryboat
      ##曾经用过的公共桶名称列表
      history-public-bucket-list: seeyon-test-public,seeyon-xx-public
      ##曾经用过的私有桶名称列表
      history-private-bucket-list: seeyon-test-private,seeyon-xx-private
      ##原seeyon-prod-private桶内文件迁移到seeyon-test-private桶后需要加此配置
      history-bucket-mapping: seeyon-prod-private=seeyon-test-private,seeyon-prod-public=seeyon-test-public
      ##minio专用连接策略参数
      ##连接池最大连接数,默认10,非必填
      maxConn: 10
      ##调用超时时间,单位秒,默认120,非必填
      callTimeOut: 120
      ##读取超时时间,单位秒,默认60,非必填
      readTimeOut: 60
      ##连接超时时间,单位秒,默认60,非必填
      connectTimeOut: 60
      ##写超时时间,单位秒,默认60,非必填
      writeTimeOut: 60
      ##keeplive,单位秒,默认300,非必填
      keepLive: 300
      ##ssl证书校验开关,https使用自有证书时需设置为true,默认false,非必填
      ssl: false

三、阿里云oss配置

seeyon:
  file:
    ##对象存储类型,默认nfs,必填(minio,oss,obs,spi)
    storage-type: oss
	oss:
      ##对象存储ak/minio账号, 必填
      access-key-id: fsdwrewrewfwfwe
      ##对象存储sk/minio密码, 必填
      access-key-secret: fasdfdsafdsfds
      ##对象存储域名 , 必填
      api-endpoint: minio.seeyonv8.com
      ##协议 , 必填
      api-endpoint-protocol: http
      ##5.0之前版本前端模式使用,5.0之后版本已去掉前端模式代码
      access-endpoint: minio.seeyonv8.com
      ##5.0之前版本前端模式使用,5.0之后版本已去掉前端模式代码
      access-endpoint-protocol: http
      ##非必填,连接失败是否重试,默认true
      conn-retry: true
      ##私有桶名, 必填
      private-bucket-name: seeyon-prod-private
      ##公共桶名, 必填
      public-bucket-name: seeyon-prod-public
      ##摆渡桶名, 必填
      ferryboat-bucket-name: seeyon-ferryboat
      ##曾经用过的公共桶名称列表
      history-public-bucket-list: seeyon-test-public,seeyon-xx-public
      ##曾经用过的私有桶名称列表
      history-private-bucket-list: seeyon-test-private,seeyon-xx-private
      ##原seeyon-prod-private桶内文件迁移到seeyon-test-private桶后需要加此配置
      history-bucket-mapping: seeyon-prod-private=seeyon-test-private,seeyon-prod-public=seeyon-test-public
      ##阿里云oss专用连接策略参数
      ##socketTimeout,单位秒,默认50,非必填
      socketTimeout: 50
      ##connectTimeOut,单位秒,默认50,非必填
      connectTimeOut: 50
      ##requestTimeout,单位秒,默认300,非必填
      requestTimeout: 300
      ##maxConnections,单位秒,默认1024,非必填
      maxConnections: 1024

四、华为云obs配置

seeyon:
  file:
    ##对象存储类型,默认nfs,必填(minio,oss,obs,spi)
    storage-type: obs
	obs:
      ##对象存储ak/minio账号, 必填
      access-key-id: fsdwrewrewfwfwe
      ##对象存储sk/minio密码, 必填
      access-key-secret: fasdfdsafdsfds
      ##对象存储域名 , 必填
      api-endpoint: minio.seeyonv8.com
      ##协议 , 必填
      api-endpoint-protocol: http
      ##5.0之前版本前端模式使用,5.0之后版本已去掉前端模式代码
      access-endpoint: minio.seeyonv8.com
      ##5.0之前版本前端模式使用,5.0之后版本已去掉前端模式代码
      access-endpoint-protocol: http
      ##非必填,连接失败是否重试,默认true
      conn-retry: true
      ##私有桶名, 必填
      private-bucket-name: seeyon-prod-private
      ##公共桶名, 必填
      public-bucket-name: seeyon-prod-public
      ##摆渡桶名, 必填
      ferryboat-bucket-name: seeyon-ferryboat
      ##曾经用过的公共桶名称列表
      history-public-bucket-list: seeyon-test-public,seeyon-xx-public
      ##曾经用过的私有桶名称列表
      history-private-bucket-list: seeyon-test-private,seeyon-xx-private
      ##原seeyon-prod-private桶内文件迁移到seeyon-test-private桶后需要加此配置
      history-bucket-mapping: seeyon-prod-private=seeyon-test-private,seeyon-prod-public=seeyon-test-public
      ##华为云obs专用连接策略参数
      ##socketTimeout,单位秒,默认60,非必填
      socketTimeout: 60
      ##connectTimeOut,单位秒,默认60,非必填
      connectTimeOut: 60
      ##maxConnections,单位秒,默认1000,非必填
      maxConnections: 1000

五、客开spi配置 配置对应SpiStorageProperties类,客开过程中如需使用该配置类可通过代码Apps.getBeanFactory().getBean(SpiStorageProperties.class)获取,运行过程中如有公共桶和私有桶名称变动(文件迁移/换桶)请按实际情况配置history-public-bucket-list,history-private-bucket-list,history-bucket-mapping 3个配置项

seeyon:
  file:
    ##对象存储类型,默认nfs,必填(minio,oss,obs,spi)
    storage-type: spi
	spi:
      ##对象存储ak/minio账号, 必填
      access-key-id: fsdwrewrewfwfwe
      ##对象存储sk/minio密码, 必填
      access-key-secret: fasdfdsafdsfds
      ##对象存储域名 , 必填
      api-endpoint: minio.seeyonv8.com
      ##协议 , 必填
      api-endpoint-protocol: http
      ##5.0之前版本前端模式使用,5.0之后版本已去掉前端模式代码
      access-endpoint: minio.seeyonv8.com
      ##5.0之前版本前端模式使用,5.0之后版本已去掉前端模式代码
      access-endpoint-protocol: http
      ##非必填,连接失败是否重试,默认true
      conn-retry: true
      ##私有桶名, 必填
      private-bucket-name: seeyon-prod-private
      ##公共桶名, 必填
      public-bucket-name: seeyon-prod-public
      ##摆渡桶名, 必填
      ferryboat-bucket-name: seeyon-ferryboat
      ##曾经用过的公共桶名称列表
      history-public-bucket-list: seeyon-test-public,seeyon-xx-public
      ##曾经用过的私有桶名称列表
      history-private-bucket-list: seeyon-test-private,seeyon-xx-private
      ##原seeyon-prod-private桶内文件迁移到seeyon-test-private桶后需要加此配置
      history-bucket-mapping: seeyon-prod-private=seeyon-test-private,seeyon-prod-public=seeyon-test-public

六、环境迁移/文件迁移/换桶 等场景配置详解 说明: xxx 为存储类型占位,可选:minio / obs / oss / spi

**配置 key:**seeyon.file.xxx.history-private-bucket-list(历史私有桶列表) 作用:记录环境所有用过的私有桶,包含环境拷贝、迁移遗留旧桶 格式:多桶名使用英文逗号分隔 迁移要求:环境迁移、存储迁移时,必须同步复制原环境该配置

**配置 key:**seeyon.file.xxx.history-public-bucket-list(历史公有桶列表) 作用:记录环境所有用过的公有桶,包含环境拷贝、迁移遗留旧桶 格式:多桶名使用英文逗号分隔 迁移要求:环境迁移、存储迁移时,必须同步复制原环境该配置

**配置 key:**seeyon.file.xxx.history-bucket-mapping(迁移时桶名改变映射) 作用:迁移原桶名和目标桶名不一致场景,配置原桶→新桶映射 示例:原桶A=目标桶B,原桶C=目标桶D

# 对象存储数据清理

Minio自动化数据清理脚本下载: https://frontend-project-dev.oss-cn-beijing.aliyuncs.com/software/clean_minio.zip

各桶清理清单详情,文档持续更新中 https://docs.qq.com/sheet/DYkNIbGJzREZzSFFN?tab=BB08J2

一、公共桶清理清单 1777531043638.png

二、私有桶清理清单 1777531379426.png

三、摆渡桶清理清单

规范要求摆渡桶仅用于跨环境传输数据用,不可用于长期存储业务数据使用,所以支持闲时全部清理

# 对象存储数据迁移

一、存储桶变更各场景操作详解 场景 1:公共桶更换(同一个对象存储) 文件迁移目录(迁移至新公共桶) 必迁:boot/、enc/、assets/、maven-dependencies/、Metadata:*、i18n/ (迁移后旧桶里文件可删除) 可选:com/(不迁移可重启所有服务自动恢复)(换桶后旧桶里文件可删除) 其他: 除必迁和可选之外的文件无需迁移 配置操作:在 historyPublicBucketList 内追加原公有桶名称 换桶前配置:

seeyon:
  file:
    xxx:
      public-bucket-name: seeyon-prod-public

换桶后配置:

seeyon:
  file:
    xxx:
      public-bucket-name: seeyon-prod-new-public
      history-public-bucket-list: seeyon-prod-public

场景 2:公共桶更换(不同对象存储桶名相同) 迁移原公共桶全部文件至新存储桶 配置操作:仅需调整nacos配置中域名账号密码

场景 3:公共桶更换(不同对象存储桶名不相同) 迁移原公共桶全部文件至新存储新桶 配置操作:historyPublicBucketList 填写原公共桶名,historyBucketMapping 映射 换桶前配置:

seeyon:
  file:
    xxx:
      access-key-id: fsdwrewrewfwfwe
      access-key-secret: fasdfdsafdsfds
      api-endpoint: minio.seeyonv8.com
      api-endpoint-protocol: http
      public-bucket-name: seeyon-prod-public

换桶后配置:

seeyon:
  file:
    xxx:
      access-key-id: fsdwrewrewfwfwe
      access-key-secret: fasdfdsafdsfds
      api-endpoint: xxx.xxxx.com
      api-endpoint-protocol: http
      public-bucket-name: seeyon-prod-new-public
	  history-public-bucket-list: seeyon-prod-public
	  ##多次迁移不桶桶增加映射逗号隔开,如: seeyon-prod-public=seeyon-prod-new-public,seeyon-prod-public=seeyon-prod-new111-public
	  history-bucket-mapping: seeyon-prod-public=seeyon-prod-new-public

场景 4:私有桶更换(同一个对象存储) 无需迁移文件 配置操作:historyPrivateBucketList 追加原私有桶名称 换桶前配置:

seeyon:
  file:
    xxx:
      private-bucket-name: seeyon-prod-private

换桶后配置:

seeyon:
  file:
    xxx:
      public-bucket-name: seeyon-prod-new-private
	  history-public-bucket-list: seeyon-prod-private

场景 5:私有桶更换(不同对象存储桶名相同) 迁移原私有桶全部文件至新存储新桶 配置操作:仅需调整nacos配置中域名账号密码

场景 6:私有桶更换(不同对象存储桶名不相同) 迁移原私有桶全部文件至新存储新桶 配置操作:调整nacos配置中域名账号密码,historyPrivateBucketList 追加原私有桶名,historyBucketMapping 映射 换桶前配置:

seeyon:
  file:
    xxx:
      access-key-id: fsdwrewrewfwfwe
      access-key-secret: fasdfdsafdsfds
      api-endpoint: minio.seeyonv8.com
      api-endpoint-protocol: http
      private-bucket-name: seeyon-prod-private

换桶后配置:

seeyon:
  file:
    xxx:
      access-key-id: fsdwrewrewfwfwe
      access-key-secret: fasdfdsafdsfds
      api-endpoint: xxx.xxxx.com
      api-endpoint-protocol: http
      private-bucket-name: seeyon-prod-new-private
	  history-private-bucket-list: seeyon-prod-private
	  ##多次迁移不桶桶增加映射逗号隔开,如: seeyon-prod-private=seeyon-prod-new-private,seeyon-prod-private=seeyon-prod-new111-private
	  history-bucket-mapping: seeyon-prod-private=seeyon-prod-new-private

场景 7:整体环境迁移 结合以上 4 种桶更换场景,按「同存储 / 跨存储」按需组合操作。

# V8环境迁移/复制(A 环境 → B 环境)

1)A、B 共用同一套对象存储 私有桶:无需迁移文件 公共桶:迁移目录 boot/、enc/、assets/、maven-dependencies/、Metadata:*、i18n/;前端建议重新部署 YAML 配置示例

seeyon:
  file:
    xxxx:
      # 私有桶:填入A环境私有桶 + 原有历史桶
      history-private-bucket-list: A私有桶,旧桶01,旧桶02
      # 公有桶:填入A环境公有桶 + 原有历史桶
      history-public-bucket-list: A公有桶,旧公桶01

2)A、B 使用不同对象存储(网络 / 存储隔离) 方案一(推荐) B 环境创建与 A 完全同名桶,全量迁移公有桶、私有桶所有文件。 方案二(无法复用原桶名) B 新建自定义桶,全量迁移 A 所有桶文件 增加桶映射配置:

seeyon:
  file:
    xxxx:
      history-bucket-mapping: A公桶=B新公桶,A私桶=B新私桶
编撰人:het、liluyf、xinxing