恢复OpenSearch集群数据
通过CSS服务的快照恢复功能,将已备份的OpenSearch集群数据(快照)还原到当前集群或其他符合条件的集群中。快照恢复的核心是将备份的索引数据、元信息及分片结构从OBS存储中重新构建到目标集群中,确保数据一致性。快照恢复适用于数据回滚、集群迁移、灾备恢复等场景。
约束限制
- 集群快照会导致CPU、磁盘IO上升等影响,建议在业务低峰期进行操作。
- 当源集群处于“不可用”状态时,支持恢复快照,将源集群已备份的快照恢复到目标集群。
- 备份与恢复过程中,支持访问OpenSearch Dashboards、查看监控、删除其他快照的操作。不支持形态变更、重启此集群、删除此集群、删除正在创建或恢复的快照、再次创建或恢复快照的操作。当此集群正在进行创建快照或者恢复快照过程中,同时的自动创建快照任务将被取消。
- 集群第一次快照是全量备份,后面是在之前的快照基础上增量备份,增量快照逻辑会导致快照之间的文件会相互依赖,需按顺序恢复。
- 在快照恢复过程中,目标集群正在恢复的索引数据不可查询。
- 当两个集群存在同名索引且shard结构不一致时,无法恢复该索引数据。
- 用于恢复的目标集群版本不得低于源集群版本,一般建议保持版本一致。此外,OpenSearch 1.3.6和2.19.0版本支持从Elasticsearch 7.x恢复快照。
前提条件
集群快照任务列表中有“快照状态”为“可用”的快照,且目标集群的“集群状态”也为“可用”。
恢复数据
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > OpenSearch”。
- 在集群列表,单击目标集群名称,进入集群详情页。
- 选择“集群快照”页签,进入集群快照页面。
- 在集群快照任务列表中,选择需要恢复的快照,单击操作列的“恢复”,在弹窗中完成恢复配置。
图1 恢复快照
表1 恢复配置 参数
说明
索引
指定需要进行恢复的索引名称。
- 支持0~1024个字符,不支持大写字母、空格以及字符“"\<|>/?”。
- 恢复以“.kibana”为前缀的索引时需要指定索引名称。
- “.opendistro_security”索引不允许恢复。
- 支持使用“*”匹配多个索引,比如“index*”,表示恢复快照中名称前缀是index的所有索引。使用“*”匹配索引时,默认会过滤掉“.opendistro_security”或以“.kibana”为前缀的系统索引。
- 支持恢复指定的索引,比如“index1,index2,index3”。
默认为空,即不指定索引名称,表示恢复所有的索引数据。
索引名称匹配模式
索引名称匹配规则。在恢复时,可以根据匹配模式定义的过滤条件去恢复符合条件的索引,过滤条件请使用正则表达式。
“索引名称匹配模式”和“索引名称替换模式”需要同时设置才会生效。使用示例请参见索引、索引名称匹配模式和索引名称替换模式的参数详解及示例。
支持0~1024个字符,不支持大写字母、空格以及字符“"\<|>/?,”。
例如“index_(.+)”表示所有index_开头的索引在恢复时会被重命名。
索引名称替换模式
索引重命名的规则。在恢复时,对满足索引名称匹配模式的索引按定义的规则进行重命名。
“索引名称匹配模式”和“索引名称替换模式”需要同时设置才会生效。使用示例请参见索引、索引名称匹配模式和索引名称替换模式的参数详解及示例。
支持0~1024个字符,不支持大写字母、空格以及字符“"\<|>/?,”。
例如“restored_index_$1”表示在所有恢复的满足匹配模式的索引名称前面加上“restored_”。
集群
选择需要进行恢复的集群名称,可选择当前集群或者其他集群。
- 只能选择处于“可用”状态的集群,如果快照所属的集群处于“不可用”状态,那么也无法将快照恢复到本集群。
- 恢复到其他集群时,目标集群的版本不能低于本集群的版本,而且目标集群必须和本集群在相同区域。当本集群存在冻结状态的索引快照时,在恢复数据后,该索引会被存储在节点本地,且默认只读,如果需要支持写入,需要执行如下命令配置索引。
PUT index_name/_settings { "index.blocks.write": null }
覆盖目标集群同名索引
选择是否覆盖目标集群同名索引。默认不覆盖,即不勾选。
快照恢复将覆盖目标集群数据,如果目标集群存在同名索引需勾选覆盖以恢复相同分片结构的索引,不同分片结构的索引不可恢复,请谨慎操作。
- 配置完成后,单击“确定”开始恢复。
恢复成功后,快照列表中“任务状态”将变更为“恢复成功”,索引数据将根据快照信息重新生成。
图2 恢复成功
验证恢复结果
快照恢复成功后,可以前往目标集群,查看恢复的索引信息,确认恢复情况。
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > OpenSearch”。
- 在集群列表,选择目标集群,单击操作列的“Dashboards”,登录OpenSearch Dashboards。
- 在OpenSearch Dashboards左侧导航栏选择“Dev Tools”,进入操作页面。
控制台左侧是命令输入框,其右侧的三角形图标为执行按钮,右侧区域则显示执行结果。
- 执行如下命令查看索引信息。
GET _cat/indices
索引、索引名称匹配模式和索引名称替换模式的参数详解及示例
当您对恢复配置中的“索引”、“索引名称匹配模式”和“索引名称替换模式”参数存在疑惑时,可以参考本文的解释和示例。
- 保持原索引名恢复
在恢复快照时,如果恢复后的索引名称需要和源快照索引的名称保持一致,则只需要配置“索引”,指定需要恢复的索引名称即可。
- 重命名索引恢复
在恢复快照时,如果需要重命名恢复后的索引名称,则需要同时配置“索引”“索引名称匹配模式”和“索引名称替换模式”。配置说明如下:
- “索引”:指定要恢复的源索引的名称或模式(支持通配符),且必须包含需要重命名的索引。该参数定义了快照恢复操作的索引范围,即您希望恢复哪些索引到目标集群。
- “索引名称匹配模式”:通过正则表达式,从上述“索引”参数指定的待恢复索引集合中,筛选出需要进行重命名的源索引。只有名称完全匹配该正则表达式的索引才会触发重命名操作。该参数定义了哪些索引在恢复后要重命名。
- “索引名称替换模式”:定义匹配成功的源索引在恢复后的新名称生成规则。该规则是一个字符串,使用捕获组引用(如$1)来复用“索引名称匹配模式”中捕获的部分。该参数定义了满足匹配模式的索引在重命名恢复后使用的索引名。
- “索引”配置为“index_*, old_index”,其中index_*匹配所有以index_开头的索引,old_index为单独指定的索引。
- “索引名称匹配模式”配置为“index_(.+)”,匹配以index_开头的索引,该部分索引在恢复时会进行重命名。
- “索引名称替换模式”配置为“restored_index_$1”,将匹配的索引名称替换为restored_index_加上捕获组内容。
POST /_snapshot/xxx/snapshot_xxx/_restore
{
"indices": "index_*, old_index",
"ignore_unavailable": true,
"include_global_state": true,
"rename_pattern": "index_(.+)", // 对应配置项:索引名称匹配模式
"rename_replacement": "restored_index_$1", // 对应配置项:索引名称替换模式
}
- 源索引index_logs恢复后会被重命名为restored_index_logs。
- 源索引index_users恢复后会被重命名为restored_index_users。
- 源索引old_index不符合索引匹配模式(rename_pattern),因此不会被重命名,恢复后保持原名old_index。