带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (下)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (下)

《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.15.Snapshot (中) https://developer.aliyun.com/article/1228107



监控进度

 

1. 监控 Snapshot 状态

 

通过 GET 请求监控当前 Snapshot 状态,需要注意的是,如果你的 Snapshot 和索引shard 分片很多、仓库存储的延迟很大,那么 _current 请求可能会耗时很久。


# 查看当前 Snapshot 状态
GET /_snapshot/my_fs_backup/_current
# 指定 Snapshot 查看
GET /_snapshot/my_fs_backup/snapshot_1
GET /_snapshot/my_fs_backup/snapshot_*
# 查看所有仓库(如果建了多个仓库的话)
GET /_snapshot/_all
GET /_snapshot/my_fs_backup,my_hdfs_backup
GET /_snapshot/my*
# 指定查看某一个 Snapshot 的进度详情
GET /_snapshot/my_fs_backup/snapshot_1/_status
# 返回结果较大,以下仅展示部分结果。更多结果说明参考:
# /guide/en/elasticsearch/reference/current/get-snapshot-status-api.html
{
    "snapshots": [
        {   # 快照名称
            "snapshot": "snapshot_1",
            # 仓库名称
            "repository": "my_fs_backup",
            "uuid": "HQHFSpPoQ1aY4ykm2o-a0Q",
            # 快照状态
            "state": "SUCCESS",
            # 是否包含集群全局状态
            "include_global_state": true,
            # 索引分片的状态
            "shards_stats": {
                # 初始化中的个数
                "initializing": 0,
                # 已启动的个数
                "started": 0,
                # 最后状态的个数
                "finalizing": 0,
                # 已完成的个数
                "done": 3,
                # 失败个数
                "failed": 0,
                # 总数
                "total": 3
            },
            # 快照备份状态
            "stats": {
                # 待备份的文件统计
                "incremental": {
                    "file_count": 2,
                    "size_in_bytes": 500
                       },
                # 已完成的备份文件统计
                "processed": {
                    "file_count": 1,
                    "size_in_bytes": 124
                }
                # 文件统计总览
                "total": {
                    "file_count": 3,
                    "size_in_bytes": 624
                },
                # 开始时间
                "start_time_in_millis": 1630673216237,
                "time_in_millis": 0
            },
            # 包含的索引
            "indices": {
                # 索引名称
                "index_1": {
                    # 分片备份状态
                    "shards_stats": {
                        "initializing": 0,
                        "started": 0,
                        "finalizing": 0,
                        "done": 1,
                        "failed": 0,
                        "total": 1
                    },
                     "stats": {
                        "incremental": {
                            "file_count": 1,
                            "size_in_bytes": 208
                        },
                        "total": {
                            "file_count": 1,
                            "size_in_bytes": 208
                        },
                        "start_time_in_millis": 1630673216237,
                        "time_in_millis": 0
                    },
                    "shards": {
                        "0": {
                          #initializing:初始化检查集群状态是否可以创建快照
                          #started:数据正在被传输到仓库
                          #finalizing:数据传输完成,shard 分片正在发送 Snapshot 元数据
                            #done:Snapshot 创建完成
                          #failed:遇到错误失败的 shard 分片
                            "stage": "DONE",
                            "stats": {
                                "incremental": {
                                    "file_count": 1,
                                    "size_in_bytes": 208
                                },
                                "total": {
                                    "file_count": 1,
                                    "size_in_bytes": 208
                                },
                                "start_time_in_millis": 1630673216237,
                                "time_in_millis": 0
                            }
                        }
                            }
                    # 省略部分结果...
                }
            }
        }
    ]
}

2. 监控 Restore 恢复状态

 

当 Restore 恢复启动后,因为 Restore 在恢复索引的主分片,所以集群状态会变成 yellow,主分片恢复完成后 Elasticsearch 开始根据副本设置的策略恢复副本数,所有操作完成后集群才会恢复到 green 状态。也可以先把索引的副本数修改为0,待主分片完成后再修改到目标副本数。Restore 恢复状态可以通过监控集群或者指定索引的 Recovery 状态。


