snapshot_restore_exception在服务器之间迁移ElasticSearch 7索引

omhiaaxx  于 2023-01-16  发布在  ElasticSearch
关注(0)|答案(1)|浏览(121)

我们希望将ElasticSearchv7索引从服务器1迁移到服务器2。
如何将快照从一台服务器拷贝和恢复到另一台服务器?
官方文档似乎假设两台服务器共享相同的物理存储。这些服务器彼此不"知道",并且具有完全独立的磁盘。在我们的示例中,我们:
1.在两台服务器上创建相同的存储库foo
1.在服务器1上运行快照foo1
1.在服务器2上创建/snapshots/foo目录
1.验证服务器2上的存储库
1.在服务器2上运行快照footest,以验证文件是否已写入/snapshots/foo
1.将/snapshots/foo目录从服务器1复制到服务器2
1.运行foo1的恢复:

POST /_snapshot/foo/foo1/_restore
{
  "indices": "foo"
}

错误为:

{
  "error": {
    "reason": "[foo:foo1] snapshot does not exist",
    "root_cause": [
      {
        "reason": "[foo:foo1] snapshot does not exist",
        "type": "snapshot_restore_exception"
      }
    ],
    "type": "snapshot_restore_exception"
  },
  "status": 500
}

当我们检查回购协议时:

GET /_snapshot/foo/*

我们只能看到一个快照(在服务器2上创建的),看不到从服务器1复制过来的快照。
那么,如何将快照传输到服务器2呢?

fjaof16o

fjaof16o1#

@Marc在索引方面,从一台服务器复制数据到另一台服务器的选项很少:
1.为您的索引配置CCR(跨集群复制),并让它在两个服务器之间同步(这两个服务器可以在不同的机器上。网络/等...它们应该只能够通信)
1.您可以创建一个两台服务器都可以访问的存储库(使用共享IAM用户或角色,假设它位于AWS上),然后可以从server 1获取索引快照,并在server 2中恢复快照。
1.不推荐,但您可以将${path.data}文件从服务器1复制到服务器2中的${path.data}。
然而,这里的主要问题是:您的server 1和server 2是否运行在相同的ES版本上?

相关问题