查看原文
其他

一张图《ClickHouse 备份与恢复》

常华Andy Andy730 2024-03-16

什么是 ClickHouse?

ClickHouse 是一个用于联机分析处理(OLAP)的面向列的数据库管理系统 (DBMS)。



复制机制(Replication)

官网:https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/


ClickHouse 使用异步多主复制技术。当数据被写入任何一个可用副本后,系统会在后台将数据分发给其他副本,以保证系统在不同副本上保持相同的数据。大多数情况下 ClickHouse 能在故障后自动恢复,在一些少数的复杂情况下需要手动恢复。


ClickHouse 的复制机制(Replication)仅支持 MergeTree 引擎族。


Replication 机制是表级别的, 不是库级的,也不是节点级的。所以,一个节可以同时有复制表和非复制表。Replication 机制不依赖于分片(shard),每个分片有自己独立的 Replication 机制。对于 INSERT 和 ALTER 语句操作数据的会在压缩的情况下被复制。而 CREATE,DROP,ATTACH,DETACH 和 RENAME 语句只会在单个节点上执行,不会被复制。


Clickhouse 使用 ZooKeeper 来存储副本的元数据信息。Replication 机制需要 ZooKeeper 3.4.5 或更高版本。如果配置文件中没有设置 ZooKeeper ,则无法创建复制表,并且任何现有的复制表都将变为只读。


故障恢复:连接到 ZooKeeper 后,系统检查本地文件系统中的数据集是否与预期的数据集相匹配(ZooKeeper 存储此信息)。如果存在轻微的不一致,系统通过将数据与副本同步来解决。


在数据完全丢失后的恢复:如果其中一个节点的所有数据和元数据都丢失了,需要按照步骤在该节点上重新安装 ClickHouse 和相关配置。然后启动服务器(如果它已运行则重启)。数据会从副本中下载。



数据备份(Data Backup)

官网:https://clickhouse.tech/docs/en/operations/backup/


将源数据复制到其它地方:通常被导入 ClickHouse 的数据是通过某种持续的队列(如 Apache Kafka)。在这种情况下,可以配置一组额外的订阅者,在将其写入与 ClickHouse 相同的数据流。大多数公司已经有一些冷存储,这可能是一个对象存储或分布式文件系统,如 HDFS。


文件系统快照:某些本地文件系统提供快照功能(例如 ZFS),但它们可能不是提供实时查询的最佳选择。一个可能的解决方案是使用这种文件系统创建额外的副本,并将它们排除在用于 SELECT 查询的分布式表之外。


clickhouse-copier:是一种多功能的工具,最初创建于重新分片的 PB 大小的表。它还可用于备份和恢复目的,因为它可靠地复制 ClickHouse 表和群集之间的数据。


part操作:ClickHouse 允许使用 ALTER TABLE ... FREEZE PARTITION ... 查询以创建表分区的本地副本。最好将其远程复制到其他位置,然后删除本地副本。分布式文件系统和对象存储仍然是一个很好的选择,但具有足够大容量的正常附加文件服务器也可以。


clickhouse-backup:第三方工具 https://github.com/AlexAkulov/clickhouse-backup。

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存