Clickhouse快速数据迁移与备份的几种方式
-
Clickhouse数据迁移,将一个表的数据,拷贝到另一个表或远程服务器上,有四种常用的方式:
- 方法一:先将数据导出为
TSV
或CSV
文件,再利用clickhouse-client --query
命令导入 - 方法二:利用
insert into ... select
语句,加上remote
可以选择从远程数据库导入
insert into ... select * from remote('ip',db.table,'user','password')
- 方法三:clickhouse-copier工具
这个工具网上推荐比较多,是官方的数据迁移工具,主要用在多个集群之间的数据迁移 - 方法四:直接拷贝原始数据文件,再
ATTACH
即可
笔者喜欢使用第四种方式,简单粗暴,直接从磁盘拷贝,速度很快。下面演示具体步骤。
数据文件拷贝方式
假设使用默认数据库
default
,我们要拷贝的表名为test
。步骤一
进入clickhouse数据目录,拷贝对应的数据文件
> cd /var/lib/clickhouse/data/default > ls test
复制
test
文件夹(test即表名)到目标机器相同路径下。步骤二
进入
metadata
目录> cd /var/lib/clickhouse/metadata/default > ls test.sql
这里有个
test.sql
,这个其实就是我们建表语句,只不过把CREATE
替换了ATTACH
而已。
复制里面SQL
语句,并在目标机器执行,然后show tables
,可以发现数据已成功导入。 - 方法一:先将数据导出为