Elasticsearch 本地快照操作流程
-
配置快照存储路径
在elasticsearch.yml
文件中配置以下字段以指定数据、日志和快照存储路径:yamlpath: data: /data/data # 数据存储路径 logs: /data/log # 日志存储路径 repo: /data/snapshot # 快照存储路径
确保路径
/data/snapshot
存在并且 Elasticsearch 具有写入权限。
-
创建快照存储库
创建一个名为
my_backup
的快照存储库,指定存储路径为/data/snapshot
,并启用数据压缩。执行以下命令:bashcurl -k -u "$ES_USER:$ES_PASSWORD" -X PUT "https://$ES_IP:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d '{ "type": "fs", # 设置存储类型为文件系统(fs) "settings": { "location": "/data/snapshot", # 快照存储路径 "compress": true # 启用压缩,节省存储空间 } }'
说明:
type
: 存储类型,fs
表示文件系统。location
: 快照存储路径,确保路径存在并具有写入权限。compress
: 启用压缩,以减少存储空间占用。
-
创建快照
使用
my_backup
存储库备份所有索引并等待备份完成。执行以下命令:bashcurl -k -u "$ES_USER:$ES_PASSWORD" -X PUT "https://$ES_IP:9200/_snapshot/my_backup/snapshot_all?wait_for_completion=true" -H 'Content-Type: application/json' -d '{ "indices": "*", # 备份所有索引 "ignore_unavailable": true, # 忽略不可用的索引 "include_global_state": true # 包含全局状态(例如索引模板、集群设置等) }'
说明:
indices
: 要备份的索引,*
表示备份所有索引。ignore_unavailable
: 忽略不可用的索引。include_global_state
: 包括集群的全局状态,如索引模板、设置等。
-
检查快照状态
检查已创建快照的状态,确认备份是否成功。执行以下命令:
bashcurl -k -u "$ES_USER:$ES_PASSWORD" -X GET "https://$ES_IP:9200/_snapshot/my_backup/snapshot_all/_status?pretty"
说明:
snapshot_all/_status
: 查询snapshot_all
快照的状态,查看备份是否完成。
-
恢复快照
从创建的快照恢复所有索引以及全局状态。执行以下命令:
bashcurl -k -u "$ES_USER:$ES_PASSWORD" -X POST "https://$ES_IP:9200/_snapshot/my_backup/snapshot_all/_restore" -H 'Content-Type: application/json' -d '{ "indices": "*", # 恢复所有索引 "ignore_unavailable": true, # 忽略不可用的索引 "include_global_state": true # 恢复全局状态 }'
说明:
indices
: 要恢复的索引,*
表示恢复所有索引。ignore_unavailable
: 忽略不可用的索引。include_global_state
: 恢复集群的全局状态,包括索引模板和其他设置。
在恢复快照时可能会包权限不足的问题,可能是因为 searchguard 这个索引的原因,如果遇到这个问题可以考虑一个一个索引的恢复
总结
- 创建快照存储库:指定快照存储路径并启用数据压缩。
- 创建快照:备份所有索引并确保备份完成。
- 检查快照状态:检查快照是否已成功创建。
- 恢复快照:恢复所有索引及集群全局状态。