Solr8 单机(单Core)迁移至 Solr-Cloud 三节点集群

【实战完整版】Solr8 单机(单Core)迁移至 SolrCloud 三节点集群(零宕机、无NFS、JSON导入方案)

一、前言

很多企业初期使用Solr 单机单Core 部署,业务量上涨后需要平滑迁移至 SolrCloud 集群高可用架构。

网上大部分教程都是 快照备份+NFS共享恢复,部署复杂、依赖共享存储、容易报错。

本文提供生产最稳、零依赖、零风险迁移方案:

单机JSON全量导出 + Cloud单副本导入 + 集群自动扩容双副本

✅ 不需要 NFS 共享存储

✅ 不需要停机重建索引

✅ 不依赖 Solr 快照 restore(cloud不兼容单机快照)

✅ 配置、分词、DIH 全部完整迁移

✅ 三节点集群最终高可用(分片+多副本)

二、环境信息(模拟生产)

2.1 源环境(旧单机)

  • Solr版本:Solr 8.0.0

  • 部署模式:单机单Core

  • IP:192.168.1.100

  • 端口:8983

  • 包含:自定义Schema、SmartCN中文分词、DIH数据导入配置

2.2 目标环境(新SolrCloud三节点集群)

  • 集群节点1:192.168.1.10:8983

  • 集群节点2:192.168.1.11:8983

  • 集群节点3:192.168.1.12:8983

  • 集群模式:SolrCloud + ZK集群

  • 架构:单分片、多副本高可用

2.3 迁移方案选型说明(重点)

❌ 废弃方案:快照BACKUP/RESTORE

单机快照无法直接在Cloud恢复,Cloud Restore强制依赖NFS共享存储,企业大部分环境无NFS,坑极多。

✅ 最终采用:JSON逻辑导出导入方案

不依赖底层索引文件,只迁移业务数据+配置文件,兼容性最强、最稳、零报错。

三、迁移整体流程(标准生产顺序)

源端导出配置 → 源端导出全量数据JSON → 集群上传配置到ZK → 集群部署依赖Jar → 集群创建单副本Collection → 导入数据 → 校验数据一致 → 扩容多副本高可用

核心原则:先单副本导数据,数据无误后再扩容副本!!

禁止先扩容再导数据,极易引发数据同步错乱、副本Recovery卡死。

四、源机器操作 192.168.1.100(单机)

4.1 导出Core完整配置(schema+solrconfig)

进入单机core目录,打包conf配置目录:

bash 复制代码
cd /opt/solr-8.0.0/server/solr/你的core名
zip -r conf.zip conf

将 conf.zip 上传到任意一台Cloud节点(示例上传到10节点)。

4.2 导出全量业务数据为JSON

导出当前索引所有文档,作为迁移数据源:

bash 复制代码
curl "http://127.0.0.1:8983/solr/你的core名/select?q=*:*&wt=json&rows=1000000" -o all_data.json

rows设超大值,一次性导出全量数据。

将 all_data.json 上传到Cloud集群节点。

建议:导出期间暂停业务写入,保证数据一致性

五、目标集群前置准备(10/11/12 三台全部操作)

5.1 关键坑点说明(90%人踩坑)

ZK只同步xml配置,不同步Jar包!!

分词Jar、DIH插件Jar必须三台节点本地全部部署、路径完全一致,否则新副本启动直接闪退、不报错、找不到core。

5.2 三台节点统一部署依赖Jar

必须存在的文件(Solr8必备):

  • 中文分词:lucene-analyzers-smartcn-8.0.0.jar

  • DIH数据导入:solr-dataimporthandler-8.0.0.jar、extras包

路径统一:

bash 复制代码
/opt/solr-8.0.0/contrib/analysis-extras/lucene-libs/
/opt/solr-8.0.0/contrib/dataimporthandler/lib/

三台机器文件、权限、路径完全一致。

六、Cloud集群配置导入(10节点操作)

6.1 解压配置包

bash 复制代码
mkdir -p /tmp/solr_migrate
unzip conf.zip -d /tmp/solr_migrate/

6.2 上传配置集到Zookeeper

bash 复制代码
sh /opt/solr-8.0.0/server/scripts/cloud-scripts/zkcli.sh \
-zkhost 192.168.1.10:2181/solr \
-cmd upconfig \
-confdir /tmp/solr_migrate/conf \
-confname 你的core名

此时配置已经全局同步到整个集群。

七、创建集群Collection(严格单副本初始化)

生产铁律:数据导入必须在单副本状态执行!

双副本导入极易引发索引同步错乱、脏数据、recovery卡死。

bash 复制代码
curl "http://192.168.1.10:8983/solr/admin/collections?action=CREATE&name=你的core名&numShards=1&replicationFactor=1&maxShardsPerNode=1&collection.configName=你的core名&wt=json"

7.1 查看集群状态

bash 复制代码
curl "http://192.168.1.10:8983/solr/admin/collections?action=CLUSTERSTATUS&collection=你的core名&wt=json"

