• 沒有找到結果。

10.1 存算分离

10.1.2 冻结索引

注意事项

● 在执行冷冻操作前,需冷冻的索引没有数据写入。在冷冻操作执行前,会将索引 配置为read only,会导致写入数据出错。

● 在执行冷冻操作后:

– 索引变为只读。

– 索引数据将会转储到OBS,转移过程中,会占用网络带宽。

– 转储后的索引,查询时延会增加。聚合时,由于查询复杂,数据读取多,时 延变长会体现的更明显。

– 已冷冻的索引不支持解冻,即不能回退可写的索引。

– 冻结完成以后,会删除本地磁盘中的索引数据。

操作步骤

1. 在云搜索服务的“集群管理”页面上,单击集群“操作”列的“Kibana”访问集 群,详细请参考登录Kibana。

2. 在Kibana的左侧导航中选择“Dev Tools”,单击“Get to work”,进入Console 界面。

3. 执行如下命令,将指定索引冻结到OBS中。

POST ${index_name}/_freeze_low_cost

10-1 请求参数说明

参数名 说明

index_name 需要冻结的索引的名字。

返回结果如下:

{ "freeze_uuid": "pdsRgUtSTymVDWR_HoTGFw"

}

10-2 返回参数说明

参数名 说明

freeze_uuid 提交冻结请求后会启动一个异步任务,请求返回异步 任务的ID,使用该ID查询异步任务的进度。

说明

索引冻结请求下发后,会禁止索引的数据写入,冻结过程中,查询请求不受影响。在冻结 结束后,会将索引先close再open,在这段时间内,索引不可查询,集群可能短暂出现red 状态,open结束后恢复。

4. 执行如下命令获取冻结任务进度。

GET _freeze_low_cost_progress/${freeze_uuid}

10-3 请求参数说明

参数名 说明

freeze_uuid 异步任务的ID,该ID由3获取的。

返回结果如下:

{

"stage" : "STARTED", "shards_stats" : { "INIT" : 0, "FAILURE" : 0, "DONE" : 0, "STARTED" : 3, "ABORTED" : 0 }, "indices" : { "data1" : [ {

"uuid" : "7OS-G1-tRke2jHZPlckexg", "index" : {

"name" : "data1",

"index_id" : "4b5PHXJITLaS6AurImfQ9A", "shard" : 2

},

"start_ms" : 1611972010852,

"end_ms" : -1,

"percent" : "4.0%"

},

"rate_limit" : { "paused_times" : 3,

"paused_nanos" : 6057933087 }

} ] }}

10-4 返回参数说明

参数名 说明

stage 当前所处状态。取值包括:

● INIT:刚启动或者正在初始化。

● FAILURE:失败。

● DONE:完成。

● STARTED:已启动。

● ABORTED:取消,预留字段。

shards_stats 处在各个状态的shard个数。

indices 每个索引的状态详情。

10-5 indices 返回值说明

参数名 说明

uuid freeze的uuid。

index 索引信息和shard信息。

start_ms 开始时间。

end_ms 结束时间,如果没有结束则显示为-1。

total_time 已花费时间。

total_time_in_millis 已花费时间毫秒数。

stage 当前shard所处的状态。

failure 失败原因,如果没有失败则显示为null。

size.total_bytes 总共需要冻结的文件的字节数。

size.finished_bytes 已经完成冻结的字节数。

size.percent 已经完成冻结的字节数百分比。

file.total_bytes 总共需要冻结的文件个数。

file.finished_bytes 已经完成冻结的文件个数。

参数名 说明

file.percent 已经完成冻结的文件个数百分比。

rate_limit.paused_ti

mes 达到限速导致冻结暂停的次数。

rate_limit.paused_n

anos 达到限速导致冻结暂停的时间纳秒数。

冻结完成的索引会增加以下settings,可参考表10-6。

10-6 冻结索引 settings

参数 说明

index.frozen_low_cost 标识该索引为冻结索引。取值为true。

index.blocks.write 冻结后的索引禁止写入。取值为true。

index.store.type 标识该索引的存储类型为obs。取值为obs。

5. 索引冻结后,会将数据进行缓存。执行如下命令获取当前缓存状态。关于缓存详 见配置缓存示例。

GET _frozen_stats

GET _frozen_stats/${node_id}

10-7 请求参数说明

参数名 说明

node_id 获取单个节点的缓存状态,此参数为需要获取的节点 id。

返回结果如下:

{ "_nodes" : { "total" : 3, "successful" : 3, "failed" : 0

}, "cluster_name" : "css-zzz1", "nodes" : {

"7uwKO38RRoaON37YsXhCYw" : { "name" : "css-zzz1-ess-esn-2-1", "transport_address" : "10.0.0.247:9300", "host" : "10.0.0.247",

"ip" : "10.0.0.247", "block_cache" : { "default" : { "type" : "memory",

"block_cache_capacity" : 8192, "block_cache_blocksize" : 8192, "block_cache_size" : 12, "block_cache_hit" : 14,

"block_cache_miss" : 0,

"73EDpEqoQES749umJqxOzQ" : { "name" : "css-zzz1-ess-esn-3-1", "transport_address" : "10.0.0.201:9300", "host" : "10.0.0.201",

"get_obj" : {

"EF8WoLCUQbqJl1Pkqo9-OA" : { "name" : "css-zzz1-ess-esn-1-1", "transport_address" : "10.0.0.18:9300", "host" : "10.0.0.18",

"reader_cache" : { "hit_count" : 0, "miss_count" : 1, "load_success_count" : 1, "load_exception_count" : 0, "total_load_time" : 235706838, "eviction_count" : 0

} } }}

6. 执行如下命令重置缓存状态。

POST _frozen_stats/reset

返回结果如下:

{ "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0

}, "cluster_name" : "Es-0325-007_01", "nodes" : {

"mqTdk2YRSPyOSXfesREFSg" : { "result" : "ok"

} }}

说明

此命令用于性能问题的调试,如重置缓存状态后再次执行查询,可以清晰看到本次查询的 缓存命令情况。在业务运行阶段不需要执行此命令。

7. 执行如下命令获取当前已经冻结的所有索引。

GET _cat/freeze_indices

返回结果如下:

green open data2 0bNtxWDtRbOSkS4JYaUgMQ 3 0 5 0 7.9kb 7.9kb green open data3 oYMLvw31QnyasqUNuyP6RA 3 0 51 0 23.5kb 23.5kb

说明

此命令的参数和返回值与开源ES的_cat/indices一致。