Clickhouse:如何对部分分区表和未分区表进行Clickhouse数据库增量备份?

时间:2019-07-12 10:47:43

标签: database clickhouse

需要备份Clickhouse数据库, 有些表是分区的,有些则没有。

如果可能,请提供一些脚本或代码以更好地理解。

4 个答案:

答案 0 :(得分:1)

请先检查官方页面Official Doc's

有多种备份方法。但是它们都有自己的短处。

方法1

转储数据的通用步骤:

有关格式列表,请参见this

clickhouse-client --query="SELECT * FROM table FORMAT Native" > table.native
Native is the most efficient format 
CSV, TabSeparated, JSONEachRow are more portable: you may import/export data to another DBMS.

Dump of metadata:
clickhouse-client --query="SHOW CREATE TABLE table" --format=TabSeparatedRaw > table.sql

Restore of metadata:
clickhouse-client < table.sql

Restore of data:
clickhouse-client --query="INSERT INTO table FORMAT Native" < table.native

方法2  -出现 ALTER TABLE ... FREEZE PARTITION 命令只是为了创建分区的本地快照

ALTER TABLE ... FREEZE PARTITION

方法3  -您可以检查此项目Link

此工具非常简单,带有S3支持的ClickHouse备份和还原 轻松创建和还原所有或特定表的备份,您可以编写查询和cron作业,在S3上支持增量备份。

用于日常备份和上传的简单cron脚本

 #!/bin/bash
BACKUP_NAME=my_backup_$(date -u +%Y-%m-%dT%H-%M-%S)
clickhouse-backup create $BACKUP_NAME
clickhouse-backup upload $BACKUP_NAME

方法4  -数据目录的二进制副本。

<!-- Path to data directory, with trailing slash. -->
<path>/var/lib/clickhouse/</path>

对于非复制表: 停止服务器,rsync / scp / etc ...其数据目录,然后启动服务器。

确保文件访问权限和所有权正确。

答案 1 :(得分:0)

Clickhouse不需要增量备份也不需要完整备份。您可以使用ReplicatedMergeTree复制数据,以具有功能齐全,可查询,水平可伸缩的群集。如您所知,备份和还原需要时间。使用ReplicatedMergeTree,您将基本上有2个不需要还原的热备份。

答案 2 :(得分:0)

有不同的复杂性和折衷的不同选择:

  1. 您可以拥有某种通用队列,例如Kafka,来自 放置在ClickHouse上以获取实时报告和一些 备份的不同“冷”存储(S3,HDFS等)。
  2. 您可以像此处所述备份单个分区 [LINK]:https://clickhouse.yandex/docs/en/query_language/alter/#backups-and-replication
  3. 您可以具有更大的其他ClickHouse副本 磁盘卷并且不参与实时查询,则使用ZFS 快照。

答案 3 :(得分:0)

https://github.com/AlexAkulov/clickhouse-backup

借助S3和GCS支持轻松进行ClickHouse备份和还原的工具。 也支持增量备份。