【问题标题】:SOLR backup status request not found未找到 SOLR 备份状态请求
【发布时间】:2022-07-05 17:10:59
【问题描述】:

我一直在试图找出一种我知道 SOLR 备份何时完成及其状态的方法。我们有很多我们正在尝试备份的集合。请求有错误

status={state=notfound,msg=Did not find [requestId123] in any tasks queue}

当我查看 SOLR 源代码时,我意识到状态是从监督者队列中的请求状态报告的,即 COMPLETED,FAILED,RUNNING,SUBMITTED 是基于监督者队列的。当在监督队列中找不到请求或队列被清除时,我们会收到此错误。

我的问题是有没有其他方法可以可靠地获取 SOLR 备份状态。

谢谢

【问题讨论】:

  • 我们正在使用 ayncid 运行备份过程。我们不能让它成为一个同步调用

标签: solr solrj solrcloud


【解决方案1】:

似乎最相关的信息将是不时尝试列出备份,并查看列表中的备份。 请注意,我不是 100% 确定如果备份未完成,是否有可能列出备份,但根据我的测试和纯粹的经验方法,情况似乎并非如此。

所以,如果我开始备份,并尝试执行一个 api,它将给我一个所有备份的列表,我会得到一个空列表,例如:

curl -X POST http://localhost:8983/v2/collections/backups -H 'Content-Type: application/json' -d '
{
  "list-backups" : {
    "name": "openaccess-v26-backup",
    "location": "/var/solr/mounted-efs-backup"
  }
}'

{
  "responseHeader":{
    "status":0,
    "QTime":165},
    "backups":[]
  }
}

但是,如果您在一段时间后执行此操作(备份完成后),响应将采用以下格式:

{
  "responseHeader":{
    "status":0,
    "QTime":14},
  "collection":"openaccess-v26",
  "backups":[{
      "indexFileCount":0,
      "indexSizeMB":0.0,
      "shardBackupIds":{
        "shard2":"md_shard2_0.json",
        "shard3":"md_shard3_0.json",
        "shard1":"md_shard1_0.json"},
      "collection.configName":"openaccess-v26",
      "backupId":0,
      "collectionAlias":"openaccess-v26",
      "startTime":"2022-07-05T08:34:53.703175Z",
      "indexVersion":"8.9.0"}]}

这种方法适用于使用 apiv2 的 8.9 版本的 solr im。

在列出备份后,我能够毫无问题地恢复和使用备份。

注意:Solr 之前有可能列出备份状态,但现在这个 api 端点返回的结果似乎与以前不同。对我来说,它只是列出了分片的详细信息,不提供备份状态信息。看看here

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 1970-01-01
    • 2019-03-25
    • 2014-05-22
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    相关资源
    最近更新 更多