
前言
ClickHouse作为目前最炙手可热的OLAP引擎,早已被国内外大厂纷纷“翻牌子”。其优秀的性能早已被大家首肯。
不过clickhouse也存在一些不足,其中之一就是本身没有提供数据再平衡的能力。这在集群扩缩容方面成为一项棘手的问题。
好在clickhouse提供了一项十分有用的工具:clickhouse-copier。下面就来介绍一下。
一、clickhouse-copier介绍
clickhouse-copier工具是标准发布的clickhouse server的一部分:
- 可以在完全并行的模式下工作,zookeeper负责协调同步各处理进程
- 以最有效的方式在集群内或集群间迁移数据
- 为了减少网络拥塞,建议在源数据所在的服务器上运行clickhouse-copier
二、clickhouse-copier命令参数简介
在使用clickhouse-copier时,可以指定具体的参数。
| 参数 | 说明 |
|---|---|
| –daemon | ★守护进程 |
| –umask=mask | 设置守护进程的umask |
| –pidfile=path | Pid文件路径 |
| -C[file], --config-file=[file] | ★配置文件,zookeeper等信息 |
| -L[file], --log-file=[file] | 日志文件 |
| -E[file], --errorlog-file=[file] | 错误日志文件 |
| -P[file], --pid-file=[file] | Pid文件 |
| –task-path=task-path | ★Zookeeper中的任务路径 |
| –safe-mode | 禁止ALTER DROP PARTITION |
| –copy-fault-probability=copy-fault-probability | 拷贝分区时,测试分区状态 |
| –log-level=log-level | 日志级别,debug |
| –base-dir=base-dir | ★默认当前路径,生成目录clickhouse-copier_日期_Pid |
| –help | 查看帮助 |
| –task-file=task-file | 上载至zookeeper任务路径的任务文件 |
| –task-upload-force=task-upload-force | 强制上载任务文件即使已经存在 |
| –move-fault-probability=move-fault-probability | 移动分区时,测试分区状态 |
| –experimental-use-sample-offset=true/false | 使用SAMPLE OFFSET查询代替 cityHash64(PRIMARY KEY) % n == k |
标★的比较重要,通常情况只需指定config-file和task-path,其他参数采用默认即可。
三、使用clickhouse-copier
1.确认源数据
- 创建分布式表
ch_sit是3分片1副本的集群
CREATE TABLE hy_db.test_copier_all ON CLUSTER ch_sit
(
ID String,
URL String,
EventTime Date
)
ENGINE = Distributed(ch_sit, hy_db, test_copier_local,rand());
- 创建分片表
create table hy_db.test_copier_local on cluster ch_sit
(
ID String,
URL String,
EventTime Date
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}/{shard}/test_copier_local','{replica}')
partition by toYYYYMM(EventTime)
ORDER BY ID;
- 插入一些数据
insert into hy_db.test_copier_all values
('H001','www.baidu.com','2019-03-09'),
('H002','www.sina.com','2020-4-18'),
('H003','www.baidu.com','2019-03-19'),
('H003','www.tencent.com','2019-03-20');
2.创建目的表
- 创建待迁移的集群的分布式表
rep_sit是一个1分片3副本的集群
CREATE TABLE test_replic.dis_copier_all ON CLUSTER rep_sit
(
ID String,
URL String,
EventTime Date
)
ENGINE = Distributed(rep_sit, test_replic, dis_copier_local,rand());
- 创建待迁移的集群的本地表
create table test_replic.dis_copier_local on cluster rep_sit
(
ID String,
URL String

本文介绍ClickHouse-copier工具的功能及使用方法,包括配置文件详解、数据迁移步骤,并通过实例展示如何实现数据切分。

4890

被折叠的 条评论
为什么被折叠?



