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をスナップショットに含めるかどうか
確認していないが恐らく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
}'