最近准备开始一个新的项目。其实也不是全新的,其现有代码已经运行了5年,现在需要添加很多新的功能。在这个项目中使用了Solr,因此首先需要把其数据备份并恢复到自己的VM上来以坐测试和开发。于是一个曲折的故事就开始了。。。
Solr 7.5
其实我自己的VM上已经有了Solr,其版本是7.5,而服务器上的版本是7.6,想想这个两个版本差距不大,于是想直接把数据复制过来不就可以了吗?这个过程非常简单,就是把服务器上/var/solr/data目录下这个项目对应的子文件夹整个复制到本机的同样目录,并重新启动Solr就可以了。但当重新启动Solr后发现了如下错误:
SolrCore Initialization Failures
xxxx: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Error opening new searcher
Please check your logs for more information
检查日志文件,发现如下错误:
Suppressed: org.apache.lucene.index.CorruptIndexException: checksum passed (4454119c). possibly transient resource issue,
......
提示索引文件出错,首先想到的是在打包压缩和复制的过程中出现了错误,于是又走了一遍,还是同样的错误。这时觉得应该就是版本之间的兼容性问题了。确实也是,新版本支持旧版本的索引文件很好理解。但反过来,把新版本的索引文件复制到旧版本上去,不被支持就很好理解了。
最新的Solr 8.5.1
那好吧,索性就使用最新的版本8.5.1吧,这样所有的问题不就都解决了吗?其安装过程也非常简单,下载tgz文件,解压,再运行install_solr_service.sh就可以了。
但安装完毕后却出现了新的问题:
xxxx: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load conf for core xxxx: Can't load schema /var/solr/data/xxxx/conf/schema.xml: Plugin init failure for [schema.xml] fieldType "textSuggest": Plugin init failure for [schema.xml] analyzer/filter: Error loading class 'solr.StandardFilterFactory'
Please check your logs for more information
原来是StandardFilterFactory在Solr 8中不能正常工作。找到了项目中的schema.xml,把相应的行注释掉,重新启动Solr,貌似问题解决了。但感觉并不是很满意,毕竟需要对配置做修改才能正常工作,而且不知道是否会对其他部分产生负面影响。
Solr 7.7.3
最终决定尝试一下Solr 7.x中的最终版本7.7.3。整个安装步骤非常简单,下载并解压后运行:
./install_solr_service.sh ../../solr-7.7.3.tgz -f
但在命令行就会发现如下错误:
这个问题倒是好解决,编辑文件/etc/security/limits.conf,添加:
solr hard nofile 65535
solr soft nofile 65535
solr hard nproc 65535
solr soft nproc 65535
重新启动Solr
sudo systemctl restart solr
终于能够正常工作了,没有任何错误提示。
结论
在Solr数据备份/恢复的时候一定要注意各个版本之间的差异。虽然不断保持软件的最新版本是一个好习惯,但在生产环境中,还是要慎之又慎,尽量选用兼容性最好前提下的最新版本。
啪啪啪
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
都补拍手了
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
谢谢
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit