《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.