本文描述问题及解决方法同样适用于 腾讯云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步:
yum -y install java-1.8.0-openjdk.x86_64
yum -y install jsvc
为了简便,此处使用腾讯云CKafka作为例子
1. 腾讯云CKafka地址
2. 创建一个topic
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的数据库
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 删除。