【问题标题】:How to administrate storage of ClickHouse server in a Cluster when disks get full磁盘已满时如何管理集群中 ClickHouse 服务器的存储
【发布时间】:2017-10-06 10:10:54
【问题描述】:

我正在集群中设置 ClickHouse 服务器,但文档中没有出现的一件事是如何管理非常大量的数据,它说它可以处理高达 PB 的数据,但是您无法在单个服务器中存储那么多数据。通常每个都有几个 teras。 所以我的问题是,我该如何处理它以存储在集群的一个节点中,然后当它需要更多空间时,添加另一个,它会自动处理分配到新服务器还是我必须使用权重分片分布。

当您在一台服务器上拥有超过 1 个磁盘时,它如何使用它们来存储数据?

有没有办法将非常旧的数据存储在云中并在需要时下载?例如,所有超过 2 年的数据都可以存储在 Amazon S3 中,因为它几乎不会被请求,如果是,检索数据需要更长的时间,但不会有问题。

你会找到什么解决方案?处理不断扩展的数据库以避免将来出现磁盘空间问题。

谢谢

【问题讨论】:

    标签: database sharding clickhouse


    【解决方案1】:

    我将假设您使用 ClickHouse 集群的标准配置:由 2-3 个副本节点组成的几个分片,在每个节点上都有一个 ReplicatedMergeTree 表,其中包含其各自分片的数据。还有一个或多个节点上创建的分布式表被配置为查询集群的节点(relevant section in the docs)。

    当您添加新分片时,旧数据不会自动移至该分片。推荐的方法确实是像您所说的那样“玩权重”,即增加新节点的权重,直到数据量均匀。但是如果你想立即重新平衡数据,你可以使用ALTER TABLE RESHARD 命令。仔细阅读文档并记住此命令的各种限制,例如它不是原子的。

    当您在一台服务器上拥有超过 1 个磁盘时,它如何使用它们来存储数据?

    请阅读the administration tips中关于配置RAID的部分。

    有没有办法将非常旧的数据存储在云中并在需要时下载?例如,所有超过 2 年的数据都可以存储在 Amazon S3 中,因为它几乎不会被请求,如果是,检索数据需要更长的时间,但不会有问题。

    ClickHouse 中的 MergeTree 表按月分区。您可以使用 ALTER TABLE DETACH/ATTACH PARTITION 命令来操作分区。你可以例如在每个月初分离某个较早月份的分区并将其备份到 Amazon S3。或者,您可以设置一组具有充足磁盘空间的廉价机器,然后手动将旧分区移到那里。如果您的查询始终包含日期过滤器,则将自动跳过不相关的分区,否则您可以设置两个分布式表:table_recent 和 table_all(集群配置包括具有旧分区的节点)。

    【讨论】:

      【解决方案2】:

      19.15 版引入了多磁盘存储配置。 20.1 引入了基于时间的数据重新排列。

      【讨论】:

        猜你喜欢
        • 2019-08-21
        • 2019-11-18
        • 1970-01-01
        • 1970-01-01
        • 2015-06-21
        • 2019-12-17
        • 1970-01-01
        • 2011-09-29
        • 1970-01-01
        相关资源
        最近更新 更多