ElasticSearch 设置备份文件地址
- 在elasticsearch.yml 新增
path.repo: ["/home/es/snapshot"]
注册快照存储库
保存成功PUT _snapshot/ecopherebbs { "type": "fs", "settings": { "location": "/home/es/snapshot" } }
查看快照存储库保存结果
GET _snapshot
返回结果
{
"ecopherebbs" : {
"type" : "fs",
"settings" : {
"location" : "/home/es/snapshot"
}
}
}
创建快照
异步创建
- 创建
PUT _snapshot/ecopherebbs/snapshot_20210631 { "ignore_unavailable": true, "include_global_state": true }
- 查看状态
GET _snapshot/ecopherebbs/snapshot_20210631
处理中
{
"snapshots" : [
{
"snapshot" : "snapshot_20210631",
"uuid" : "PTBkWV-pQ8CQ7l4RNxISfA",
"version_id" : 7090399,
"version" : "7.9.3",
"indices" : [
"t_e_s_t___2_0_2_1_0_4_2_1_0_9_2_9_index",
"test0627",
"test110",
".kibana-event-log-7.9.3-000001",
"fang_fa_index",
"filebeat-7.9.3-2021.06.29-000001",
"gateway_requests",
"my_index",
"ilm-history-2-000003",
".kibana-event-log-7.9.3-000002",
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : true,
"state" : "IN_PROGRESS",
"start_time" : "2021-06-30T05:26:10.530Z",
"start_time_in_millis" : 1625030770530,
"end_time" : "1970-01-01T00:00:00.000Z",
"end_time_in_millis" : 0,
"duration_in_millis" : 0,
"failures" : [ ],
"shards" : {
"total" : 0,
"failed" : 0,
"successful" : 0
}
}
]
}
处理完成
{
"snapshots" : [
{
"snapshot" : "snapshot_20210631",
"uuid" : "PTBkWV-pQ8CQ7l4RNxISfA",
"version_id" : 7090399,
"version" : "7.9.3",
"indices" : [
"t_e_s_t___2_0_2_1_0_4_2_1_0_9_2_9_index",
"test0627",
"test110",
".kibana-event-log-7.9.3-000001",
"fang_fa_index",
"filebeat-7.9.3-2021.06.29-000001",
"gateway_requests",
"my_index",
"ilm-history-2-000003",
".kibana-event-log-7.9.3-000002",
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : true,
"state" : "SUCCESS",
"start_time" : "2021-06-30T05:26:10.530Z",
"start_time_in_millis" : 1625030770530,
"end_time" : "2021-06-30T05:26:16.937Z",
"end_time_in_millis" : 1625030776937,
"duration_in_millis" : 6407,
"failures" : [ ],
"shards" : {
"total" : 200,
"failed" : 0,
"successful" : 200
}
}
]
}
指定索引进行快照
PUT _snapshot/ecopherebbs/snapshot_20210630?wait_for_completion=true
{
"indices": "index1,index2",
"ignore_unavailable": true,
"include_global_state": true
}
- wait_for_completion=true时会一直阻塞直到快照完成,kibana执行时超时为30秒,超时后快照依然会在后台执行
- snapshot_20200729 就是指定的备份快照命中
- 请求体重indices指定需要备份的索引(多个用逗号隔开),也可以不指定,这样会备份所有的es索引库数据
在服务器查看备份的数据
每次执行快照都会生成一个 meta和一个snap文件
[es@test12 snapshot]$ ls -lrt
总用量 1404
drwxrwxr-x. 62 es es 4096 6月 30 13:23 indices
-rw-rw-r--. 1 es es 460329 6月 30 13:24 meta--WCM58RpQNm5bEywCjO_cg.dat
-rw-rw-r--. 1 es es 1596 6月 30 13:24 snap--WCM58RpQNm5bEywCjO_cg.dat
-rw-rw-r--. 1 es es 1596 6月 30 13:26 snap-PTBkWV-pQ8CQ7l4RNxISfA.dat
-rw-rw-r--. 1 es es 460329 6月 30 13:26 meta-PTBkWV-pQ8CQ7l4RNxISfA.dat
-rw-rw-r--. 1 es es 302 6月 30 13:52 snap-N3zRMDnDTEqoiShEwjKosA.dat
-rw-rw-r--. 1 es es 460329 6月 30 13:52 meta-N3zRMDnDTEqoiShEwjKosA.dat
-rw-rw-r--. 1 es es 24990 6月 30 13:52 index-2
-rw-rw-r--. 1 es es 8 6月 30 13:52 index.latest
恢复数据
本机恢复
POST _snapshot/ecopherebbs/snapshot_20210631_02/_restore
执行恢复要将之前的索引删除,否则会报错
- 或者在恢复时执行新索引名称 官网描述
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1",
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}
其他服务器恢复
- 配置第一步设置的目录 path.repo: ["/home/es/snapshot"]
- 创建仓库
PUT _snapshot/ecopherebbs { "type": "fs", "settings": { "location": "/home/es/snapshot-test" } }
- 执行恢复索引
POST _snapshot/ecopherebbs/snapshot_20210631_02/_restore
常见问题
报错 doesn't match any of the locations specified by path.repo because this setting is empty
{ "error" : { "root_cause" : [ { "type" : "repository_exception", "reason" : "[ecopherebbs] location [/home/es/snapshot] doesn't match any of the locations specified by path.repo because this setting is empty" } ], "type" : "repository_exception", "reason" : "[ecopherebbs] failed to create repository", "caused_by" : { "type" : "repository_exception", "reason" : "[ecopherebbs] location [/home/es/snapshot] doesn't match any of the locations specified by path.repo because this setting is empty" } }, "status" : 500 }
```
- 解决方法:
在为es集群环境做灾备和恢复时候,首先需要创建创建一个仓库,并往仓库中存放快照(每个快照中会区分不同的索引)。但是在创建仓库的时候,要求仓库的地址必须在每个集群环境中的elasticsearch.yml中进行配置