目录

clickhouse数据库备份

clickhouse数据库备份

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

报错

https://i-blog.csdnimg.cn/blog_migrate/1b8ce302decc8144e57d765c2dbad705.png

以上是在ClickHouse数据搬迁时,将数据导入到CVS文件中,再从文件导入表时发生的

实际测试如下:中英文逗号和中文顿号都会报这个错误 Code: 27. DB::ParsingException: Cannot parse input: expected

https://i-blog.csdnimg.cn/blog_migrate/c49ed43af1223b0c5d00f6166272f972.png

原因:

TSV:tab separated values;即“制表符分隔值”,用制表符分隔数据

CSV: comma separated values;即“逗号分隔值”,用逗号分隔数据

特殊字符导致数据解析出错

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

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

2. 使用clickhouse-backup备份

一、官方资料和使用说明:

参考文档资料如下:

#使用限制:

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

链接:

提取码: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

https://i-blog.csdnimg.cn/blog_migrate/ef8d9f74b4eca5f39241e264e7a1af1c.png

创建备份

  1. 全库备份

clickhouse-backup create

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

clickhouse-backup create ch_bk_20211123

https://i-blog.csdnimg.cn/blog_migrate/2d8955a0ae75ab2281f10cc284f00e13.png

https://i-blog.csdnimg.cn/blog_migrate/3c36f361454ba977e54b6d0998ff3fdb.png

https://i-blog.csdnimg.cn/blog_migrate/fefe824c8c7c8934db3cbcd1545a28ca.png

备份包含两个目录:

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

‘shadow’目录: 包含作为ALTER TABLE … FREEZE操作结果的数据。

  1. 单表备份

语法:

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

#查看备份文件

https://i-blog.csdnimg.cn/blog_migrate/73cc10746b14f71ee01b2b5dc71882f2.png

#删除备份文件

https://i-blog.csdnimg.cn/blog_migrate/a11927c4b9be649b95a2e5f22c07a853.png

#清除shadow下的临时备份文件

https://i-blog.csdnimg.cn/blog_migrate/6e9fe92ebcae7c628f3e365d4538b24c.png

数据恢复

语法:

clickhouse-backup restore 备份名

https://i-blog.csdnimg.cn/blog_migrate/c2fdd57758ea5d5d1fa40ea227db807e.png

进入数据库查看

https://i-blog.csdnimg.cn/blog_migrate/460ba659370f8321b4aa9802bc704efc.png

成功,撒花

一些参数:

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

总结有部分本地表没有备份,仅MergeTree系列表引擎表备份了

如果需要迁移可以把metadata,‘shadow’目录移动过去在安装clickhouse-backup进行数据恢复