☰
把Arc的数据直接放在S3、Azure或GCS上:对象存储后端配置完全指南
2026/11/3 2:31:13 网站建设 项目流程

【免费下载链接】arc

Open, SQL-native time-series database for telemetry you need to keep. 38M+ records/sec ingestion, 25M+ rows/sec queries. InfluxDB Line Protocol and Telegraf compatible. Open Parquet on your storage. Single binary. S3/Azure native. Air-gap ready. AGPL-3.0.

项目地址:https://gitcode.com/gh_mirrors/arc39/arc
点击查看免费下载

Arc 是一个开源的 SQL 原生时序数据库(Time-Series Database),单二进制运行,写入吞吐可达 38M+ 记录/秒,兼容 InfluxDB Line Protocol 和 Telegraf。它把数据以标准 Parquet 文件格式存储,支持把数据直接放在 S3、Azure Blob 或 GCS 对象存储上——本文带你用最少的配置完成 Arc 对象存储后端切换。

为什么要把 Arc 数据放到对象存储?

Arc 的存储层由统一的 storage backend 工厂 驱动,支持local、s3、minio、azure、azblob、gcs六种后端。把主存储指向对象存储有几个直接好处:

  • 🗄️标准 Parquet 文件:所有数据都是开放格式的 Parquet 对象,随时可以用任意工具(或 DuckDB)直接读取,没有厂商锁定;
  • 📦多实例共享:多个 Arc 节点可以共享同一个 bucket/container/bucket,这是企业版集群部署的基础;
  • 🧊冷热分层:Enterprise 版可把冷数据自动迁移到 S3/Azure/GCS 冷层(tiered_storage.cold);
  • 💾备份同源:备份目标(backup.targets)也可以指向同一对象存储,用prefix隔离子树即可与主数据并存。

三种对象存储后端一览

后端取值配置段关键参数推荐认证方式
s3/minio[storage]s3_bucket、s3_region、s3_endpoint环境变量 / EKS IRSA / 实例角色
azure[storage]azure_container、azure_account_name环境变量(连接串或账号+密钥)
gcs[storage]gcs_bucketApplication Default Credentials / 服务账号密钥文件

切换后端只需一行:在arc.toml中设置backend = "s3"、"azure"或"gcs"(见 arc.toml 官方配置参考)。所有配置项都支持ARC_前缀环境变量覆盖,如ARC_STORAGE_BACKEND=s3。

S3 / MinIO 后端最快配置方法

真实 AWS S3(推荐写法)

[storage] backend = "s3" s3_bucket = "my-arc-bucket" s3_region = "us-east-1" # 凭据不要写进配置文件,用环境变量: # export ARC_STORAGE_S3_ACCESS_KEY=... # export ARC_STORAGE_S3_SECRET_KEY=...

⚠️新手最常踩的坑:仓库自带的 arc.toml 示例为 MinIO 本地开发预设了s3_use_ssl = false和s3_path_style = true。如果你指向真实 AWS S3 却沿用这两个值,所有读取都会以403 Forbidden / AccessDenied失败。AWS S3 必须是s3_use_ssl = true+s3_path_style = false(Arc 内置默认值本就是 AWS 正确值,示例文件是主动为 MinIO 改的)。

免密钥部署(IRSA / 实例角色)

如果你运行在 EKS 上,只要 Pod 绑定了 IAM 角色(AWS_ROLE_ARN+AWS_WEB_IDENTITY_TOKEN_FILE),两个s3_*_key全部留空即可——Arc 会自动检测并走 IRSA 认证。本地源码里有现成的 IRSA 验证脚本 可以参考。S3 后端实现见 internal/storage/s3.go,它走 AWS 默认凭据链(环境变量、IAM 角色等)。

自托管 S3 兼容存储(MinIO / SeaweedFS / R2)

三个关键差异:s3_endpoint填服务地址、s3_use_ssl = false(或按你的 TLS 配置)、s3_path_style = true。仓库提供了完整的 Docker Compose 示例,Arc + SeaweedFS 开箱即用:deploy/docker-compose/oss-s3/README.md,对应的环境变量写法在 docker-compose.yml。

Azure Blob 后端配置步骤

[storage] backend = "azure" azure_container = "arc-data" azure_prefix = "instances/abc123" # 可选 # 凭据三选一,均建议用环境变量: # ARC_STORAGE_AZURE_CONNECTION_STRING(最简单) # ARC_STORAGE_AZURE_ACCOUNT_NAME + ARC_STORAGE_AZURE_ACCOUNT_KEY # 或 azure_sas_token(受限权限 SAS 令牌)

Azure 支持的全部参数定义在 config.go 的 StorageConfig 中,实现代码在 internal/storage/azure.go。运行在 Azure 托管服务上时,把azure_use_managed_identity = true即可免去账号密钥。本地调试可以用azure_endpoint指向 Azurite。

