ClickHouse官方文档翻译_操作-数据备份

Posted by Lance Lee on Thursday, August 20, 2020

TOC

数据备份

虽然副本可以防止硬件故障,但它不能防止人为错误:意外删除数据、删除错误的表或错误集群上的表,以及导致错误数据处理或数据损坏的软件Bug。在很多情况下,这样的错误会影响到所有的副本。ClickHouse有内置的安全措施来防止某些类型的错误——例如,默认情况下,不能删除超过50G数据的类似于MergeTree引擎的表。然而,这些保障措施并没有涵盖所有可能的情况,可以规避。

为了有效地减少可能的人为错误,您应该提前准备数据备份和恢复的策略。

每个公司都有不同的可用资源和业务需求,因此对于ClickHouse备份和恢复来说,并没有适合每种情况的通用解决方案。适用于1g数据的技术可能不适用于数十PB数据。有各种可能的方法,它们各有优缺点,下面将对此进行讨论。为了弥补各种缺陷,最好使用多种方法而不是一种方法。

Note: 请记住,如果您备份了某个东西,并且从未尝试还原它,那么当您实际需要它时,还原很可能无法正常工作(或者至少需要比业务所能忍受的更长的时间)。因此,无论您选择哪种备份方法,都要确保自动执行恢复过程,并定期在空闲的ClickHouse集群上进行实践。

在其他地方复制源数据

通常,进入ClickHouse的数据是通过某种持久化队列传递的,比如Apache Kafka。在这种情况下,可以配置一组额外的订阅者,当写入ClickHouse时读取相同的数据流,并将其存储在某处的冷备集群中。大多数公司已经有一些默认的推荐冷存储,可以是对象存储或分布式文件系统,比如HDFS。

文件系统快照

一些本地文件系统提供快照功能(例如,ZFS),但是它们可能不是提供实时查询的最佳选择。一种可能的解决方案是使用这种文件系统创建额外的副本,并将SELECT查询从分布式表中排除。在这些副本上的快照将脱离任何修改数据的查询的范围。另外,这些副本可能具有特殊的硬件配置,每个服务器挂载更多的磁盘,这样非常划算。

clickhouse-copier

clickhouse-copier是一个多功能的工具,最初创建它是为了重新分割PB大小的表。它还可以用于备份和恢复目的,因为它可以在ClickHouse表和集群之间可靠地复制数据。 对于较小的数据量,也可以从远程表中简单的INSERT INTO ... SELECT ...

操作分区

ClickHouse允许使用ALTER TABLE ... FREEZE PARTITION ...查询来创建表分区的本地副本。这使用/var/lib/clickhouse/shadow/文件夹的硬链接实现的,因此它通常不会为旧数据消耗额外的磁盘空间。创建的文件副本不是由ClickHouse server处理的,所以您可以将它们留在那里:您将有一个简单的备份,它不需要任何额外的外部系统,但仍然容易出现硬件问题。出于这个原因,最好远程将它们复制到另一个位置,然后删除本地副本。分布式文件系统和对象存储仍然是很好的选择,但是具有足够大容量的普通的挂载文件服务器也可以(在这种情况下,传输将通过网络文件系统或rsync进行)。

有关与分区操作相关查询的更多信息,请参见ALTER文档。

有一个第三方工具可以自动化这个方法:clickhouse-backup。

「如果这篇文章对你有用,请支持一下哦」

Attack On Programmer

如果这篇文章对你有用,请支持一下哦

使用微信扫描二维码完成支付