按索引文件夹备份、删除、恢复Elasticsearch索引



大多数ElasticSearch文档都讨论了通过REST API使用索引-有什么原因不能简单地从磁盘中移动或删除索引文件夹吗?

您可以在磁盘上移动数据,移动到一个点-

如果Elasticsearch正在运行,那么移动或删除索引从来都不是一个好主意文件夹,因为Elasticsearch不知道数据发生了什么,而您将获得日志中的各种FileNotFoundExceptions以及索引在您手动删除它们之前,它们都是红色的。

如果Elasticsearch没有运行,您可以将索引文件夹移动到另一个节点(例如,如果您要永久停用一个节点,并且需要获取数据关闭),但是,如果删除或将文件夹移动到当服务重新启动时,Elasticsearch看不到它,然后Elasticsearch会不高兴。这是因为Elasticsearch编写的集群状态到磁盘,并且在该集群状态下记录索引,因此如果ES启动并期望找到索引"foo",但您已经删除了"foo索引目录,索引将保持红色状态,直到通过REST API。

正因为如此,我建议如果你想移动或删除个人从磁盘中索引文件夹,尽可能使用REST API,因为它如果你删除了ES期望的文件夹,它可能会进入不愉快的状态在.中查找索引

编辑:我应该提到,复制(用于备份)索引文件夹是安全的,从Elasticsearch的角度来看,因为它不会修改文件夹。有时人们这样做是为了在快照之外执行备份&恢复API。

我使用以下过程:关闭、备份,然后删除索引。

curl -XPOST "http://127.0.0.1:9200/*index_name*/_close"

在此之后,所有索引数据都在磁盘上并且处于一致状态,并且不可能进行任何写入。我复制存储索引的目录,然后删除它:

curl -XPOST "http://127.0.0.1:9200/*index_name*/_delete"

通过关闭索引,弹性搜索停止对索引的所有访问。然后我发送一个命令来删除索引(以及磁盘上所有相应的文件)。

最新更新