ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何部署 ClickHouse 存储与计算分离架构以独立扩展查询资源

如何部署 ClickHouse 存储与计算分离架构以独立扩展查询资源 如何部署 ClickHouse 存储与计算分离架构以独立扩展查询资源【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse本文解决的任务是在自管理的 ClickHouse 上把数据存放到 S3 对象存储让计算资源与存储资源相互独立从而可以按需分别扩展查询用的计算节点和容量大的 S3 存储。完成部署后ClickHouse 的表数据写入 S3 bucket查询仍走MergeTree引擎的插入与查询性能——ClickHouse 在检测到表使用 S3 存储时会在内部把引擎自动转换为S3BackedMergeTree无需在CREATE TABLE中显式指定。适用条件与前提动手前核对以下边界它们来自官方文档的明确要求版本要求ClickHouse 22.8 或更高版本。适用场景对冷数据上的查询性能要求不高的用例。硬性限制不要对 S3/GCS 配置任何 life cycle生命周期策略——文档明确指出不支持该做法且可能导致表损坏。复杂度提醒文档说明存储计算分离架构比标准部署更复杂如果是 ClickHouse Cloud 场景官方推荐直接使用SharedMergeTree表引擎无需本文的配置见 SharedMergeTree 文档 对应的仓库文档。本文路径面向自管理部署。需要准备一个 S3 bucket以及对应的ACCESS_KEY_ID与SECRET_ACCESS_KEY。完整步骤以 官方分离存储与计算指南 为准。第一步把 S3 配置为 ClickHouse 磁盘在 ClickHouse 的config.d目录下新建存储配置文件使用config.d覆盖目录的好处是升级时不会丢失这些配置vim /etc/clickhouse-server/config.d/storage_config.xml写入以下 XML其中$BUCKET、$ACCESS_KEY_ID、$SECRET_ACCESS_KEY需替换为你自己的 AWS bucket 地址和凭证clickhouse storage_configuration disks s3_disk types3/type endpoint$BUCKET/endpoint access_key_id$ACCESS_KEY_ID/access_key_id secret_access_key$SECRET_ACCESS_KEY/secret_access_key metadata_path/var/lib/clickhouse/disks/s3_disk//metadata_path /s3_disk s3_cache typecache/type disks3_disk/disk path/var/lib/clickhouse/disks/s3_cache//path max_size10Gi/max_size /s3_cache /disks policies s3_main volumes main disks3_disk/disk /main /volumes /s3_main /policies /storage_configuration /clickhouse配置要点s3_disk是真正的 S3 磁盘s3_cache是包在s3_disk上的本地缓存磁盘max_size示例值为10Gi。policies中的s3_main策略把s3_disk挂到一个名为main的 volume 下后续建表时通过策略名引用。如需进一步设置 S3 磁盘参数例如指定region或发送自定义 HTTPheader完整参数列表见 MergeTree 文档的 S3 外部存储章节。可选凭证方式可以把access_key_id/secret_access_key两项替换为下面这一行改为从环境变量和 Amazon EC2 元数据获取凭证use_environment_credentialstrue/use_environment_credentials配置文件写好后把文件属主改为 clickhouse 用户和组然后重启服务使配置生效chown clickhouse:clickhouse /etc/clickhouse-server/config.d/storage_config.xml service clickhouse-server restart第二步创建并验证 S3 支撑的表验证磁盘配置是否生效的最直接方式是建一张表、写入数据并查回来。创建表时指定storage_policy s3_main注意引擎仍写MergeTree不需要也无法写成S3BackedMergeTreeClickHouse 会自动完成内部转换CREATE TABLE my_s3_table ( id UInt64, column1 String ) ENGINE MergeTree ORDER BY id SETTINGS storage_policy s3_main;确认表按预期策略创建SHOW CREATE TABLE my_s3_table;文档示例输出以你的实际库名为准┌─statement──────────────────────────────────────────────────── │ CREATE TABLE default.my_s3_table ( id UInt64, column1 String ) ENGINE MergeTree ORDER BY id SETTINGS storage_policy s3_main, index_granularity 8192 └──────────────────────────────────────────────────────────────插入两行数据并查询INSERT INTO my_s3_table (id, column1) VALUES (1, abc), (2, xyz); SELECT * FROM my_s3_table;文档示例输出┌─id─┬─column1─┐ │ 1 │ abc │ │ 2 │ xyz │ └────┴─────────┘最后的落盘验证在 AWS 控制台中查看你指定的 bucket如果数据插入成功应能看到 ClickHouse 在 bucket 中生成了新的数据文件见文首图片文档示例截图中 bucket 路径为clickhouse3/文件名为 ClickHouse 生成的分片文件。至此存储与计算分离已生效数据在 S3查询计算在本地服务器。可选分支用多节点多区域实现容错复制如果你的目标不只是分离存储与计算还要求容错文档给出的做法是多个 ClickHouse 服务器节点分布在不同 AWS 区域每个节点各配一个 S3 bucket并用ReplicatedMergeTree表引擎完成复制。完整部署路径两个 ClickHouse Server 节点 三个 ClickHouse Keeper 节点 每区域一个 S3 bucket含 Keeper 的keeper_config.xml配置见 S3 集成文档的跨两个 AWS 区域复制单分片章节。该章节同样再次强调不要配置 AWS/GCS life cycle 策略。限制与说明本文路径面向自管理 ClickHouse S3ClickHouse Cloud 用户应改用SharedMergeTree无需上述磁盘与策略配置。S3/GCS life cycle 策略明确不受支持配置前务必确认 bucket 未启用。官方文档给出的延伸阅读为SharedMergeTree表引擎文档及其发布公告可在此基础上了解共享存储架构。【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表