需要备份Clickhouse DB,
有些表是分区的,有些不是。
如果可能,请提供一些脚本或代码以便更好地理解。
最佳答案
请先查看官方页面 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 ...卡住分区
方法 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
方法 4 /var/lib/clickhouse/
对于非复制表:
停止服务器,rsync/scp/etc...它的数据目录,启动服务器。
确保文件访问权限和所有权正确。
关于database - Clickhouse:如何对已分区表和未分区表的 Clickhouse 数据库进行增量备份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005443/