【发布时间】:2019-11-22 03:09:27
【问题描述】:
需要备份Clickhouse DB, 有些表是分区的,有些不是。
如果可能,请提供一些脚本或代码以便更好地理解。
【问题讨论】:
标签: database clickhouse
需要备份Clickhouse DB, 有些表是分区的,有些不是。
如果可能,请提供一些脚本或代码以便更好地理解。
【问题讨论】:
标签: database clickhouse
请先查看官网Official Doc's
有多种方法可以进行备份。但他们都有自己的缺点。
方法一
转储数据的一般步骤:
格式列表请参考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
方法二
ALTER TABLE ... FREEZE PARTITION 命令似乎只是创建分区的本地快照
ALTER TABLE ...冻结分区
方法3
这个工具是非常简单的 ClickHouse 备份和恢复,支持 S3 轻松创建和恢复所有或特定表的备份,您可以编写查询和 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
方法四
数据目录的二进制副本。
/var/lib/clickhouse/
对于非复制表: 停止服务器,rsync/scp/etc...它的数据目录,启动服务器。
确保文件访问权限和所有权正确。
【讨论】:
https://github.com/AlexAkulov/clickhouse-backup
通过 S3 和 GCS 支持轻松进行 ClickHouse 备份和恢复的工具。 也支持增量备份。
【讨论】:
有不同的选项可能具有不同的复杂性和权衡:
【讨论】: