ClickHouse数据迁移工具之clickhouse-copier

clickhouse需要从单节点迁移至副本集群中,表结构统一修改为副本表

网上搜到的迁移方式大致为三种。

  • 一、拷贝数据目录

    操作流程

    1. 在源集群的硬盘上打包好对应数据库或表的 data 和 metadata 数据

    2. 拷贝到目标集群对应的目录

    3. 重启 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相关推荐

  1. 【转】记一次 ClickHouse 数据迁移

    转载地址:https://zhuanlan.zhihu.com/p/220172155 背景 大约在 2018 年 8 月份开始正式接触 ClickHouse,当时机房没有合适的服务器,就在 Azur ...

  2. clickhouse数据手动迁移

    1.需要拷贝文件 #### a.全部迁移: /var/lib/clickhouse/data /var/lib/clickhouse/metadata #### b.迁移单表: /var/lib/cl ...

  3. 【clickhouse】clickhouse数据文件目录移动到新目录并建立软连接

    文章目录 1.概述 1.概述 转载:https://www.it610.com/article/1176902908415913984.htm 由于本人失误,没有修改clickhouse的默认数据目录 ...

  4. 大数据应用之 --- clickhouse客户端连接 dbeaver和永洪对接

    大数据应用之 - clickhouse客户端连接 dbeaver和永洪对接 dbeaver连接 方法一:直接选择clickhouse,进行下载驱动即可(联网状态) 方法二:需要下载clickhouse ...

  5. 银河麒麟V10高级服务器操作系统clickhouse数据迁移技术全网唯一

    银河麒麟V10操作系统clickhouse数据迁移技术 前言 笔者自述:笔者本人为中国软件行业国产化进程中的一份子,本人也是非常支持华为手机以及鸿蒙操作系统.本文介绍在本人在实际国产化切换过程中的一些 ...

  6. clickhouse 数据备份与恢复

    一.前言 与其他的数据存储引擎类似,clickhouse承载着大数据量级的数据存储,对于数据的备份与恢复也是必须考虑的,本文将通过操作演示下如何对clickhouse数据进行备份与恢复. 官网说明: ...

  7. 【ClickHouse】Hangout with ClickHouse

    1.概述 转载:Hangout with ClickHouse 当我们部门发现了ClickHouse这么一个优秀数据存储仓库后,经过了一段时间的摸索测试,就把线上大部分与数据分析相关的业务迁移到了Cl ...

  8. 【clickhouse】Centos7部署Clickhouse数据库

    目录 1.clickhouse数据库安装说明 2.clickhouse数据库安装介质 3.clickhouse数据库安装前配置 3.1配置操作系统yum源(可选) 3.2配置NTP客户端 3.3配置s ...

  9. 达梦数据迁移工具的使用

    作为国产数据库,达梦是比较典型的一种,开发工作中会用到其他数据库表迁移到达梦数据库的问题,在此记录一下迁移方法也为他人提供方便. 该工具仅用于其他数据库表及文本文件迁移达梦,或达梦数据库表迁移到其他数 ...

最新文章

  1. 【数据结构】顺序栈的实现(C语言)
  2. 牛客--追债之旅 两种解法
  3. 7、redis之使用spring集成commons-pool来操作常见数据类型
  4. 来总结一下在VC中调用COM组件的方法
  5. Centos7.4 安装elasticsearch6.1.3集群部署
  6. css用hover制作下拉菜单
  7. 中如何移动物体在画面中的位置_组合柜摆在客厅中什么位置最旺运?客厅中,财位是如何确定的?...
  8. python打包软件后报错 :SyntaxError: Non-UTF-8 code starting with ‘\x90‘ in file 的原因及解决方法
  9. DataWorks 数据质量V2.3版本发布
  10. 极客大学产品经理训练营 产品思维和产品意识 解决方案的设计与积累 作业3
  11. 18年韩师插本c语言的题答案,插本全能题库
  12. 在vue中使用wow动画插件(下载,配置,使用,参数)
  13. 多屏下dde-dock切换速度太慢
  14. 10.24程序员节日快乐
  15. CSRF攻击原理和防范措施
  16. 开源python语音助手_python实现语音助手小思同学
  17. Rockchip DRM RK628 Porting Guide
  18. 红米笔记本linux系统版本,一招让你的手机拥有三系统甚至四系统: WINDOWS+安卓+Linux...
  19. fiddler抓包指南(浏览器、app抓包及证书安装)
  20. Class Agnostic的物体检测/分割

热门文章

  1. MIT CMS.300 Session 2 – PLAY GAMES 玩 与 游戏
  2. IPv6路由FIB通知链
  3. 2021,至过去一年(2021.01.16 22:07:52)
  4. 100307 ~ 100312
  5. ros2 点云话题订阅 c++
  6. ESP32CAM与安卓端进行配合控制灯光简述(含有4G网查看方法)
  7. 组合数有关的公式及常用求和
  8. 小身板大能量 清微智能边缘盒子满足多场景智能应用
  9. 计算机更新失败变的很卡,难怪电脑升级后还这么卡,罪魁祸首找到了,看完你还敢这么用吗?...
  10. 巧遇“进博”:戴尔存储树“新”风