前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Greenplum数据导入系列 -- (二)数据库实时同步

Greenplum数据导入系列 -- (二)数据库实时同步

原创
作者头像
lambgong
修改2020-01-14 16:44:16
4.2K1
修改2020-01-14 16:44:16
举报

说明

本文描述问题及解决方法同样适用于 腾讯云Snova云数仓

背景

Greenplum作为数据仓库的计算引擎,其数据来源多是业务数据,其中以MySQL为主。那如何将数据从MySQL同步到Greenplum中?如果是离线同步,比如每小时,每天,可以参考前一篇文章 Greenplum数据导入系列 -- (一)DataX,那如果需要实时同步呢,最常见的就是解析MySQL的binlog然后写入到Greenplum中,本文就描述了一种实现方法。

方法

本文介绍的方法是采用 maxwell+Kafka+bireme,以下简单做一下介绍:

maxwell:maxwell能实时解析MySQL的binlog,并输出json格式的数据发送到Kafka(还支持其它的消息中间件),具体参见maxwell官网

Kafka: 一种消息中间件,在该方案中主要用于消息中转,具体参见Kafka官网

bireme:支持Greenplum的数据增量同步工具,在写入Greenplum的过程中,由于采用Copy模式,所以性能较高,具体参见bireme官网

使用该方法,总体流程就是如下3步:

  1. 下载并搭建Kafka服务(如果是云环境,最好使用云上的kafka,省去搭建和维护的成本,比如腾讯云CKafka
  2. 下载并搭建maxwell服务,修改配置使其能够连接MySQL并能向kafka写入数据
  3. 下载并搭建bireme服务,修改配置使其能读取kafka的数据并能向Greenplum写入数据

前置

  1. 运行上述软件需要先安装java yum -y install java-1.8.0-openjdk.x86_64
  2. 安装jsvc yum -y install jsvc
  3. 确保机器对MySQL,Kafka,Greenplum网络连通

Kafka

为了简便,此处使用腾讯云CKafka作为例子

1. 腾讯云CKafka地址

2. 创建一个topic

image.png
image.png

maxwell

1. maxwell下载地址,选取最新版本即可

2. 解压之后,需要修改配置文件

cp config.properties.example config.properties

至少修改以下项目

# kafka配置
kafka_topic=maxwell
kafka.bootstrap.servers=localhost:9092

# MySQL配置
host=localhost
port=3306
user=maxwell
password=maxwell

3. 启动maxwell

bin/maxwell --config config.properties

4. 需要注意,maxwell启动后,会在MySQL中创建一个maxwell的数据库

image.png
image.png

bireme

1. bireme下载地址,选取最新版本即可

2. 解压后,修改配置文件etc/config.properties

# target database where the data will sync into.
target.url = jdbc:postgresql://127.0.0.1:5432/postgres
target.user = postgres
target.passwd = postgres

# data source name list, separated by comma.
data_source = maxwell1

# data source "mysql1" type
maxwell1.type = maxwell
# kafka server which maxwell write binlog into.
maxwell1.kafka.server = 127.0.0.1:9092
# kafka topic which maxwell write binlog into.
maxwell1.kafka.topic = topic_name1
# kafka groupid used for consumer.
maxwell1.kafka.groupid = bireme

3. 修改配置etc/maxwell1.properties

需要注意 maxwell1.properties中的maxwell1就是etc/config.properties中配置的data_source

以下表名MySQL中的test库的tb1和Greeplum(数据库在配置中已经指定了)中的public schema下的tb1是对应的,需要同步数据

test.tb1 = public.tb1

4. 启动bireme, bin/bireme start

注意:启动bireme,需设置JAVA_HOME

总结

该方案主要使用开源组件,门槛较低,仅需修改配置便可运行,不过需要用户自己维护开源组件的运行,后续将介绍一些

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 背景
  • 方法
  • 前置
  • Kafka
  • maxwell
  • bireme
  • 总结
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档