更新时间:2024-07-19 GMT+08:00

通过数据文件备份恢复ClickHouse数据

操作场景

本章节主要介绍通过把ClickHouse中的表数据导出到CSV文件进行备份,后续可以通过备份的CSV文件数据再进行恢复操作。

前提条件

  • 已安装ClickHouse客户端。
  • 在Manager已创建具有ClickHouse相关表权限的用户。
  • 已准备好备份服务器。

备份数据

  1. 以客户端安装用户,登录安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录。

    cd /opt/client

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建ClickHouse表的权限。如果当前集群未启用Kerberos认证,则无需执行本步骤。

    1. 如果是MRS 3.1.0版本集群,则需要先执行:

      export CLICKHOUSE_SECURITY_ENABLED=true

    2. kinit 组件业务用户

      例如,kinit clickhouseuser。

  5. 执行ClickHouse组件的客户端命令,将要备份ClickHouse表数据导出到指定目录下。

    clickhouse client --host 主机名/实例IP --secure --port 9440 --query="表查询语句" > 输出的csv格式文件路径

    例如,如下是在ClickHouse实例10.244.225.167下备份test表数据到default_test.csv文件中。

    clickhouse client --host 10.244.225.167 --secure --port 9440 --query="select * from default.test FORMAT CSV" > /opt/clickhouse/default_test.csv

  6. 将导出的csv数据文件上传至备份服务器。

恢复数据

  1. 将备份服务器上的备份数据文件上传到ClickHouse客户端所在目录。

    例如,上传default_test.csv备份文件到:/opt/clickhouse目录下。

  2. 以客户端安装用户,登录安装客户端的节点。
  3. 执行以下命令,切换到客户端安装目录。

    cd /opt/client

  4. 执行以下命令配置环境变量。

    source bigdata_env

  5. 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建ClickHouse表的权限。如果当前集群未启用Kerberos认证,则无需执行本步骤。

    1. 如果是MRS 3.1.0版本集群,则需要先执行

      export CLICKHOUSE_SECURITY_ENABLED=true

    2. kinit 组件业务用户

      例如,kinit clickhouseuser。

  6. 执行ClickHouse组件的客户端命令,登录ClickHouse集群。

    clickhouse client --host 主机名/实例IP --secure --port 9440

  7. 创建与CSV备份数据文件格式对应的表。

    CREATE TABLE [IF NOT EXISTS] [database_name.]table_name [ON CLUSTER Cluster名]

    (

    name1 [type1] [DEFAULT|materialized|ALIAS expr1],

    name2 [type2] [DEFAULT|materialized|ALIAS expr2],

    ...

    ) ENGINE = engine

  8. 将备份数据文件中的内容导入到7创建的表中进行数据恢复。

    clickhouse client --host 主机名/实例IP --secure --port 9440 --query="insert into 表信息 FORMAT CSV" < csv文件路径

    例如,如下在ClickHouse实例10.244.225.167中,恢复default_test.csv备份文件数据到test_cpy表中。

    clickhouse client --host 10.244.225.167 --secure --port 9440 --query="insert into default.test_cpy FORMAT CSV" < /opt/clickhouse/default_test.csv