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

如何实现MySQL数据库与Apache Solr的数据同步?(Vertx应用场景)

MySQL与Apache Solr同步方案(适配Vertx+Kafka技术栈)

结合你现有Vertx+Kafka+MySQL的技术栈,提供三种可行的同步方案,覆盖实时、低侵入、定时同步不同场景:

方案1:基于业务代码+Kafka的实时同步

这是最贴合你现有架构的方案,无需引入额外中间件:

  • 在Vertx应用的MySQL增删改业务逻辑中,操作数据库完成后,将变更事件(包含操作类型、主键、变更后的完整数据或关键字段)通过Vertx Kafka客户端发送到指定Kafka主题。
  • 开发一个独立的Vertx消费者服务,订阅该Kafka主题:
    • 解析消息后,针对不同操作类型调用Solr的REST API完成同步:
      • 新增/更新:请求Solr的/update接口,提交JSON格式的文档(用Vertx HttpClient异步发送)
      • 删除:请求/update接口发送删除指令(如{"delete":{"id":"xxx"}})
  • 关键注意点:给每条Kafka消息生成唯一ID,保证Solr操作的幂等性;处理失败的消息存入死信队列,后续重试避免数据丢失。

方案2:基于Debezium CDC的无侵入同步

适合不想修改业务代码的场景,利用MySQL binlog捕获变更:

  • 部署Debezium MySQL连接器,配置监听需要同步的MySQL表,连接器会将表的全量初始数据和增量变更事件自动发送到Kafka主题。
  • 用Vertx消费者服务订阅Debezium输出的Kafka主题,解析Debezium的标准消息格式(包含before旧数据、after新数据、op操作类型等字段),然后对应更新Solr索引。
  • 优势:无需改动现有Vertx业务逻辑,自动支持全量初始化+增量同步,适合数据量大、业务代码不便修改的场景。

方案3:Solr DIH增量同步(补全你遗漏的配置)

你提到查阅DIH文档未找到方案,大概率是没配置增量触发的核心参数:

  • 首先确保MySQL目标表有增量标记字段:要么是自动更新的updated_at时间戳字段,要么是自增主键id。
  • 在Solr的data-config.xml中配置增量导入逻辑:
    <dataConfig>
      <dataSource type="JdbcDataSource" driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://your-db-host:3306/dbname" user="xxx" password="xxx"/>
      <document>
        <entity name="your_table" 
                query="SELECT * FROM your_table" <!-- 全量导入查询 -->
                deltaQuery="SELECT id FROM your_table WHERE updated_at > '${dataimporter.last_index_time}'" <!-- 增量数据ID查询 -->
                deltaImportQuery="SELECT * FROM your_table WHERE id = '${dataimporter.delta.id}'"> <!-- 增量完整数据查询 -->
          <field column="id" name="id"/>
          <!-- 映射其他业务字段 -->
        </entity>
      </document>
    </dataConfig>
    
  • 触发方式:可以用Vertx的setPeriodic定时调用Solr的增量导入接口(http://solr-host:8983/solr/core_name/dataimport?command=delta-import),或者配置Solr自带的定时任务。
  • 适用场景:对同步实时性要求不高(比如分钟级),配置简单无需额外开发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:05:24