将DB数据同步到数据仓库中的两种方法(简介)

本文介绍了两种将MySQL数据同步到Hive数据仓库的方法,包括低性能的直接查询同步和利用MySQL Binlog的实时同步法。Binlog实时同步法通过Canal采集Binlog,存入Kafka,然后使用Camus将数据拉取到Hive,结合存量数据做merge,解决了性能和数据变更的问题。
摘要由CSDN通过智能技术生成

在数据仓库中,ODS 层数据一般来源于客户端的日志和业务数据库中的数据,对于 MYSQL 等关系型数据库,我们需要将库中数据同步到 Hive 中进行查询与分析。这里简单介绍两种同步的方法。

低性能同步法

  1. 直连 MySQL 并 select 表中数据
  2. 将 select 的结果存储到本地作为中间存储
  3. 将中间存储的文件 load 进 Hive 表中

这种方法实现起来比较简单,但也有较大的缺陷,主要有以下几点:

  1. 随着业务规模不断扩大,每次 select 得到的数据量不断加大,将结果存本地再 load 进 Hive 这种方式会造成性能问题,无法满足下游数仓生产的时效性要求
  2. 从 MySQL 中 select 大量数据,会对 MySQL 造成过大压力,可能会影响线上服务
  3. Hive 无法有效支持 MySQL 中的 update、delete 操作

为了解决上述问题,大多数互联网公司都采用了实时Binlog采集 + 离线处理Binlog还原业务数据的方案,由于Binlog是流式产生的,因此将数据处理需求由每天同步一次均摊到实时流中,减小了对MySQL的访问压力,减小了对线上性能可能造成的影响。另外,因为Binlog是MySQL的二进制日志,其记录了MySQL中发生的所有数据变更,因此也能够记录数据的 insert、update、delete操作,通过一些语义方面的处理,能做到数据的精准还原。

利用 MySQL Binlog 的同步法

这一部分仅介绍大致思路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值