SolrCloud文档删除仅主副本生效,副本未同步问题求助
SolrCloud 删除文档仅主副本生效,副本数据未同步问题
问题详情
- 基于Helm部署SolrCloud 9.3,集合IBpets配置:
numShards=1,replicationFactor=3,perReplicaState=true - 删除该集合单个或全部文档时,仅主副本
solr2-solrcloud-1的文档被删除,其余两个副本仍保留原有数据 - 已尝试通过Admin GUI和curl命令执行删除操作,均未解决同步问题,使用的curl命令如下:
curl -X POST http://localhost:58983/solr/IBpets/update?softCommit=true -H 'Content-Type: application/json' -d ' { "delete": { "query": "ib_uuid:(\"0eadfae078f744e6b30bf2448e08f672\")" } }'
集群环境配置
- 资源状态:集群CPU、内存资源充足
- 部署架构:共1635个集合(仅135个包含数据);3个Solr Pod部署在独立AWS m6a.2xlarge实例;3个ZooKeeper Pod部署在独立AWS m6a.large实例
- 关键配置参数:
- Solr:
javaMemory="-Xms12g -Xmx12g",javaOpts="-Djute.maxbuffer=50000000" - ZooKeeper:
jvmFlags="-Djute.maxbuffer=50000000 -Xms4096m -Xmx4096m -verbose:gc -Xloggc:$ZOO_LOG_DIR/zookeeper_gc.log"
- Solr:
排查与解决建议
- 检查副本节点日志:查看副本Solr节点的日志文件,确认是否存在同步相关错误(如ZooKeeper连接异常、索引同步超时、权限限制等)
- 验证副本状态:通过Solr Admin UI进入集合IBpets的详情页,查看所有副本的状态是否为
active,对比主副本与其他副本的indexVersion值是否一致,确认是否存在索引滞后 - 手动触发索引同步:在Solr Admin UI的集合IBpets副本管理页面,对未同步的副本执行「Fetch Index」操作,强制从主副本拉取最新索引数据
- 调整提交策略:当前使用
softCommit=true,尝试替换为commit=true执行硬提交,确保删除操作被持久化并触发副本同步,命令示例:
curl -X POST http://localhost:58983/solr/IBpets/update?commit=true -H 'Content-Type: application/json' -d ' { "delete": { "query": "ib_uuid:(\"0eadfae078f744e6b30bf2448e08f672\")" } }'
- 检查
perReplicaState配置影响:该配置允许副本独立管理状态,需确认副本是否正确监听主副本的更新事件,可尝试临时关闭该配置(修改集合配置后重新加载),验证同步问题是否解决 - 确认ZooKeeper集群状态:通过
zkServer.sh status命令查看每个ZK节点的运行状态,检查ZK日志是否存在Leader选举异常、数据同步失败等问题 - 验证节点网络连通性:确保3个Solr Pod之间可以正常通信,检查AWS安全组、集群网络策略是否限制了主副本向其他副本推送更新的流量
内容的提问来源于stack exchange,提问作者Jennifer
相关产品推荐
相关产品推荐

