ClickHouse数据迁移工具之clickhouse-copier
ClickHouse数据迁移工具之clickhouse-copier
clickhouse需要从单节点迁移至副本集群中,表结构统一修改为副本表
网上搜到的迁移方式大致为三种。
一、拷贝数据目录
操作流程
在源集群的硬盘上打包好对应数据库或表的 data 和 metadata 数据
拷贝到目标集群对应的目录
重启 clickhouse-server
二、remote函数
INSERT INTO <local_database>.<local_table> SELECT * FROM remote('remote_clickhouse_addr', <remote_database>, <remote_table>, '<remote_user>', '<remote_password>')
三、clickhouse-copier
clickhouse-copier是 ClickHouse 官方提供的一款数据迁移工具,可用于把表从一个集群迁移到另一个(也可以是同一个)集群。Clickhouse-copier 使用 Zookeeper 来管理同步任务,可以同时运行多个 clickhouse-copier 实例
由于数据迁移后的每个表需要在集群上创建一份副本集,因此将迁移后的所有表引擎需要修改为ReplicatedMergeTree家族。
这里使用clickhouse-copier和remote(用来同步没有分区的表)进行数据迁移
clikhouse-copier
优点
- 支持并发同步,可以运行多个clickhouse-copier实例
- 使用zookeeper同步写入状态,支持增量同步
- 可以在配置文件内重新定义写入的表引擎
- 表名与数据库名不需要相同
- 可指定source与sink的shard,replica
缺点
- 配置文件较为繁琐,每个不同实例clickhouse-copier任务的配置文件都需要上传至zookeeper相应实例节点上
- 慢。相比于直接迁移文件,clickhouse-copier相当于多次执行insert into操作,因此迁移速度较慢
使用clickhouse-copier需要注意的点
- source表需要定义了partition,不然任务同步报错
- zookeeper内存储的是已处理过的partition信息,再次运行clickhouse-copier,同步的仅是未处理过的partition数据。对于已经同步后的partition,即使partition内有新增数据,也不会同步到目标集群上。
- clickhouse-copier无法同步普通视图,但可以同步物化视图,若同步物化视图,需要在source的表名前加上
.inner.
,不然会提示找不到table - 使用Clickhouse-copier需要借助zookeeper,为减少网络流量,建议clickhouse-copier在源数据所在的服务器上运行。
clickhouse-copier --config test.xml --task-path /clickhouse/copier_task2/download_task
常用参数
daemon — 后台运行copier工具,进程将在后台启动。 config — zookeeper.xml的存放路径,用来连接zookeeper集群。task-path — zookeeper上的存储节点路径,例如:/clickhouse/copier_task/task1;该路径中的内容用来存储任务,以及多个copier进程间的协调信息,建议不同的数据任务,路径不要重名,例如:/clickhouse/copier_task/task2,task3,task4,或者每天同步做一次数据copy的话,也可以以当天日期命名,task-2021-01-27,但同一任务的不同copier进程要保持一致的配置路径。task-file — 指向配置了任务的配置文件,例如:copy-job.xml,该文件内容会上传到zookeeper的/clickhouse/copier_task/task1/description节点。task-upload-force — 若设置为true,那么将根据task-file文件的内容,强制刷新覆盖上个参数提到的zookeeper的description节点。base-dir — 会存储一些日志以及相关的辅助型文件,copier工具进程启动后,会在$base-dir创建copier_YYYYMMHHSS_<PID>格式的子目录(日志文件会在该子目录下,以及辅助型分布式表的相关信息在data目录下),若没有传该参数,则在copier运行的当前目录创建。
clickhouse-copier同步流程
1.创建zookeeper.xml配置信息
<yandex><logger><level>trace</level><log>./log/clickhouse-copier/copier/log.log</log><errorlog>./log/clickhouse-copier/copier/log.err.log</errorlog><size>100M</size><count>3</count></logger><zookeeper><node><host>data-hadoop-1</host><port>2181</port></node><node><host>data-hadoop-2</host><port>2181</port></node><node><host>data-hadoop-3</host><port>2181</port></node><node><host>data-hadoop-4</host><port>2181</port></node><node><host>data-hadoop-5</host><port>2181</port></node></zookeeper>
</yandex>
2.在zookeeper上创建任务路径
zkCli -server hadoop-110:2181 create /clickhouse/copier_task
zkCli -server hadoop-110:2181 create /clickhouse/copier_task/${task_name}
3.创建对应的${task_name}.xml配置信息
<yandex><!-- remote_servers与/etc/clickhouse-server/config.xml下的remote_servers相同 --><remote_servers><!-- 需要同步的source集群的集群名 --><test_shard_localhost><shard><internal_replication>false</internal_replication><replica><host>data-hadoop-5</host><port>9000</port><user>default</user><password>test</password></replica></shard></test_shard_localhost><!-- 目标集群配置信息 --><bigdata_one_shard_two_replication><shard><internal_replication>true</internal_replication><replica><host>data-clickhouse-1</host><port>9000</port><user>default</user></replica><replica><host>data-clickhouse-2</host><port>9000</port><user>default</user></replica></shard></bigdata_one_shard_two_replication></remote_servers><!-- copier最大进程数 --><max_workers>4</max_workers><!-- 同步表信息 --><tables><!-- table_test 分类标签,仅用来区分不同的表同步任务 --><table_test><!-- pull信息,被同步的表位置 --><cluster_pull>test_shard_localhost</cluster_pull><database_pull>dw</database_pull><table_pull>test</table_pull><!-- push信息 --><cluster_push>bigdata_one_shard_two_replication</cluster_push><database_push>dw</database_push><table_push>test</table_push><!-- 目的表的engine信息,同步时会根据此engine配置创建表 --><engine>ENGINE=ReplicatedMergeTree('/clickhouse/tables/{shard}/dw/test', '{replica}')PARTITION BY toYYYYMMDD(toDateTime(trace_download_ts))ORDER BY tuple()SETTINGS index_granularity = 8192 </engine><!-- 分布式表shard --><sharding_key>01</sharding_key><!-- 查询源数据时可以添加的过滤条件 --><!--<where_condition> CounterID != 0 </where_condition>--><!-- 指定同步的具体分区,若无此参数,则默认同步全部分区,partition值为system.part对应表的partition column --><!-- <enabled_partitions></enabled_partitions>--></table_test><!--<table_2>....</table_2>--></tables>
</yandex>
4.将相应的${task_name}.xml
上传到相应zookeeper路径的${path}/description
节点上,有两种方法。
一种是直接将文件内容上传至description节点上
zkCli -server hadoop-110:2181 create /clickhouse/copier_task/${task_name}/description "`cat ${task_name}.xml`"
一种是利用参数上传文件
clickhouse-copier --config zookeeper.xml --task-path /clickhouse/copier_task/${task_name} --task-file=${task_name}.xml
5.执行clickhouse-copier
clickhouse-copier --config zookeeper.xml --task-path /clickhouse/copier_task/${task_name}
ClickHouse数据迁移工具之clickhouse-copier相关推荐
- 【转】记一次 ClickHouse 数据迁移
转载地址:https://zhuanlan.zhihu.com/p/220172155 背景 大约在 2018 年 8 月份开始正式接触 ClickHouse,当时机房没有合适的服务器,就在 Azur ...
- clickhouse数据手动迁移
1.需要拷贝文件 #### a.全部迁移: /var/lib/clickhouse/data /var/lib/clickhouse/metadata #### b.迁移单表: /var/lib/cl ...
- 【clickhouse】clickhouse数据文件目录移动到新目录并建立软连接
文章目录 1.概述 1.概述 转载:https://www.it610.com/article/1176902908415913984.htm 由于本人失误,没有修改clickhouse的默认数据目录 ...
- 大数据应用之 --- clickhouse客户端连接 dbeaver和永洪对接
大数据应用之 - clickhouse客户端连接 dbeaver和永洪对接 dbeaver连接 方法一:直接选择clickhouse,进行下载驱动即可(联网状态) 方法二:需要下载clickhouse ...
- 银河麒麟V10高级服务器操作系统clickhouse数据迁移技术全网唯一
银河麒麟V10操作系统clickhouse数据迁移技术 前言 笔者自述:笔者本人为中国软件行业国产化进程中的一份子,本人也是非常支持华为手机以及鸿蒙操作系统.本文介绍在本人在实际国产化切换过程中的一些 ...
- clickhouse 数据备份与恢复
一.前言 与其他的数据存储引擎类似,clickhouse承载着大数据量级的数据存储,对于数据的备份与恢复也是必须考虑的,本文将通过操作演示下如何对clickhouse数据进行备份与恢复. 官网说明: ...
- 【ClickHouse】Hangout with ClickHouse
1.概述 转载:Hangout with ClickHouse 当我们部门发现了ClickHouse这么一个优秀数据存储仓库后,经过了一段时间的摸索测试,就把线上大部分与数据分析相关的业务迁移到了Cl ...
- 【clickhouse】Centos7部署Clickhouse数据库
目录 1.clickhouse数据库安装说明 2.clickhouse数据库安装介质 3.clickhouse数据库安装前配置 3.1配置操作系统yum源(可选) 3.2配置NTP客户端 3.3配置s ...
- 达梦数据迁移工具的使用
作为国产数据库,达梦是比较典型的一种,开发工作中会用到其他数据库表迁移到达梦数据库的问题,在此记录一下迁移方法也为他人提供方便. 该工具仅用于其他数据库表及文本文件迁移达梦,或达梦数据库表迁移到其他数 ...
最新文章
- 【数据结构】顺序栈的实现(C语言)
- 牛客--追债之旅 两种解法
- 7、redis之使用spring集成commons-pool来操作常见数据类型
- 来总结一下在VC中调用COM组件的方法
- Centos7.4 安装elasticsearch6.1.3集群部署
- css用hover制作下拉菜单
- 中如何移动物体在画面中的位置_组合柜摆在客厅中什么位置最旺运?客厅中,财位是如何确定的?...
- python打包软件后报错 :SyntaxError: Non-UTF-8 code starting with ‘\x90‘ in file 的原因及解决方法
- DataWorks 数据质量V2.3版本发布
- 极客大学产品经理训练营 产品思维和产品意识 解决方案的设计与积累 作业3
- 18年韩师插本c语言的题答案,插本全能题库
- 在vue中使用wow动画插件(下载,配置,使用,参数)
- 多屏下dde-dock切换速度太慢
- 10.24程序员节日快乐
- CSRF攻击原理和防范措施
- 开源python语音助手_python实现语音助手小思同学
- Rockchip DRM RK628 Porting Guide
- 红米笔记本linux系统版本,一招让你的手机拥有三系统甚至四系统: WINDOWS+安卓+Linux...
- fiddler抓包指南(浏览器、app抓包及证书安装)
- Class Agnostic的物体检测/分割
热门文章
- MIT CMS.300 Session 2 – PLAY GAMES 玩 与 游戏
- IPv6路由FIB通知链
- 2021,至过去一年(2021.01.16 22:07:52)
- 100307 ~ 100312
- ros2 点云话题订阅 c++
- ESP32CAM与安卓端进行配合控制灯光简述(含有4G网查看方法)
- 组合数有关的公式及常用求和
- 小身板大能量 清微智能边缘盒子满足多场景智能应用
- 计算机更新失败变的很卡,难怪电脑升级后还这么卡,罪魁祸首找到了,看完你还敢这么用吗?...
- 巧遇“进博”:戴尔存储树“新”风