1. 文本文件导入导出

以下只备份数据,不包含创建库和表,需要事先创建在导人

导出

clickhouse-client -h 127.0.0.1 --query="select * from db.test" > test.csv

导入 (注意FORMAT后面大写) 多个文件导人可以用test.*

clickhouse-client --query="insert into db.test FORMAT CSV"<test.csv

报错

在这里插入图片描述
以上是在ClickHouse数据搬迁时,将数据导入到CVS文件中,再从文件导入表时发生的

实际测试如下:中英文逗号和中文顿号都会报这个错误 Code: 27. DB::ParsingException: Cannot parse input: expected
在这里插入图片描述
原因:
TSV:tab separated values;即“制表符分隔值”,用制表符分隔数据
CSV: comma separated values;即“逗号分隔值”,用逗号分隔数据
特殊字符导致数据解析出错

解决办法:以TSV格式导入文件内容即可

clickhouse-client --query="insert into db.test FORMAT TSV"<test.csv

2. 使用clickhouse-backup备份

一、官方资料和使用说明:
参考文档资料如下:
https://github.com/AlexAkulov/clickhouse-backup
https://segmentfault.com/a/1190000038604737
#使用限制:

  • 支持1.1.54390以上的ClickHouse
  • 仅MergeTree系列表引擎
  • 不支持备份Tiered storage或storage_policy
  • 存储上的最大备份大小为5TB
  • AWS S3上的parts数最大为10,000

链接:https://pan.baidu.com/s/1OXv7Cy_nNV-_tMOLbmyaFg
提取码:8gx7

我尝试过许多版本,不是缺少数据目录,就是表结构,最后是用我百度网盘的二进制文件成功的

二、安装方式:
2.1、二进制文件安装:
clickhouse-backup下载:

tar -xf clickhouse-backup.tar.gz 
cd clickhouse-backup / 
sudo cp clickhouse-backup  /usr/local/bin

2.2、下载rpm安装包安装:

rpm -ivh clickhouse-backup-1.0.0-1.x86_64.rpm

编辑配置文件:

mkdir -p /etc/clickhouse-backup/
vi /etc/clickhouse-backup/config.yml
添加一些基本的配置信息

general:
  remote_storage: none
  max_file_size: 107374182400
  disable_progress_bar: true
  backups_to_keep_local: 0
  backups_to_keep_remote: 0
  log_level: info
  allow_empty_backups: false
  download_concurrency: 1
  upload_concurrency: 1
clickhouse:
  username: default
  password: ""
  host: 10.0.18.252
  port: 9000
  data_path: ""     #尝试过修改这个不起作用,应该是这个版本bug,默认在ck的数据目录
  skip_tables:
  - system.*
  timeout: 5m
  freeze_by_part: false
  secure: false
  skip_verify: false

#查看全部默认的配置项

clickhouse-backup default-config

#查看可备份的表

clickhouse-backup tables

在这里插入图片描述

创建备份

  1. 全库备份

clickhouse-backup create
备份存储在中 $data_path/backup 下,备份名称默认为时间戳,可手动指定备份名称。例如:

clickhouse-backup create ch_bk_20211123

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

备份包含两个目录:

'metadata’目录: 包含重新创建所需的DDL SQL

'shadow’目录: 包含作为ALTER TABLE … FREEZE操作结果的数据。
2. 单表备份

语法:

clickhouse-backup create [-t, --tables=<db>.<table>] <backup_name>

备份表caihao.ch_test_customer

clickhouse-backup create  -t caihao.ch_test_customer ch_test_customer 
  1. 备份多个表
clickhouse-backup create  -t caihao.test_restore_tab,caihao.ch1 ch_bak_2tab

#查看备份文件
在这里插入图片描述

#删除备份文件
在这里插入图片描述
#清除shadow下的临时备份文件
在这里插入图片描述

数据恢复

语法:

clickhouse-backup restore 备份名

在这里插入图片描述
进入数据库查看
在这里插入图片描述
成功,撒花
一些参数:

  • –table 只恢复特定表,可使用正则。
  • 如针对特定的数据库:–table=dbname.*
  • –schema 只还原表结构
  • –data 只还原数据

总结有部分本地表没有备份,仅MergeTree系列表引擎表备份了
如果需要迁移可以把metadata,'shadow’目录移动过去在安装clickhouse-backup进行数据恢复

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