You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现MySQL数据库与Amazon OpenSearch Service实时同步

MySQL 与 Amazon OpenSearch Service 实时同步可用方案

首先纠正Logstash相关认知误区

你提到的Logstash不支持更新、删除操作的说法不准确,只要调整配置逻辑,Logstash完全可以实现数据的增删改同步:

  • 增量更新:在jdbc输入插件中配置tracking_column跟踪表内的更新时间戳字段,每次只拉取上次同步后更新的数据,输出到OpenSearch时指定MySQL主键作为文档ID,开启doc_as_upsert参数即可实现更新插入。
  • 删除同步:如果表用软删除标记,直接按增量更新逻辑同步删除标记即可;如果是硬删除,可以新增定时扫描逻辑比对已同步ID和当前库内ID,补全删除操作,也可以搭配删除事件记录表实现更精准的删除同步。

参考Logstash配置片段:

input {
  jdbc {
    jdbc_connection_string => "jdbc:mysql://<mysql-host>:3306/<database>"
    jdbc_user => "<db-user>"
    jdbc_password => "<db-password>"
    tracking_column => "update_time"
    tracking_column_type => "timestamp"
    use_column_value => true
    statement => "SELECT * FROM <target_table> WHERE update_time > :sql_last_value"
    schedule => "*/5 * * * * *" # 每5秒拉取一次增量
  }
}
output {
  opensearch {
    hosts => ["<opensearch-endpoint>"]
    index => "<target-index>"
    document_id => "%{<mysql_primary_key>}"
    doc_as_upsert => true
  }
}

该方案的同步延迟取决于拉取间隔,最低可到秒级,适合对延迟要求不高的场景。

低延迟高可靠方案:基于CDC的binlog同步

如果需要毫秒级同步,或者硬删除场景多,优先选择解析MySQL binlog的CDC方案,所有增删改操作都可以精确捕获同步:

  • 开源实现:用Debezium采集MySQL binlog,解析后直接映射对应OpenSearch操作(INSERT对应写入、UPDATE对应更新、DELETE对应删除),不需要额外配置增量字段,延迟可控制在百毫秒以内。
  • 托管实现:直接使用AWS DMS服务,源端选择MySQL,目标端选择Amazon OpenSearch Service,一键配置全量+增量同步,不需要自行维护采集服务,开箱支持所有操作的实时同步。

选型建议

  • 小数据量、秒级延迟可接受、已有Logstash使用经验:选Logstash方案,接入成本最低。
  • 大数据量、毫秒级延迟要求、硬删除场景多:选CDC方案,稳定性和实时性更好。

内容的提问来源于stack exchange,提问作者Simo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:24:02