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