集群备份

最近更新时间:2020-05-15 16:32:46

本节介绍如何将 KES 集群中的数据备份到金山云对象存储(KS3)中,以及如何从备份中恢复数据。您可通过控制台的集群备份功能每天定时自动备份,也可通过脚本手动备份。

备份和恢复是通过ES的快照(snapshot)体系实现的。

系统自动备份

如果启用系统自动备份功能,则系统会每天定时对ES执行一次快照。

集群备份

启用方法:

  1. 请确保您已开启KS3存储功能,并为备份建立了存储空间(bucket)。
  2. 在集群列表页面点击管理->数据备份,进入备份管理页面。
  3. 开启“自动备份”开关,填写每日备份时间和目标bucket
  4. 点击提交按钮。

注意:本操作会在ES中自动注册一个名为SystemAutoBackup的快照仓库。首次为全量备份,后面每天增量备份。

从系统自动备份中恢复快照

系统自动备份中恢复快照与从用户自行备份中恢复快照的操作基本相同。 区别在于,系统自动备份的快照库名称为SystemAutoBackup。 所以,您可以先查看系统自动备份的快照列表,然后根据快照名称中的日期信息,选择某一天的快照进行恢复。

查看系统自动备份的快照列表:

GET /_snapshot/SystemAutoBackup/_all

从返回的快照列表中,选择snap_20191202_000543这个时间为2019-12-02T0:05:43的快照,并从中恢复两个索引:

POST /_snapshot/SystemAutoBackup/snap_20191202_150405/_restore
{
  "indices": "my_index_1,my_index_2",
  "include_global_state": false,
  "rename_pattern": "(.+)",
  "rename_replacement": "restored_$1"   // 这里指定新的索引名为restored_my_index_1和restored_my_index_2
}

手动备份

如果您觉得自动备份不够灵活的话,可以自行设置和执行备份。手动备份自动备份是相互独立的。

在设置备份之前,请确保您已开启KS3存储功能,并为备份建立了存储空间(bucket)。

以下所有操作都是通过向ES发送HTTP请求来完成的。

创建快照仓库

创建一个名为my_repo的快照仓库:

PUT /_snapshot/my_repo
{
  "type": "s3",
  "settings": {
    "bucket": "my_bucket_name",
    "base_path": "my_path",
    "region": "xxxxx",
    "endpoint": "xxxxx.ksyun.com",
    "access_key": "xxxxxx",
    "secret_key": "xxxxxx"
  }
}

其中:

  • bucket: 您在KS3中创建的bucket名称
  • base_path: 备份数据在bucket中的保存路径
  • region: 您的KES部署区域,请使用KS3访问域名中的Region英文名称
  • endpoint: 您的KES部署区域对应的KS3域名,请使用KS3访问域名中的内网域名
  • access_key: 您的金山云access_key
  • secret_key: 您的金山云secret_key

查看快照仓库

查看仓库列表:

GET /_snapshot

查看某个仓库:

GET /_snapshot/my_repo

删除快照仓库

DELETE /_snapshot/my_repo

该操作不会删除KS3上的数据。

执行快照

执行快照会触发ES执行一次数据备份。

对所有索引执行快照,并将快照命名为my_snap1

PUT /_snapshot/my_repo/my_snap1

对部分索引执行快照,并将快照命名为my_snap2

PUT /_snapshot/my_repo/my_snap2
{
  "indices": "my_index_1,my_index_2"
}

快照管理和恢复

查看快照

查看快照列表:

GET /_snapshot/my_repo/_all

查看某个快照:

GET /_snapshot/my_repo/my_snap1

查看执行中的快照

查看正在执行的快照:

GET /_snapshot/my_repo/_current

查看正在执行快照的详细进度,包括分片备份进度等:

GET /_snapshot/_status
GET /_snapshot/my_repo/_status
GET /_snapshot/my_repo/my_snap1/_status
GET /_snapshot/my_repo/my_snap1,my_snap2/_status

删除快照

删除已完成或正在进行的快照,该操作会删除KS3上的相关数据:

DELETE /_snapshot/my_repo/my_snap1

从快照中恢复

从快照恢复时,ES会把KS3上的数据导入回来,并建立新的索引。如果ES中已经存在同名索引,恢复会失败。

恢复快照my_snap1中的全部数据:

POST /_snapshot/my_repo/my_snap1/_restore

如果不想恢复全部数据,只想恢复指定的索引,并使用新的索引名:

POST /_snapshot/my_repo/my_snap1/_restore
{
  "indices": "my_index_1",
  "include_global_state": false,
  "rename_pattern": "(.+)",
  "rename_replacement": "restored_$1"   // 这里指定新的索引名为restored_my_index_1
}

查看恢复状态

在恢复过程中,查看索引恢复的状态和百分比:

GET /restored_my_index_1/_recovery

取消恢复

删除目标索引即可取消正在进行的恢复:

DELETE /restored_my_index_1

金山云,开启您的云计算之旅

免费注册