clickhouse-copier操作指南

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

在这里插入图片描述

前言

ClickHouse作为目前最炙手可热的OLAP引擎,早已被国内外大厂纷纷“翻牌子”。其优秀的性能早已被大家首肯。
不过clickhouse也存在一些不足,其中之一就是本身没有提供数据再平衡的能力。这在集群扩缩容方面成为一项棘手的问题。
好在clickhouse提供了一项十分有用的工具:clickhouse-copier。下面就来介绍一下。

一、clickhouse-copier介绍

clickhouse-copier工具是标准发布的clickhouse server的一部分:

  1. 可以在完全并行的模式下工作,zookeeper负责协调同步各处理进程
  2. 以最有效的方式在集群内或集群间迁移数据
  3. 为了减少网络拥塞,建议在源数据所在的服务器上运行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.确认源数据

  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());
  1. 创建分片表
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;
  1. 插入一些数据
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.创建目的表

  1. 创建待迁移的集群的分布式表
    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());
  1. 创建待迁移的集群的本地表
create table test_replic.dis_copier_local on cluster rep_sit
(
    ID String,
    URL String
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值