将数据从 MySQL 二进制日志流式传输到 Kinesis
Posted
技术标签:
【中文标题】将数据从 MySQL 二进制日志流式传输到 Kinesis【英文标题】:Stream data from MySQL Binary Log to Kinesis 【发布时间】:2016-12-24 18:21:33 【问题描述】:我们有一个来自旧系统的写入密集型表(在 AWS RDS mysql 上),我们希望将每个写入事件(插入或更新)从该表流式传输到 kinesis。这个想法是创建一个管道来预热缓存和更新搜索引擎。
目前我们使用基本的轮询架构,基本上使用 SQL,但理想的情况是使用推送架构直接从事务日志中读取事件。
有人试过吗?有什么推荐的架构吗?
【问题讨论】:
嘿,你能实现这个吗? 还没有。我们预计很快就会回到这个问题。 【参考方案1】:我已经在 Oracle 中与一些这样做的客户合作过。似乎LinkedIn也使用了很多将数据从数据库流式传输到其他地方的技术。他们创建了一个名为 Databus 的平台,以不可知的方式实现这一目标 - https://github.com/linkedin/databus/wiki/Databus-for-MySQL。
Github 中有一个公共项目,遵循 LinkedIn 原则,已经将 binlog 从 Mysql 流式传输到 Kinesis Streams - https://github.com/cmerrick/plainview
如果您想深入了解 LinkedIn 方法的细节,这里有一篇非常不错(而且内容丰富)的博文 - https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying。
最后但同样重要的是,Yelp 也在这样做,但使用 Kafka -https://engineeringblog.yelp.com/2016/08/streaming-mysql-tables-in-real-time-to-kafka.html
为了简洁起见,没有深入了解 Kinesis Streams 的基础知识,如果我们将 Kinesis Streams 引入游戏,我不明白为什么它不应该工作。事实上,它就是为此而构建的——您的数据库事务日志是一个事件流。借用 Amazon Web Services 公共文档的摘录:Amazon Kinesis Streams 允许实时数据处理。借助 Amazon Kinesis Streams,您可以在生成数据时持续收集数据,并及时对有关您的业务和运营的关键信息做出反应。
希望这会有所帮助。
【讨论】:
【参考方案2】:aws DMS 服务提供从 SQL db 到 kinesis 的数据迁移。
【讨论】:
以上是关于将数据从 MySQL 二进制日志流式传输到 Kinesis的主要内容,如果未能解决你的问题,请参考以下文章
如何将特定日志文件从多容器 Docker Elastic Beanstalk 流式传输到 CloudWatch?