Elasticsearch备份与恢复 #
一、快照概述 #
1.1 快照特点 #
text
快照特点
├── 增量备份
│ └── 只备份变更数据
├── 一致性
│ └── 保证数据一致性
├── 可恢复
│ └── 恢复到任意快照点
└── 跨集群
└── 支持跨集群复制
1.2 快照流程 #
text
快照流程
├── 1. 注册仓库
├── 2. 创建快照
├── 3. 验证快照
├── 4. 恢复快照
└── 5. 验证恢复
二、注册仓库 #
2.1 共享文件系统仓库 #
bash
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/mount/backups/my_backup",
"compress": true
}
}
2.2 S3仓库 #
bash
PUT /_snapshot/s3_backup
{
"type": "s3",
"settings": {
"bucket": "my-elasticsearch-backups",
"region": "us-east-1",
"base_path": "snapshots",
"compress": true
}
}
2.3 Azure仓库 #
bash
PUT /_snapshot/azure_backup
{
"type": "azure",
"settings": {
"container": "backup-container",
"base_path": "snapshots"
}
}
2.4 GCS仓库 #
bash
PUT /_snapshot/gcs_backup
{
"type": "gcs",
"settings": {
"bucket": "my-elasticsearch-backups",
"base_path": "snapshots"
}
}
2.5 查看仓库 #
bash
GET /_snapshot
GET /_snapshot/my_backup
2.6 验证仓库 #
bash
POST /_snapshot/my_backup/_verify
2.7 删除仓库 #
bash
DELETE /_snapshot/my_backup
三、创建快照 #
3.1 创建所有索引快照 #
bash
PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true
3.2 创建指定索引快照 #
bash
PUT /_snapshot/my_backup/snapshot_2
{
"indices": "products,orders",
"ignore_unavailable": true,
"include_global_state": false
}
3.3 快照参数 #
| 参数 | 说明 |
|---|---|
| indices | 索引列表 |
| ignore_unavailable | 忽略不存在的索引 |
| include_global_state | 包含集群状态 |
| partial | 允许部分快照 |
| wait_for_completion | 等待完成 |
3.4 查看快照 #
bash
GET /_snapshot/my_backup/snapshot_1
GET /_snapshot/my_backup/_all
3.5 查看快照状态 #
bash
GET /_snapshot/my_backup/snapshot_1/_status
GET /_snapshot/my_backup/_status
3.6 取消快照 #
bash
DELETE /_snapshot/my_backup/snapshot_1
四、恢复快照 #
4.1 恢复所有索引 #
bash
POST /_snapshot/my_backup/snapshot_1/_restore
4.2 恢复指定索引 #
bash
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "products",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "(.+)",
"rename_replacement": "restored_$1"
}
4.3 恢复参数 #
| 参数 | 说明 |
|---|---|
| indices | 索引列表 |
| ignore_unavailable | 忽略不存在的索引 |
| include_global_state | 包含集群状态 |
| rename_pattern | 重命名模式 |
| rename_replacement | 重命名替换 |
| include_aliases | 包含别名 |
4.4 查看恢复状态 #
bash
GET /_recovery
GET /products/_recovery
4.5 取消恢复 #
bash
DELETE /restored_products
五、快照生命周期管理 #
5.1 使用ILM管理快照 #
bash
PUT /_ilm/policy/snapshot_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "50gb",
"max_age": "1d"
}
}
},
"delete": {
"min_age": "30d",
"actions": {
"delete": {}
}
}
}
}
}
5.2 使用Slm(Snapshot Lifecycle Management) #
bash
PUT /_slm/policy/nightly-snapshots
{
"schedule": "0 30 1 * * ?",
"name": "<nightly-snap-{now/d}>",
"repository": "my_backup",
"config": {
"indices": ["*"],
"ignore_unavailable": true,
"include_global_state": false
},
"retention": {
"expire_after": "30d",
"min_count": 5,
"max_count": 50
}
}
5.3 执行SLM策略 #
bash
POST /_slm/policy/nightly-snapshots/_execute
5.4 查看SLM状态 #
bash
GET /_slm/policy
GET /_slm/status
六、跨集群复制 #
6.1 配置远程集群 #
bash
PUT /_cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"remote_cluster": {
"seeds": ["remote_host:9300"]
}
}
}
}
}
6.2 创建复制 #
bash
PUT /_ccr/auto_follow/my_pattern
{
"remote_cluster": "remote_cluster",
"leader_index_patterns": ["products*"],
"follow_index_pattern": "{{leader_index}}_follower"
}
6.3 查看复制状态 #
bash
GET /_ccr/stats
GET /_ccr/info
6.4 暂停/恢复复制 #
bash
POST /products_follower/_ccr/pause_follow
POST /products_follower/_ccr/resume_follow
七、备份策略 #
7.1 备份频率 #
text
备份频率建议
├── 全量备份
│ └── 每周一次
├── 增量备份
│ └── 每天一次
├── 关键数据
│ └── 每小时一次
└── 配置备份
└── 每次变更后
7.2 保留策略 #
text
保留策略
├── 每日快照
│ └── 保留7天
├── 每周快照
│ └── 保留4周
├── 每月快照
│ └── 保留12月
└── 年度快照
└── 保留3年
7.3 存储位置 #
text
存储建议
├── 本地存储
│ └── 快速恢复
├── 云存储
│ └── 异地容灾
└── 多副本
└── 多地存储
八、恢复测试 #
8.1 定期测试 #
text
恢复测试
├── 每月测试
│ └── 验证快照可用性
├── 恢复演练
│ └── 模拟故障恢复
└── 文档记录
└── 记录恢复步骤
8.2 恢复验证 #
bash
GET /restored_products/_count
GET /restored_products/_search
{
"query": { "match_all": {} }
}
九、最佳实践 #
9.1 备份建议 #
text
备份建议
├── 自动化
│ └── 使用SLM自动备份
├── 多地存储
│ └── 异地容灾
├── 定期测试
│ └── 验证可恢复性
└── 监控告警
└── 备份失败告警
9.2 恢复建议 #
text
恢复建议
├── 先验证快照
│ └── 检查快照完整性
├── 使用重命名
│ └── 避免覆盖现有数据
├── 分批恢复
│ └── 大索引分批处理
└── 验证数据
└── 恢复后验证数据
十、总结 #
本章介绍了Elasticsearch备份与恢复:
- 快照是增量备份,节省空间
- 支持多种存储后端
- SLM自动化快照管理
- 跨集群复制实现数据同步
- 定期测试验证可恢复性
- 多地存储实现容灾
下一步,我们将学习性能优化。
最后更新:2026-03-27