需要备份Clickhouse数据库, 有些表是分区的,有些则没有。
如果可能,请提供一些脚本或代码以更好地理解。
答案 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)
有不同的复杂性和折衷的不同选择:
答案 3 :(得分:0)
https://github.com/AlexAkulov/clickhouse-backup
借助S3和GCS支持轻松进行ClickHouse备份和还原的工具。 也支持增量备份。