范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

腾讯大牛教你ClickHouse实时同步MySQL数据

  文章转载自 腾讯云数据库
  | 作者 史鹏宙,CSIG云与智慧产业事业群研发工程师
  ClickHouse作为OLAP分析引擎已经被广泛使用,数据的导入导出是用户面临的第一个问题。由于ClickHouse本身无法很好地支持单条大批量的写入,因此在实时同步数据方面需要借助其他服务协助。本文给出一种结合Canal+Kafka的方案,并且给出在多个MySQL实例分库分表的场景下,如何将多张MySQL数据表写入同一张ClickHouse表的方法,欢迎大家批评指正。
  首先来看看我们的需求背景:
  1. 实时同步多个MySQL实例数据到ClickHouse,每天规模500G,记录数目亿级别,可以接受分钟级别的同步延迟;
  2. 某些数据库表存在分库分表的操作,用户需要跨MySQL实例跨数据库的表同步到ClickHouse的一张表中;
  3. 现有的MySQL binlog开源组件(Canal),无法做到多张源数据表到一张目的表的映射关系。
  基本原理
  一、使用JDBC方式同步
  1. 使用Canal组件完成binlog的解析和数据同步;
  2. Canal-Server进程会伪装成MySQL的slave,使用MySQL的binlog同步协议完成数据同步;
  3. Canal-Adapter进程负责从canal-server获取解析后的binlog,并且通过jdbc接口写入到ClickHouse;
  优点:
  1. Canal组件原生支持;
  缺点:
  1. Canal-Adpater写入时源表和目的表一一对应,灵活性不足;
  2. 需要维护两个Canal组件进程;
  二、Kafka+ClickHouse物化视图方式同步
  1. Canal-Server完成binlog的解析,并且将解析后的json写入Kafka;
  2. Canal-Server可以根据正则表达式过滤数据库和表名,并且根据规则写入Kafka的topic;
  3. ClickHouse使用KafkaEngine和Materialized View完成消息消费,并写入本地表;
  优点:
  1. Kafka支持水平扩展,可以根据数据规模调整partition数目;
  2. Kafka引入后将写入请求合并,防止ClickHouse生成大量的小文件,从而影响查询性能;
  3. Canal-Server支持规则过滤,可以灵活配置上游的MySQL实例的数据库名和表名,并且指明写入的Kafka topic名称;
  缺点:
  1. 需要维护Kafka和配置规则;
  2. ClickHouse需要新建相关的视图、Kafka Engine的外表等;
  具体步骤
  一、准备工作
  1. 如果使用TencentDB,则在控制台确认binlog_format为ROW,无需多余操作。
  如果是自建MySQL,则在客户端中查询变量:
  2. 创建账号canal,用于同步binlog
  二、Canal组件部署
  前置条件:
  Canal组件部署的机器需要跟ClickHouse服务和MySQL网络互通;
  需要在机器上部署java8,配置JAVA_HOME、PATH等环境变量;
  基本概念:
  1. Canal-Server组件部署
  Canal-Server的主要作用是订阅binlog信息并解析和定义instance相关信息,建议每个Canal-Server进程对应一个MySQL实例;
  1)下载canal.deployer-1.1.4.tar.gz,解压
  2)修改配置文件conf/canal.properties,需要关注的配置如下:
  3)配置instance
  可以参照example新增新的instance,主要修改配置文件conf/${instance_name}/instance.properties文件。
  订阅 172.21.48.35的MySQL的testdb数据库中的以tb_开头的表的数据变更(例如tb_20200801 、 tb_20200802等),主要的步骤如下:
  步骤1:创建example2实例:cddeployer/conf && cp -r example example2
  步骤2:修改deployer/conf/example2/instance.properties文件
  步骤3:在conf/canal.properties中修改 canal.destinations ,新增example2
  订阅 172.21.48.35的MySQL的empdb_0数据库的employees_20200801表,empdb_1数据库的employees_20200802表,并且数据写入Kafka;
  步骤1:创建example2实例:cddeployer/conf && cp -r example example3
  步骤2:修改deployer/conf/example3/instance.properties文件
  步骤3:在Kafka中新建topic employees_topic,指定分区数目为3
  步骤4:在conf/canal.properties中修改 canal.destinations ,新增example3;修改服务模式为kafka,配置kafka相关信息;
  2. Canal-Adapter组件部署(只针对方案一)
  Canal-Adapter的主要作用是通过JDBC接口写入ClickHouse数据,可以配置多个表的写入;
  1)下载canal.adapter-1.1.4.tar.gz,解压;
  2)在lib目录下新增clickhouse驱动jar包及httpclient的jar包 httpcore-4.4.13.jar、httpclient-4.3.3.jar、clickhouse-jdbc-0.2.4.jar;
  3)修改配置文件conf/application.yml文件,修改canalServerHost、srcDataSources、canalAdapters的配置;
  4)修改配置文件conf/rdb/mytest_user.yml文件
  上述的配置文件中,由于开启了mirrorDb: true,目的端的ClickHouse必须有相同的数据库名和表名。
  修改adapter的conf/rdb/mytest_user.yml配置文件,指定源数据库和目标数据库
  在conf/rdb 目录配置多个yml文件,分别指明不同的table名称。
  Kafka 服务配置
  一、调整合理的producer参数
  确认Canal-Server里的canal.properties文件,重要参数见下表;
  二、新建相关的topic名称
  根据Canal-Server里instance里配置文件instance.properties,注意分区数目与canal.mq.partitionsNum 保持一致;
  partition数目需要考虑以下因素:
  1. 上游的MySQL的数据量。原则上数据写入量越大,应该分配更多的partition数目;
  2. 考虑下游ClickHouse的实例数目。topic的partition分区总数 最好 不大于 下游ClickHouse的总实例数目,保证每个ClickHouse实例都能至少分配到一个partition;
  ClickHouse服务配置
  根据上游MySQL实例的表的schema新建数据表;
  引入Kafka时需要额外新建Engine=Kafka的外表以及相关的物化视图表;
  建议:
  1. 为每个外表新增不同的 kafka_group_name,防止相互影响;
  2. 设置kafka_skip_broken_messages 参数为合理值,遇到无法解析数据会跳过;
  3. 设置合理的kafka_num_consumers值,最好保证所有ClickHouse实例该值的总和大于 topic的partition数目;
  新建相关的分布式查询表;
  服务启动
  启动相关的Canal组件进程;
  1. canal-server: sh bin/startup.sh
  2. canal-adapter: sh bin/startup.sh
  在MySQL中插入数据,观察日志是否可以正常运行;
  如果使用Kafka,可以通过kafka-console-consumer.sh脚本观察binlog数据解析;
  观察ClickHouse数据表中是否正常写入数据;
  实际案例
  需求:实时同步MySQL实例的empdb_0.employees_20200801表和empdb_1.employees_20200802数据表
  方案:使用方案二
  环境及参数:
  1.在MySQL新建相关表
  2. Canal-Server配置
  步骤1. 修改conf/canal.properties文件
  步骤2. 新增employees实例,修改employees/instances.properties配置
  3. Kafka配置
  4. 新增topic employees_topic,分区数为3
  5. ClickHouse建表
  6. 启动Canal-Server服务
  MySQL实例上游插入数据,观察数据是否在Canal-Server解析正常,是否在ClickHouse中完成同步。

