从 mysql 中提取每日数据更改并部署到时间序列数据库
Posted
技术标签:
【中文标题】从 mysql 中提取每日数据更改并部署到时间序列数据库【英文标题】:Extract daily data changes from mysql and rollout to timeseries DB 【发布时间】:2021-12-13 06:47:30 【问题描述】:在 mysql 中,使用 binlog,我们可以提取数据的变化。但我只需要在那段时间/一天所做的最新更改,并且需要将这些数据输入时间序列数据库(计划与德鲁伊一起使用)
在读取binlog时,有没有什么机制可以避免重复并保持最新的变化?
我的意图是每天在时间序列数据库中备份整个 MySQL 数据库。它有助于通过参考当天存在的实际数据来调试我的应用程序以了解过去的日期
【问题讨论】:
请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:按照设计,Kafka 仅附加日志(无更新)。 Kafka Connect source 连接器将连续捕获从 binlog 到 Kafka 主题的所有更改。连接器将其位置存储在 binlog 中,并且只会在 MySLQ 中可用时将 新 更改写入 Kafka。
为了从 Kafka 消费,作为一种选择,您可以使用 sink 连接器,它将所有更改写入您的目标。或者,代替 Kafka Connect sink 连接器,一些独立的进程将从 Kafka 读取(使用)。对于德鲁伊,你可以看看https://www.confluent.io/hub/imply/druid-kafka-indexing-service。
消费者(连接器或某些独立进程),会将其位置(偏移量)存储在 Kafka 主题中,并且只会将 new 更改写入目标(Druid ),因为它们在 Kafka 中可用。
上述过程捕获所有更改,并允许您在目标 (Druid) 中的任何时间点查看源 (MySQL) 数据。最好的做法是让目标中的所有更改都可用。如果需要,使用目标的功能将数据视图限制在一天中的特定时间。
例如,如果 MySQL 中的记录每天有大量更改,而您只想写入一天中特定时间的最新状态作为目标。您仍然需要从 MySQL 中读取所有更改。创建一些额外的日常流程,将读取自上次运行以来的所有更改,并仅过滤最新记录并将它们写入目标。
【讨论】:
以上是关于从 mysql 中提取每日数据更改并部署到时间序列数据库的主要内容,如果未能解决你的问题,请参考以下文章