确认:只有1个副本、state=active

八、JSON全量数据导入(单副本导入)

bash 复制代码
curl -XPOST -H "Content-Type:application/json" \
"http://192.168.1.10:8983/solr/你的core名/update?commit=true&waitSearcher=true" \
-d @/tmp/all_data.json

8.1 数据校验(核心步骤)

对比源端与目标端文档总数,必须完全一致

bash 复制代码
#源机器查询
curl "http://127.0.0.1:8983/solr/你的core名/select?q=*:*&rows=0&wt=json"
#集群查询
curl "http://192.168.1.10:8983/solr/你的core名/select?q=*:*&rows=0&wt=json"

九、集群扩容多副本(实现三节点高可用)

数据100%一致后,开始扩容副本,实现集群高可用。

依次添加副本到 11、12 节点(根据集群节点自由分配)

9.1 添加副本至11节点

bash 复制代码
curl "http://192.168.1.10:8983/solr/admin/collections?action=ADDREPLICA&collection=你的core名&shard=shard1&node=192.168.1.11:8983_solr&wt=json"

9.2 添加副本至12节点

bash 复制代码
curl "http://192.168.1.10:8983/solr/admin/collections?action=ADDREPLICA&collection=你的core名&shard=shard1&node=192.168.1.12:8983_solr&wt=json"

9.3 等待副本自动同步完成

SolrCloud 新副本会自动从Leader同步全量索引,无需手动同步。

循环查看状态,直到所有副本 active:

bash 复制代码
curl "http://192.168.1.10:8983/solr/admin/collections?action=CLUSTERSTATUS&collection=你的core名&wt=json"

9.4 最终校验

三台节点分别查询,numFound 全部一致:

  • 192.168.1.10

  • 192.168.1.11

  • 192.168.1.12

十、生产关键避坑总结(必看)

10.1 99%人踩的致命坑

ZK只同步配置文本,不同步Jar包,分词、DIH Jar必须三台节点本地部署,路径一致,否则副本启动秒退、无日志报错、WebUI看不到Core。

10.2 迁移顺序绝对不能乱

单副本导入数据 → 校验一致 → 扩容多副本

顺序颠倒必出脏数据、同步失败、索引损坏。

10.3 禁止使用Solr8的 *😗 删数据

Solr8 按查询删除存在段合并BUG,数据标记删除但不清零,永久残留脏数据。

清空数据优先使用:删除Collection重建。

10.4 WebUI显示误区

WebUI Core下拉框只显示本机节点Core ,判断集群状态以 CLUSTERSTATUS 接口为准,不要以页面显示为准。

10.5 放弃快照恢复的原因

单机快照无法被Cloud识别,Cloud Restore强制依赖NFS共享存储,企业无共享存储环境100%不可用,JSON导入是通用最优解。

十一、迁移完成最终架构

  • ✅ 三节点 SolrCloud 高可用集群

  • ✅ 多副本容错,单节点挂掉不影响业务

  • ✅ 分词、DIH、Schema 配置100%迁移一致

  • ✅ 业务数据零丢失、零错乱

  • ✅ 无需NFS、无需停机、无需重构索引

十二、总结

Solr 单机迁移 Cloud,不要迷信官方快照恢复,绝大多数生产环境无NFS无法使用。

JSON逻辑导出导入 + 单副本导入 + 后扩容副本 是目前最稳、最简单、零依赖、适合所有企业的通用迁移方案。

只要严格遵守 先导数据、后扩容 的顺序,即可实现100%平稳迁移。

相关推荐
波力海苔夹心脆67511 小时前
C# LINQ 入门到上手:一篇讲透查询语法、常用操作符与延迟执行(含示例与速查表
经验分享·c#·.net·solr·linq
御坂嘀喵 白日焰火2 个月前
LINQ之路18:LINQ to XML之导航和查询
xml·solr·linq
残月心殇 请珍惜枸2 个月前
LINQ之路17:LINQ to XML之X-DOM介绍
xml·solr·linq
sunxunyong4 个月前
ranger与solr&ldap&doris集成部署
solr·lucene
2601_961875244 个月前
法考资料电子版|pdf|资料已整理
elasticsearch·搜索引擎·pdf·全文检索·solr·lucene·sphinx
2601_961845424 个月前
考研公共课资料推荐|英语数学政治|电子版|资料已整理
搜索引擎·中文分词·solr·lucene·sphinx·高考
解决问题no解决代码问题4 个月前
漏洞详解|CVE-2026-44825 Apache Solr 隐藏默认账号漏洞(附检测+修复全套方案)
apache·solr·lucene
2601_961845424 个月前
高考真题下载|2025高考全科真题网盘分类整理
搜索引擎·中文分词·solr·lucene·sphinx·高考
HEADKON5 个月前
普托马尼Pretomanid对比贝达喹啉治疗耐多药结核病毒性大吗?
solr