# 查看集群恢复状态,更多请参考集群恢复监控接口:
# /guide/en/elasticsearch/reference/current/cat-recovery.html
GET /_cat/recovery/
# 查看索引的恢复状态,更多请参考索引恢复监控接口:
# /guide/en/elasticsearch/reference/current/indices-recovery.html
GET /index_1/_recovery
# 返回结果
{
    "restore_lakehouse": {
        "shards": [
            {
                "id": 1,
                "type": "SNAPSHOT",
                # 恢复的阶段,INIT:初始化;START:开始;INDEX:读取索引元数据和拷贝数据;
                # TRANSLOG:日志回放;FINALIZE:善后整理;DONE:完成;
                "stage": "INDEX",
                    # 是否主分片
                "primary": true,
                "start_time_in_millis": 1630673216237,
                "total_time_in_millis": 1513,
                # 恢复来源
                "source": {
                    # 仓库
                    "repository": "my_fs_backup",
                    "snapshot": "snapshot_3",
                    "version": "7.10.0",
                    "index": "index_1",
                    "restoreUUID": "fLtPIdOORr-3E7AtEQ3nFw"
                },
                # 目标集群
                "target": {
                    "id": "8Z7MmAUeToq6WGCxhVFk8A",
                    # 集群 host
                    "host": "127.0.0.1",
                    "transport_address": "127.0.0.1:9300",
                    "ip": "127.0.0.1",
                    # 集群名称
                    "name": "jt-hpzbook"
                },
                # 索引
                "index": {
                    "size": {
                        # 占用空间大小
                        "total_in_bytes": 25729623,
                        # 可回收空间
                        "reused_in_bytes": 0,
                        # 已恢复大小
                        "recovered_in_bytes": 23397681,
                        # 已恢复进度百分比
                             "percent": "90.9%"
                    },
                    # 文件统计
                    "files": {
                        "total": 50,
                        "reused": 0,
                        "recovered": 43,
                             "percent": "86.0%"
                    },
                    "total_time_in_millis": 1488,
                    "source_throttle_time_in_millis": 0,
                    "target_throttle_time_in_millis": 0
                },
                # 回放日志
                "translog": {
                    "recovered": 0,
                    "total": 0,
                    "percent": "100.0%",
                    "total_on_start": 0,
                    "total_time_in_millis": 0
                },
                # 验证索引
                "verify_index": {
                    "check_index_time_in_millis": 0,
                    "total_time_in_millis": 0
                }
            }
            # 其它shard详情省略...
        ]
    }
}

其他备份手段

 

elasticdump

 

类似 MySQL dump 的功能,对 Elasticsearch 集群的数据进行导入导出。适合非增量索引数据的备份。更多安装使用 elasticdump 请移步:elasticsearch-dump Github

 

其他数据同步工具

 

l Kettle: 免费开源的基于 Java 的企业级 ETL 工具,功能强大简单易用,仅支持写入 Elasticsearch。更多参考:Kettle Gighub

l DataX: 是阿里云 DataWorks 数据集成。更多参考:Datax Github 的开源版本,多种异构数据源之间高效的数据同步功能,目前仅支持写入Elasticsearch。

l Flinkx: 是一个基于Flink的批流统一的数据同步工具,支持 Elasticsearch 的读取和写入。更多参考:Flinkx Github

 

创作人简介:

冯江涛,关注大数据相关技术栈,擅长 HDFS、Elasticsearch 存储相关,Spark、Flink 计算相关,以及大数据中台的开发。Talk is cheap. Show me the code.

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 API
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (上)
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (上)
146 0
|
索引
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (中)
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (中)
125 0
|
SQL 自然语言处理 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
347 0
|
存储 运维 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
272 0
|
JSON Java 数据格式
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
108 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
119 0
带你读《Elastic Stack 实战手册》之38:——3.4.2.19.copy_to
带你读《Elastic Stack 实战手册》之38:——3.4.2.19.copy_to
139 0
|
机器学习/深度学习 运维 数据可视化
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(上)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(上)
106 0
|
机器学习/深度学习 数据建模 索引
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(中)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(中)
105 0
|
机器学习/深度学习
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(下)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(下)