Solr 8.9.0 Cloud跨集群数据同步方案咨询
Solr Cloud 8.9.0 跨集群数据同步适配方案
针对你描述的场景——源集群需保障实时更新与检索,目标集群用于API/报表检索(允许1-2分钟延迟),且CDCR已弃用的情况,以下是几种可行的实现方案:
方案一:基于快照的定时同步
利用Solr的快照(Snapshot)功能,结合共享存储实现定时同步,完全适配分钟级延迟需求:
- 源集群保持现有NRT副本架构,保障实时检索能力
- 配置定时任务,每分钟调用Solr API为源集群各分片创建快照:
curl -X POST "http://source-solr-host:8983/solr/your-collection/replication?command=backup&name=snapshot_$(date +%Y%m%d%H%M)" - 将快照存储在源、目标集群均可访问的共享存储(如NFS、HDFS)中
- 目标集群同步执行定时任务,拉取最新快照并恢复到对应分片:
curl -X POST "http://target-solr-host:8983/solr/your-collection/replication?command=restore&name=snapshot_YYYYMMDDHHMM" - 关键前提:源、目标集群的分片数、collection配置、schema需完全一致
方案二:基于事务日志(TLOG)的增量同步
借助NRT副本的事务日志记录所有更新操作,实现轻量增量同步:
- 编写脚本或轻量服务,定期(如每分钟)轮询源集群各分片的TLOG,通过
getUpdateLogAPI获取新增的更新条目 - 将获取到的更新操作批量发送至目标集群对应分片的更新API,完成增量同步
- 优势:相比快照同步,数据传输量更小,延迟更易控制在1-2分钟内,无需依赖共享存储
方案三:解耦式消息队列同步
通过中间件解耦源、目标集群的依赖,实现准实时同步:
- 在数据写入源Solr的链路中,新增消息队列(如Kafka)环节:所有写入源集群的更新操作,同时发送至Kafka主题
- 目标集群部署消费服务,批量消费Kafka中的更新消息并写入自身索引
- 优势:完全解耦源、目标集群,同步延迟可通过消费频率灵活调整,且避免直接访问源集群带来的性能影响
核心配置注意事项
- 目标集群可将副本类型配置为TLOG,无需NRT副本的实时索引能力,降低写入压力
- 严格保证源、目标集群的schema、collection配置完全一致,避免同步后出现字段不匹配或结构错误
- 定时同步任务的频率可根据实际延迟需求调整,1分钟间隔完全覆盖1-2分钟的延迟容忍度
内容的提问来源于stack exchange,提问作者mcacorner
相关产品推荐
相关产品推荐

