配置OpenSearch集群索引回收站
OpenSearch集群在执行删除索引操作时,默认会直接删除索引数据,缺乏数据恢复机制。为防止误操作导致数据丢失,CSS服务提供索引回收站功能,支持将删除的索引暂存至回收站,并提供还原和彻底删除操作,提升数据可靠性与操作安全性。
功能介绍
索引回收站功能用于防止误删索引导致的数据丢失。如图1所示,开启索引回收站功能后:
- 当执行删除索引操作时,目标索引将被关闭(Close),此过程可能导致集群状态短暂变为Red(表示存在未分配的分片,但不影响服务可用性),关闭后的索引将被移至索引回收站中。
- 当索引回收站中的索引达到预设的保留时长后,集群将自动删除该索引及其数据,此时删除的数据将不可恢复。或者,用户可以直接对索引回收站中的索引执行删除操作,即可立即永久删除该索引及其数据。
- 当需要恢复误删的索引数据时,可执行还原索引操作,此操作将打开目标索引(Open)并初始化分片,此过程同样可能导致集群状态短暂变为Red。
约束限制
- OpenSearch集群仅2.19.0版本支持索引回收站功能。
- 回收站内的索引仍属于集群元数据,因此集群无法新建与回收站内索引同名的索引。
登录OpenSearch Dashboards
登录OpenSearch Dashboards进入命令执行页面。OpenSearch集群支持多种客户端访问,本文仅以CSS服务集成的OpenSearch Dashboards为例介绍配置指导。
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > OpenSearch”。
- 在集群列表,选择目标集群,单击操作列的“Dashboards”,登录OpenSearch Dashboards。
- 在OpenSearch Dashboards左侧导航栏选择“Dev Tools”,进入操作页面。
控制台左侧是命令输入框,其右侧的三角形图标为执行按钮,右侧区域则显示执行结果。
开启索引回收站
- 执行如下命令,启用索引回收站功能,以防止误删除索引导致的数据丢失。
PUT _cluster/settings { "persistent": { "index.trash.enabled": true } }表1 开启索引回收站的参数说明 参数
类型
默认值
说明
index.trash.enabled
Boolean
false
索引回收站开关,控制是否启用索引回收站功能。启用后,删除索引操作会将索引移动至回收站,需再次删除才能彻底清除数据。
取值范围:
- true:开启索引回收站功能。
- false:关闭索引回收站功能。
indices.trash.keep.time
String
1d
索引在回收站中的保留时长。系统会通过定时清理任务删除超过保留时长的索引。
取值格式:数字+单位
- 数字:自然数
- 单位:nanos(纳秒)、micros(微秒)、ms(毫秒)、s(秒)、m(分钟)、h(小时)、d(天)
最小值:1d
indices.trash.clean.interval
String
5m
回收站清理周期。系统会按照预设周期执行清理任务,自动删除超过保留时长的索引。
取值格式:数字+单位
- 数字:自然数
- 单位:nanos(纳秒)、micros(微秒)、ms(毫秒)、s(秒)、m(分钟)、h(小时)、d(天)
最小值:5m
- 如需立即清除索引回收站中的指定索引,则需执行如下命令,否则索引会在达到回收站中的保留时长后才被自动删除。
DELETE {index_name}表2 参数说明 参数
类型
默认值
说明
index_name
String
无
指定索引名称。
- 单个索引:直接输入索引名称(如“my_index”)。
- 多个索引:用英文逗号分隔多个索引(如“my_index1,my_index2”)。
- 通配符:支持通配符 *(匹配任意字符),如“myindex*”表示匹配所有以myindex开头的索引。
查看回收站中的索引
执行如下命令,查看索引回收站中的索引,以确认索引是否已被放入回收站及其状态。
GET _cat/trash?v=true&s=index
|
参数 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
v |
Boolean |
false |
用于控制返回值中表格是否显示表头。 取值范围:
|
|
s |
String |
无 |
用于指定索引的排序字段。 取值范围:
|
|
format |
String |
无(表格形式) |
用于设置返回值的呈现格式。 取值范围:json(文本格式)、yaml(文本格式)、cbor(二进制格式)、smile(二进制格式) 如果参数值为以上4种之外的值,则以表格形式展示。 |
|
h |
String |
无(全部显示) |
用于设置返回值中表格需要显示的列名。 当只需要显示部分列名时,可以通过逗号隔开列名,如“h=index,uuid,delete.time”。 |
返回值如下所示,此处是示例,仅供参考,请以实际返回值为准。
index uuid pri rep trash.ts delete.time index1 CMD3FCLzTOyTg4RUekWNNA 1 1 1714465116615 23.6h index1 6ATijuu6SfqamVI-WMyOKg 1 1 1714466233898 23.9h
当delete.time变成0时,该索引将被彻底删除。
从回收站中还原索引
- 执行如下命令,从回收站中还原索引,以恢复误删除的索引数据。
POST /trash/recover/{index_name} - 执行如下命令,查询索引列表确认索引是否已成功还原。
GET _cat/indices?v=true
清空回收站
清空回收站前,请确认已备份重要数据,防止误删数据不可恢复。
- 执行如下命令,彻底删除回收站中的索引数据,确保数据清理。
POST trash/empty
- 执行如下命令,查看索引回收站中的索引,确认索引回收站中的索引已清空。
GET _cat/trash?v=true&s=index
