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

标签 database clickhouse

需要备份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 ... FREEZE PARTITION 命令似乎只是创建一个分区的本地快照
    ALTER TABLE ...卡住分区

  • 方法 3
  • 你可以查看这个项目链接 Clickhouse Backup

  • 这个工具是非常简单的 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/

    相关文章:

    virtualbox - 如何设置 VirtualBox 网络属性以使 ClickHouse 可在主操作系统的默认端口 8123 上调用?

    clickhouse - 是否可以使用 MergeTree 引擎更新 clickhouse 中的主键?

    将一个表中的所有行插入到另一个结构相同的表中

    ubuntu - clickhouse 客户端不工作(或服务器)

    php - 错误号 : 1452 Cannot add or update a child row: a foreign key constraint fails

    macos - 在Mac OS上运行Clickhouse Docker镜像时出错

    php - 使用 PHP 将推荐数量和推荐 ID 添加到 MySQL 数据库中

    MYSQL DB 错误 SELECT 列表的表达式 #2 不在 GROUP BY 子句中并且包含非聚合列

    c++ - libpq VS qpsql(postgre 的 QT 驱动程序)

    python - NameError:设置更改为mysql后未定义名称 '_mysql'