两性关系男人这3种假容忍,女人要当心忍一时风平浪静,退一步海阔天空。对于这句话,虽然听上去是一种有胸怀的表现。可是,一个忍字,总是透露着心有不甘,或者说自我的压抑。一旦有一天忍不住,还有可能做出意想不到的事情。在男女两性交往,女人愿意为你做这4件事,要学会珍惜看一个人爱你,不要听她给你说了什么,而是她为你做了什么。并且,是不是心甘情愿。男女交往,找个爱你的人不容易。尤其是对男人来讲,千万不要犯糊涂。一个愿意为你付出包容你坏脾气的女人,那30岁女人自述你出轨就出轨,为什么找我闺蜜?讲述人李女士你出轨就出轨,为什么找我闺蜜?人们都说兔子都不吃窝边草,为什么一个堂堂七尺男儿,竟然能干出这样的事情来,让我想想都觉得恶心!我是一个性格比较大大咧咧的人,做事不喜欢藏着两性关系女人不说,并不表示不介意的3件小事很多人喜欢有话直说,不喜欢拐弯抹角,更不喜欢藏着掖着。但是,男女之间的交往,并不是什么事情都要说出来的。有些事,女人可以不说,但是男人一定要懂。这不是蛮不讲理,而是一种心意的表达,雪糕为什么越卖越贵?你爱吃的雪糕多少钱?雪糕卖得越来越贵,其实还是有原因的。前段时间,我们组织了一波雪糕评测。在评测时,我们安排了10位志愿者试吃24款雪糕,发现不同雪糕的口感真是差异巨大。最低评分只有4。8,最高评测却每年有5。7万人死于溺水,不慎落水时,我们该如何自救?据卫生部统计,全国每年约有5。7万人死于溺水,其中儿童溺水死亡人数约占56。04。都说水火无情,游泳时或者意外落水发生紧急情况,我们到底应该怎么办呢?网上现在也有各式各样溺水自救的网红家用美容仪真的有效吗?2个多月的跟踪实测结果来了不得不承认,随着岁月流逝,家用护肤品的抗衰效果已经很有限。越来越多的小仙女开始寄希望于家用美容仪,据说可以抗衰除皱增强皮肤弹性,效果要比护肤品强大得多。但美容仪价格贵上市时间短,有这三个孕检项目已经被叫停,很多孕妈还在做亲贝网小编了解到,自从小生命来到妈妈肚子里开始,准妈妈每天都过得非常忐忑,生怕小宝宝出现各种问题。因此从怀孕开始,准妈妈非常关注产检。但有些产检其实没必要,尤其是这三个产检项目,早唐筛检出率只有六七成,到底有必要做吗?问听说唐氏筛查不能确诊,那还有必要做吗?能不能直接做无创或羊水穿刺?答唐筛创伤小经济成本低,还是有必要做的。如果唐筛查出高风险,可以通过无创或羊水穿刺来进一步检查。唐氏筛查基础筛查我再也不扔这种塑料瓶了,切2刀放在卫生间,超实用,不花冤枉钱摘要塑料瓶家家户户都有,别再当垃圾扔掉了,像这种塑料瓶我从来不扔,只需要简单改造一下,切两刀放在卫生间里超实用,家家户户都用得到,不要再花冤枉钱了。今天就教大家一个塑料瓶变废为宝的把一个气球塞进塑料瓶里吹起来,教你废物巧利用,太实用了摘要气球和塑料瓶都是日常生活中常见的东西,平时家里的废弃塑料瓶不要着急扔掉了,只需要把一个气球塞进塑料瓶里吹起来,改造好的东西既好看又实用,家家户户都用得到,邻居见了抢着学。今天就
孩子有这些癖好,多半是双商高的证明,你家娃有几个?文章为作者原创,欢迎个人转发分享,未经许可请勿抄袭。作为父母,我们都希望孩子很聪明。不过在社会上想要混得如鱼得水,除了高智商,还需要高情商的加持。很多人都说,比起智商,拥有高情商的熊孩子半夜跳绳,楼下沟通未果用震楼器说话,宝妈我们搬家了图文为作者原创,欢迎个人转发分享,未经许可请勿抄袭。这年头,真是魔高一尺道高一丈,小刘楼上养了一个熊孩子,半夜三更跳绳还打篮球。多次上楼去找,人家父母一脸无辜,没有啊,我们家孩子没孩子身高发育停止前,会有这些信号,别装看不见赶紧弥补如果孩子的父母身体都不太高,一定会忧虑孩子的身高问题。可作为家长谁不希望自己的孩子未来有个好身材,大高个,气质好呢?的确,我们的认知没有错,一个人的身高的确和父母的遗传基因有关系,陈小春晒儿子,基因强大到怀疑人生,网友复制粘贴的吗?在爸爸去哪儿的影响下,更多的亲子节目层出不穷,于是更多的明星家庭暴露在大众视野中,近期,一档综艺节目中,陈小春和应采儿带着一对宝贝公开亮相。留给观众最深的印象就是一家四口中,陈小春吃得好就是豪?看郭晶晶一家,才明白教育是从晚餐开始文章为作者原创,欢迎个人转发分享,未经许可请勿抄袭。在我们的印象中,豪门就应该是像李湘家那样,吃穿用度都很好。可事实上,可能并非如此,前不久霍启刚郭晶晶带娃晚餐的照片被曝光,我们才钢琴家郎朗,评价儿子都和别人不同,云朵一样可爱的孩子长啥样?文章为作者原创,欢迎个人转发分享,未经许可请勿抄袭。钢琴家郎朗喜获贵子,当他接受采访时谈及自己的孩子时,笑容满面,并称自己的儿子可爱就好像云朵。这是多么曼妙的感觉啊。一下就把天使一明星谈丁克,叹息做人太累,不想孩子跟着受罪在我们普通人的意识中,人生就是学习工作成家立业,可在部分人的眼中,不完整的也是一种人生体验。于是好多人选择了做丁克族。也就是只结婚不生娃。前不久,久别观众视线的大明星郑伊健在一档节妈丑真能丑一窝?这种观念不正确,后天也有一定的影响文章为作者原创,欢迎个人转发分享,未经许可请勿抄袭。周末带孩子外出游玩,在服务站看到一个小女孩长的那叫一个好看,大眼睛双眼皮,水汪汪得让人怜爱,再看小嘴,鼻子,处处长得一副美人坯子放手涂鸦,就是对孩子最大的尊重,孙俪夫妻为此行为代言每一个带过孩子的人都知道,小孩子好奇心爆棚,她们各种折腾讨论淘气,甚至根本不管其他,只顾着自己在家里的墙面上创作,当父母发现时,一墙的颜色和造型已经将高价定制的墙纸毁于一旦了。就在孕吐越厉害,孩子智商就越高,这都是真的吗?天下之大,无奇不有,女本柔弱,为母则刚,这两句完全不挨着两句话却是一个女性在成为母亲后的真是写照。小刘一个孕三个月的准宝妈,由于在看到一篇论文,其中提到了孕吐和宝宝智商成正比的话题幼儿园举办运动会,孩子险些受伤,家长做法值得反思你会当妈妈吗?当我们提出这样的问题,好多家长都不解,甚至会怼回来。可实际上,有些人当妈妈爸爸当的真心不合格。某幼儿园就遇到了这样一位家长。小旭(化名)她入园已经一周了,正好赶上运动