我是 solr 新手,所以请告诉我,以防我在这里遗漏任何内容。 我正在遵循本指南,但到目前为止还没有运气 - https://solr.apache.org/guide/8_10/making-and-restoring-backups.html
那么,我现在所做的 在
solr.xml
我添加了一个备份部分
<backup>
<repository name="s3" class="org.apache.solr.s3.S3BackupRepository" default="false">
<str name="s3.bucket.name">solr-backups</str>
<str name="s3.region">us-east-1</str>
</repository>
</backup>
之后,我添加了 S3 插件(通过 ansible,就像我通常处理其余事情一样)
- name: Copy SOLR S3 module to server
copy:
src: /opt/solr/dist/solr-s3-repository-8.10.1.jar
dest: /opt/solr/server/solr/lib
owner: solr
group: solr
remote_src: yes
become_user: root
最后,将 S3 凭证添加到 solr 配置中
- name: Add aws credentials
become_user: root
lineinfile:
path: /opt/solr/bin/solr.in.sh
line: 'SOLR_OPTS="-Daws.accessKeyId=REDACTED -Daws.secretAccessKey=REDACTED"'
重新启动 Solr 以应用所有新设置后,我正在运行以下命令来进行备份。
http://my-server.com:8983/solr/schools/replication?command=backup&name=29-10-2021&repository=s3&location=backupfolder
但收到以下错误:
HTTP ERROR 500 java.lang.NoClassDefFoundError: org/apache/solr/core/backup/repository/BackupRepository
URI: /solr/schools/replication
STATUS: 500
MESSAGE: java.lang.NoClassDefFoundError: org/apache/solr/core/backup/repository/BackupRepository
SERVLET: default
CAUSED BY: java.lang.NoClassDefFoundError: org/apache/solr/core/backup/repository/BackupRepository
CAUSED BY: java.lang.ClassNotFoundException: org.apache.solr.core.backup.repository.BackupRepository
知道我的配置可能有什么问题吗?
除了来自
contrib/s3-repository/lib
的插件 jar 之外,您还必须复制
dist/
文件夹中的所有 jar
尝试将 jar 文件复制到安装容器/文件夹,然后从
/opt/solr/server/solr/lib/
复制到 <local_repo>/plugins
文件夹
我还从 mavincentral 获取了 aws-sdk jar 文件并将它们移动到同一目录。
所以我的 dockerfile 是这样的。
FROM solr:8.11
USER root
COPY ./plugins/*.jar /opt/solr/server/lib/ext/
COPY ./aws-java-sdk-s3-1.12.777-SNAPSHOT.jar /opt/solr/server/lib/ext/
COPY ./aws-java-sdk-core-1.12.777-SNAPSHOT.jar /opt/solr/server/lib/ext/
COPY ./jackson-databind-2.17.2.jar /opt/solr/server/lib/ext/
USER solr