通过数据文件备份恢复ClickHouse数据
操作场景
本章节主要介绍通过把ClickHouse中的表数据导出到CSV文件进行备份,后续可以通过备份的CSV文件数据再进行恢复操作。
前提条件
- 已安装ClickHouse客户端。
- 在Manager已创建具有ClickHouse相关表权限的用户。
- 已准备好备份服务器。
备份数据
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建ClickHouse表的权限。如果当前集群未启用Kerberos认证,则无需执行本步骤。
- 执行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
- 将导出的csv数据文件上传至备份服务器。
恢复数据
- 将备份服务器上的备份数据文件上传到ClickHouse客户端所在目录。
例如,上传default_test.csv备份文件到:/opt/clickhouse目录下。
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建ClickHouse表的权限。如果当前集群未启用Kerberos认证,则无需执行本步骤。
- 如果是MRS 3.1.0版本集群,则需要先执行:
export CLICKHOUSE_SECURITY_ENABLED=true
- kinit 组件业务用户
例如,kinit clickhouseuser。
- 如果是MRS 3.1.0版本集群,则需要先执行:
- 执行ClickHouse组件的客户端命令,登录ClickHouse集群。
clickhouse client --host 主机名/实例IP --secure --port 9440
- 创建与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
- 将备份数据文件中的内容导入到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