备份ClickHouse数据的最佳方法

我们最近开始使用Yandex ClickHouse作为我们的数据后端,我正在研究如何最好地备份我们的数据。 似乎有两种方法来做到这一点。

改变表…冻结分区

ALTER TABLE ... FREEZE PARTITION命令似乎只是创build一个分区的本地快照。 我不得不写一个脚本来发现每个表中的所有分区,然后发出相应的命令。

为了从系统中获得备份,我认为我必须在每个服务器上创build一个shadow目录的备份,并将该备份存储在另一个位置(如S3或其他位置)。

我将如何保持shadow目录清洁? 冻结可以被删除吗?

数据转储

我见过的备份数据的另一种方式是简单地将其转储到文件中,如本页所示。

https://github.com/resure/scpnet/wiki/ClickHouse-backup

我必须编写一个脚本来发现每个数据库中的所有表,然后将所有数据转储到一个文件中。 这让我想起了很多使用mysqldump来备份MySQL中的数据库,但是没有能力把所有东西都转储到一个命令中。

就我个人而言,我倾向于这个解决scheme,因为我似乎更容易编写脚本和维护,但我真的很好奇知道别人在做什么。