ClickHouse 的 s3 表函数和 S3 磁盘类型与 Tigris 兼容,后者是一项兼容 S3 的对象存储服务。Tigris 在 https://t3.storage.dev 提供一个全局端点,并从距离调用方最近的区域提供读取服务。因此,多区域 ClickHouse 集群可使用同一个存储桶 URL,无需为每个区域配置副本,也不会产生跨区域出口流量。
后端 MergeTree 配置只需稍作修改即可兼容:
<clickhouse>
<storage_configuration>
...
<disks>
<s3>
<type>s3</type>
<endpoint>https://your-bucket.t3.storage.dev/tables/</endpoint>
<access_key_id>your_access_key_id</access_key_id>
<secret_access_key>your_secret_access_key</secret_access_key>
<region>auto</region>
<metadata_path>/var/lib/clickhouse/disks/s3/</metadata_path>
</s3>
<s3_cache>
<type>cache</type>
<disk>s3</disk>
<path>/var/lib/clickhouse/disks/s3_cache/</path>
<max_size>10Gi</max_size>
</s3_cache>
</disks>
...
</storage_configuration>
</clickhouse>s3 表函数使用同一端点:
SELECT *
FROM s3(
'https://your-bucket.t3.storage.dev/path/to/file.parquet',
'your_access_key_id',
'your_secret_access_key',
'Parquet'
);可在 Tigris Console 中创建访问密钥。访问密钥 ID 以 tid_ 开头,密钥以 tsec_ 开头。