一次将Solr数据备份和恢复的曲折经历

in cn •  5 years ago 

最近准备开始一个新的项目。其实也不是全新的,其现有代码已经运行了5年,现在需要添加很多新的功能。在这个项目中使用了Solr,因此首先需要把其数据备份并恢复到自己的VM上来以坐测试和开发。于是一个曲折的故事就开始了。。。

image.png

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

但在命令行就会发现如下错误:
image.png

这个问题倒是好解决,编辑文件/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数据备份/恢复的时候一定要注意各个版本之间的差异。虽然不断保持软件的最新版本是一个好习惯,但在生产环境中,还是要慎之又慎,尽量选用兼容性最好前提下的最新版本。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
  ·  5 years ago 

啪啪啪

  ·  5 years ago 

都补拍手了

  ·  5 years ago 

谢谢