Snapshot vs Restore

74 阅读2分钟

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

注意事项

  1. Force Merge 影响:主动调用 force merge API 会使增量备份失效
  2. 备份时机:建议在业务低峰期执行备份
  3. 资源占用:备份过程对 CPU、磁盘、网络资源占用较少

四、数据恢复

恢复操作

POST /_snapshot/my_backup/snapshot_1/_restore?wait_for_completion=true
{
  "indices": "index_1",
  "rename_replacement": "restored_index_1"
}

恢复特点

  • 基于文件的恢复,效率高
  • 支持跨集群恢复
  • 可以选择性恢复指定索引
  • 支持重命名恢复的索引

最佳实践总结

  1. 配置规划:合理规划备份存储路径和类型
  2. 定期备份:建立定期备份机制
  3. 增量策略:利用增量备份节省存储空间
  4. 恢复演练:定期进行恢复测试验证备份有效性
  5. 监控告警:监控备份任务执行状态