ES 备份与恢复
一、备份存储配置
支持的存储类型
- 共享文件系统
- AWS S3 存储
- HDFS
- 微软 Azure 存储
- Google Cloud 存储
- 自定义存储(如阿里云)
配置备份路径
在 elasticsearch.yml 配置文件中设置备份路径:
path.repo: ["/mount/backups", "/mount/longterm_backups"]
创建 Repository
使用 Snapshot API 创建存储库:
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/mount/backups/my_backup"
}
}
二、执行备份操作
创建快照
PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true
参数说明:
wait_for_completion=true:同步执行,等待完成后返回结果- 生产环境建议异步执行(不设置此参数)
备份结果示例
{
"snapshots": [
{
"snapshot": "snapshot_1",
"uuid": "52Lr4aFuQYGjMEv5ZFeFEg",
"version_id": 6030099,
"version": "6.3.0",
"indices": [
".monitoring-kibana-6-2018.05.30",
".monitoring-es-6-2018.05.28",
"metricbeat-6.2.4-2018.05.28"
],
"include_global_state": true,
"state": "SUCCESS",
"start_time": "2018-05-31T12:45:57.492Z",
"end_time": "2018-05-31T12:46:15.214Z",
"duration_in_millis": 17722,
"failures": [],
"shards": {
"total": 28,
"failed": 0,
"successful": 28
}
}
]
}
查看快照状态
GET _snapshot/my_backup/snapshot_1
三、备份策略与时机
增量备份
- 在同一 repository 中创建多个快照实现增量备份
- Elasticsearch 自动检查 segment 文件变化
- 只备份发生变化的文件
PUT /_snapshot/my_backup/snapshot_2?wait_for_completion=true
注意事项
- Force Merge 影响:主动调用 force merge API 会使增量备份失效
- 备份时机:建议在业务低峰期执行备份
- 资源占用:备份过程对 CPU、磁盘、网络资源占用较少
四、数据恢复
恢复操作
POST /_snapshot/my_backup/snapshot_1/_restore?wait_for_completion=true
{
"indices": "index_1",
"rename_replacement": "restored_index_1"
}
恢复特点
- 基于文件的恢复,效率高
- 支持跨集群恢复
- 可以选择性恢复指定索引
- 支持重命名恢复的索引
最佳实践总结
- 配置规划:合理规划备份存储路径和类型
- 定期备份:建立定期备份机制
- 增量策略:利用增量备份节省存储空间
- 恢复演练:定期进行恢复测试验证备份有效性
- 监控告警:监控备份任务执行状态