GCS 后端配置步骤

[storage] backend = "gcs" gcs_bucket = "my-arc-bucket" # gcs_prefix = "instances/abc123" # 可选 # gcs_credentials_file = "/etc/arc/gcs-key.json" # 可选

认证逻辑很省心:不设置gcs_credentials_file时,Arc 使用Application Default Credentials(ADC)——GCE/GKE 元数据服务器、GKE Workload Identity、Cloud Run、或GOOGLE_APPLICATION_CREDENTIALS环境变量全部自动识别,云上部署基本零配置。注意 GCS 后端走的是原生 JSON API 而非 S3 兼容端点(见 internal/storage/gcs.go 的说明),并不支持层级命名空间(HNS)bucket,创建时使用标准命名空间 bucket。专用端点(如 Private Service Connect)通过gcs_endpoint配置,仅接受 https。

用 prefix 让多个实例共享一个 bucket

三个后端都支持前缀隔离:s3_prefix/azure_prefix/gcs_prefix,例如:

s3_prefix = "instances/abc123"

前缀会应用到该后端触碰的每一个 key,多个部署(或主数据 + 备份)可以安全地共享同一个 bucket/container。前缀是父级关系时 Arc 会在启动时拒绝重叠的备份目标与主存储,帮你避免"备份套娃"式的灾难。

凭据最佳实践

  1. 🎯优先环境变量:ARC_STORAGE_S3_ACCESS_KEY、ARC_STORAGE_S3_SECRET_KEY、ARC_STORAGE_AZURE_*、gcs_credentials_file指向密钥文件,配置文件里不落地密钥;
  2. 🎯云上优先免密钥:IRSA、实例角色、Managed Identity、ADC 是安全审计最友好的路径;
  3. 🎯配置覆盖规则:环境变量用ARC_前缀 + 点号转下划线(如storage.s3_bucket→ARC_STORAGE_S3_BUCKET),机制见 config.go 环境变量注册;
  4. ⚠️别把密钥提交进仓库:arc.toml中的 S3/Azure/GCS 凭据值刻意保持注释状态,就是为了避免"发布配置"变成"发布密钥"。

对象存储上的查询性能调优

数据搬到对象存储后,有两处调优值得知道:

  • S3 文件缓存:[query]段的enable_s3_cache = true、s3_cache_size = "128MB"、s3_cache_ttl_seconds = 3600,对 CTE、子查询、反复刷新的 Grafana 面板尤其有效(arc.toml 说明);
  • 远程读缓存:database.external_file_cache默认"auto"——节点可能读 S3/Azure 时自动开启 DuckDB 外部文件缓存作为远程读缓存,全部数据在本地盘时自动关闭(config.go 说明)。

另外别忘了:自动 compaction(小时/日两级合并)在对象存储上同样运行,能把小文件合并约 10 倍体积压缩,直接降低存储费与 API 请求费,调优见 docs/operations/compaction.md。

常见错误速查

症状原因解决
AWS S3 全部读取403 / AccessDenieds3_use_ssl=false或s3_path_style=true两者分别改为true/false
MinIO 连接失败没设 path-styles3_path_style = true+ 填s3_endpoint
启动报 bucket 校验失败前缀不可用 / GCS 用了 HNS bucket检查 prefix 权限;GCS 换标准命名空间 bucket
写数据成功但备份异常备份目录与主存储重叠备份目标必须与存储根目录不相交(arc.toml 警告)
冷层查询不到数据冷层 bucket 配成了 Glacier/深归档类冷对象需要可即时读取,用 STANDARD 或 Autoclass

小结与延伸资料

把 Arc 指向对象存储,本质上只是改一个backend键加几行连接参数,换来的是开放 Parquet 文件、多节点共享、冷热分层和更低廉的历史数据成本。

  • 完整配置参考:arc.toml
  • 存储后端实现:internal/storage/factory.go、s3.go、azure.go、gcs.go
  • 配置加载与默认值:internal/config/config.go
  • 企业版共享 bucket 集群部署示例:deploy/docker-compose/enterprise-shared/
  • 冷层(tiered storage)配置:见 arc.toml 的 tiered_storage 段

【免费下载链接】arc

Open, SQL-native time-series database for telemetry you need to keep. 38M+ records/sec ingestion, 25M+ rows/sec queries. InfluxDB Line Protocol and Telegraf compatible. Open Parquet on your storage. Single binary. S3/Azure native. Air-gap ready. AGPL-3.0.

项目地址:https://gitcode.com/gh_mirrors/arc39/arc
点击查看免费下载

相关推荐

上一篇:拆解技能包设计:「上线发布」这件脏活,怎么变成AI可执行的分步任务?
下一篇:AI浓度之争:2026版离谱指南把ChatGPT、Claude、Gemini全塞进学习闭环,值不值得抄作业

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询