一次将Solr数据备份和恢复的曲折经历
最近准备开始一个新的项目。其实也不是全新的,其现有代码已经运行了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数据备份/恢复的时候一定要注意各个版本之间的差异。虽然不断保持软件的最新版本是一个好习惯,但在生产环境中,还是要慎之又慎,尽量选用兼容性最好前提下的最新版本。
Leave 一次将Solr数据备份和恢复的曲折经历 to:
Read more #cn posts
Best Posts From aafeng
We have not curated any of aafeng's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.