【问题标题】:ElasticSearch Snapshot across cluster跨集群的 ElasticSearch 快照
【发布时间】:2015-01-12 14:11:34
【问题描述】:

最近我在由 3 个数据节点组成的 elasticsearch 集群中创建了索引的 snapshot

我的主要目的是将这个索引移到另一个集群中。

我使用的命令:

PUT /_snapshot/my_backup

{
    "type": "fs",
    "settings": {
        "location": "/home/me/backup",
        "compress": true
    }
}


PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true
{
  "indices": "daily-20141127"
}

注意:以上查询是在同一个数据节点中执行的。

Snapshot 已在上述位置成功创建,但 在我点击查询的另一个节点中,并且此备份位置中的每个节点都有一个文件夹(名称:索引),其中包含等效节点上的备份索引。

示例:
节点 1:home/me/my_backup/indices/1,2,3
节点 2:home/me/my_backup/indices/4,5,6
节点 3:home/me/my_backup/indices/7,8,9

所以我必须手动将集群中的所有索引文件夹复制到具有快照元数据的节点才能完成备份。然后我将备份文件夹复制到新集群并恢复它(恢复过程很好)

备份索引的所有索引文件夹可以在1个节点中而不是跨集群拆分吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您指定的location 应该是一个“共享”位置,并且在存储库中指定的路径应该指向所有节点共享的同一目录。它不能只是节点上的本地目录。例如:该位置可以是单独机器上的网络共享挂载,并且所有节点都应该指向它并且应该能够访问它。

    这样做的原因是每个节点都可能持有一个分片的主节点或副本,并且它应该能够复制该特定分片中包含的文档,然后移动到“共享”位置。

    【讨论】:

    • 我知道已经有一段时间了,但我想知道为什么这也适用于 localhost。我遇到了一个问题,ES 声称它无法创建文件。该错误一直声称它“与 path.repo 指定的任何位置都不匹配,因为此设置为空”,但我的 elasticsearch.yml 肯定有路径
    • @JChao你有每个节点上指定的路径吗?
    • 嘿,我解决了这个问题。问题是由于我很愚蠢并且输入了 path.repo 作为路径,repo......
    【解决方案2】:

    正如 Andrei 所写 - 要在多个节点上使用快照,您需要一个所有节点都可以访问的共享位置,并且您必须使用相同的 path.repo 条目进行 elasticsearch.yml 设置。

    有一个指南如何create shared repositories across multiple clusters,其中涵盖了您需要的所有步骤,包括设置 Samba 服务器和客户端 + 配置 ElasticSearch。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      相关资源
      最近更新 更多