Elasticsearch2.3.0的备份和恢复

简介

由于不小心删除了Elasticsearch的数据并造成了糟糕的后果(虽然不是在生产环境中),因此我将总结Elasticsearch索引的备份和恢复方法。

由于这是个人备忘录,请参考官方指南以获取详细信息。
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html

环境信息

Elasticsearch: Elasticsearch的版本号是2.3.0。

准备存储库

在创建快照和恢复之前,需要准备快照仓库。本次使用共享文件系统作为仓库,但也可以通过使用官方插件将Amazon S3或Azure Storage Repository作为后端存储仓库。

创建目录

所有者和所有组指定了用于Elasticsearch的用户和组(本例中为elasticsearch)。

$ sudo mkdir -p /var/elasticsearch/snapshot
$ sudo chown -R elasticsearch:elasticsearch /var/elasticsearch

存储库设置

如果将共享文件系统用作存储库,则需要在主节点和数据节点上都指定相同的位置。该位置通过elasticsearch.yml文件中的path.repo参数进行指定。

path.repo: ["/var/elasticsearch/snapshot"]

注册代码库

我要在Elasticsearch中注册存储库。

$ curl -XPUT 'http://localhost:9200/_snapshot/snapshot1' -d '{
    "type": "fs",
    "settings": {
        "location": "/var/elasticsearch/snapshot/snapshot1",
        "compress": true
    }
}'

指定了位置参数作为快照仓库(此次指定为子目录snapshot1)。
如果compress为true,则快照将被压缩保存。

创建快照

Elasticsearch可以在集群层级或索引层级创建当时的快照。

制作

本次将指定索引index-2016.04.08创建快照snapshot-2016.04.08。
在创建快照期间,不会阻塞搜索或索引添加操作。

$ curl -XPUT 'http://localhost:9200/_snapshot/snapshot1/snapshot-2016.04.08?wait_for_completion=true' -d '{
    "indices": "index-2016.04.08",
    "ignore_unavailable": true,
    "include_global_state": false
}'

可以通过将wait_for_completion设置为true来等待快照的创建完成。
选项如下:

オプション説明indicesスナップショットを作成するインデックスignore_unavailable無効なインデックスを無視するかどうか
確認していないが恐らくcloseされているインデックス等は無視されるのかとinclude_global_stateクラスタのGlobal Stateをスナップショットに含めるかどうか

确认

我将检查Elasticsearch中的快照。

$ curl -XGET 'http://localhost:9200/_snapshot/snapshot1/snapshot-2016.04.08'

可以看出已经被制作完成。

{
  "snapshots": [
    {
      "snapshot": "snapshot-2016.04.08",
      "version_id": 2030099,
      "version": "2.3.0",
      "indices": [
        "index-2016.04.08"
      ],
      "state": "SUCCESS",
      "start_time": "2016-04-08T10:10:26.452Z",
      "start_time_in_millis": 1460110226452,
      "end_time": "2016-04-08T10:10:27.130Z",
      "end_time_in_millis": 1460110227130,
      "duration_in_millis": 678,
      "failures": [],
      "shards": {
        "total": 5,
        "failed": 0,
        "successful": 5
      }
    }
  ]
}

我也会检查物理存储库。确实创建了快照。

$ ls -ltr /var/elasticsearch/snapshot/snapshot1/
合計 16
drwxr-xr-x 3 elasticsearch elasticsearch 4096  4月  8 17:40 indices
-rw-r--r-- 1 elasticsearch elasticsearch  103  4月  8 19:10 meta-snapshot-2016.04.08.dat
-rw-r--r-- 1 elasticsearch elasticsearch  195  4月  8 19:10 snap-snapshot-2016.04.08.dat
-rw-r--r-- 1 elasticsearch elasticsearch   37  4月  8 19:10 index

恢复

指定索引进行恢复列表。

$ curl -XPOST 'http://localhost:9200/_snapshot/snapshot1/snapshot-2016.04.08/_restore' -d '{
    "indices": "index-2016.04.08",
    "ignore_unavailable": "true",
    "include_global_state": false
}'
广告
将在 10 秒后关闭
bannerAds