kubernetes - 如何从 S3 存储桶恢复 Solr 备份

标签 kubernetes amazon-s3 solr solr-operator

我在 Kubernetes 上有一个正在运行的 SolrCloud v8.11 集群,带有 solr-operator。

在 S3 存储桶上启用备份。

如何正确编写请求以对存储在 S3 存储桶中的备份执行RESTORE

我无法弄清楚我必须在发出的 Restore API 请求中提供的 locationsnapshotName到 Solr。

为了发现这些值,我尝试执行 LISTBACKUP 操作,但在这种情况下,location 值也是错误的...

$ curl https://my-solrcloud.example.org/solr/admin/collections\?action=LISTBACKUP\&name=collection-name\&repository=collection-backup\&location=my-s3-bucket/collection-backup

{
  "responseHeader":{
    "status":400,
    "QTime":70},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.common.SolrException"],
    "msg":"specified location s3:///my-s3-bucket/collection-backup/ does not exist.",
    "code":400}}

## The Log in cluster writes:
org.apache.solr.common.SolrException: specified location s3:///my-s3-bucket/collection-backup/ does not exist. => org.apache.solr.common.SolrException: specified location s3:///my-s3-bucket/collection-backup/ does not exist.

毕竟,定期备份按预期工作,但迟早会执行RESTORE 操作,并且尚不清楚如何正确完成它。

提前谢谢您。

最佳答案

有点晚了,但我在寻找相同答案时遇到了这个问题。有a thread on the mailing list这帮助我弄清楚了它应该如何工作。

我发现有关此内容的文档非常困惑,但位置似乎相对于备份存储库。因此,repository 参数已经说明了存储桶名称,name 参数将是您尝试列出的备份的名称。然后,Solr 将 S3 路径构建为 {存储库存储桶} + {位置} + {备份名称}。因此,位置应该简单地是:/

假设您已为 SolrCloud 部署设置了一个 backupRepository,如下所示:

backupRepositories:
- name: "my-backup-repo"
  s3:
    region: "us-east-1"
    bucket: "my-s3-bucket"

并且您已经创建了一个 SolrBackup,如下所示:

---
apiVersion: solr.apache.org/v1beta1
kind: SolrBackup
metadata:
  name: "my-collection-backup"
spec:
  repositoryName: "my-backup-repo"
  solrCloud: "my-solr-cloud"
  collections:
    - "my-collection"

LISTBACKUP 的完整 cURL 命令为:

$ curl https://my-solrcloud.example.org/solr/admin/collections \
  -d action=LISTBACKUP \
  -d name=my-collection-backup \
  -d repository=my-backup-repo \
  -d location=/

与 RESTORE 命令类似:

$ curl https://my-solrcloud.example.org/solr/admin/collections \
-d action=RESTORE \
-d name=my-collection-backup \
-d repository=my-backup-repo \
-d location=/ \
-d collection=my-collection-restore

关于kubernetes - 如何从 S3 存储桶恢复 Solr 备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71125463/

相关文章:

elasticsearch - 如何排除journalbeat中的日志/事件

amazon-web-services - 以 "path-style"格式生成 S3 URL

kubernetes - 在工作节点和控制平面之间引入代理后,状态为未就绪的Kubernetes工作节点

kubernetes - Kubernetes服务NodePort未连接

kubernetes - 暴露为服务后,pod之间的通信无法正常工作

ruby-on-rails - Sunspot/Solr 全文搜索 - 如何索引 Rails 关联

java - 使用 SolrIndexSearcher 进行 ids 查询

python-3.x - 如何使用 python boto3 在 aws S3 中创建文件

amazon-web-services - 通过 Spark DataFrame 读取 S3 文件时,Glue 书签不起作用

java - 如何使用 solr 索引 sqlite 数据库