












快照方案是官方提供的标准方案。指定一个快照仓库路径,通过接口调用触发快照,每次快照均是基于上次快照的增量;通过快照还原时,是还原到该快照那刻的数据,之前的变更全部取消。
path.repo: /opt/xx/web/xx/elasticsearch.1/data/backup,/opt/es/backup/iotrm
使用 es 的API:PUT _snapshot 进行仓库注册
请求参数
{ "type": "fs", "settings": { "location": "/opt/es/backup/iotrm" } }

遇到的问题
1)如果注册时,注册的 location 地址没有配置在es的 elasticsearch.yml 文件中,会报如下错误

2)如果注册时,注册的location指定的地址与es程序运行的用户和组不一致,会报如下错误

使用 es 的API:PUT _snapshot/仓库名/快照名称?wait_for_completion=true 进行快照备份
http://10.19.223.119:9200/_snapshot/iotrm/%3Ciotrm-%7Bnow%7ByyyyMMddHHmmss%7D%7D%3E?wait_for_completion=true 快照名称可以配置时间格式,%3Ciotrm-%7Bnow%7ByyyyMMddHHmmss%7D%7D%3E 实际是:<iotrm-{now{yyyyMMddHHmmss}}>
请求body
{
"include_global_state": false, #表示全局信息如集群不备份
"indices":["iotrm*"], #备份 iotrm 开头的所有索引数据
"metadata": {
"taken_by": "xiaohua",
"taken_because": "iotrm,backup test"
}
}
表示将 iotrm 开头的所有索引进行备份
返回内容
"snapshot": {
"snapshot": "iotrm-20241203072538",
"uuid": "idfOxhbCR961R6o3IiKpKQ",
"version_id": 7100299,
"version": "7.10.2",
"indices": [
"iotrm_xx_2024-09-12",
"iotrm_xx",
"iotrm_yy",
"iotrm_xx$0x00070101_2024-11-30",
"iotrm_yy_2024-09-12"
],
"data_streams": [],
"include_global_state": false,
"metadata": {
"taken_by": "xiaohua",
"taken_because": "iotrm,backup test"
},
"state": "SUCCESS",
"start_time": "2024-12-03T07:25:38.909Z",
"start_time_in_millis": 1733210738909,
"end_time": "2024-12-03T07:29:24.148Z",
"end_time_in_millis": 1733210964148,
"duration_in_millis": 225239,
"failures": [],
"shards": {
"total": 5,
"failed": 0,
"successful": 5
}
}
}
使用 es 的API:PUT _snapshot/仓库名/快照名称/_restore ?wait_for_completion=true 进行快照还原
使用 es 的API:GET_snapshot/仓库名/*
请求body
{ "include_global_state": false, "indices":["索引名称"], "metadata": { "taken_by": "wangfang5", "taken_because": "iotrm,backup test" } }
请求 参数
{ "include_global_state": false, "indices":["iotrm*","xres_smartscreen"], #表示还原iotrm开头的索引以及xres_smartscreen "metadata": { "taken_by": "wangfang5", "taken_because": "iotrm,backup test" } }
请求参数
{ "include_global_state": false, "metadata": { "taken_by": "wangfang5", "taken_because": "iotrm,backup test" } }
第一次触发快照全量备份

示例中 备份出来的快照名为:iotrm-20241203072538
2830345的文档数据第一份全量备份耗时3分钟左右
第二次触发快照备份

示例中 备份出来的快照名为:iotrm-20241203085518
总共文档数据 2832160 ,但是第二次快照备份仅需36秒(因此是增量快照备份)
第三次触发快照备份

示例中 备份出来的快照名为:iotrm-20241203091239
总共文档数据 2834155,但是第三次快照备份仅需36秒(因此是增量快照备份)
快照有三个:iotrm-20241203072538、iotrm-20241203085518、iotrm-20241203091239
第一次还原 iotrm-20241203072538
http://10.19.214.13:9200/_snapshot/iotrm/iotrm-20241203072538/_restore?wait_for_completion=true

总共 2821980 条文档数据,还原需要 4 分钟左右
第二次还原 iotrm-20241203085518
先通过 es API 接口:http://10.19.214.13:9200/iotrm*/_close 关闭所有开头的索引
再通过 es API 接口:http://10.19.214.13:9200/_snapshot/iotrm/iotrm-20241203085518/_restore?wait_for_completion=true 还原数据到 快照版本 iotrm-2024120308551

总共 2832422条文档数据,变更了1万多的数据,还原需要 2 分钟左右
第三次还原 iotrm-20241203091239
先通过 es API 接口:http://10.19.214.13:9200/iotrm*/_close 关闭所有开头的索引
再通过 es API 接口:http://10.19.214.13:9200/_snapshot/iotrm/iotrm-20241203091239/_restore?wait_for_completion=true 还原数据到 快照版本 iotrm-2024120308551

总共 2834510条文档数据,还原需要 2 分钟左右
2)数据变更场景下进行还原

还原到快照 iotrm-20241203072538

总共 2821980 条文档数据,还原需要 2 分钟左右
第一次触发快照全量备份

示例中 备份出来的快照名为:all-20241203092245
总共文档数据 2835861 2.0G,第一次全量备份耗时4分钟左右
第二次触发快照全量备份(实际为增量备份)

示例中 备份出来的快照名为:all-20241203111133
总共文档数据 2867875 2.2G,第二次全量备份耗时1分钟左右
第三次触发快照全量备份(实际为增量备份)

示例中 备份出来的快照名为:all-20241203121320
总共文档数据 2875409 2.1G,第三次全量备份耗时1分钟左右
有三份全量快照:all-20241203092245、all-20241203111133、all-20241203121320
将数据还原到 all-20241203092245 快照版本

2854993 条数据,还原耗时4分钟左右
有1份全量快照 all-20241203124406,还原该快照中的 iotrm_event_illuminancetelemeter 索引数据,该索引在目标es中不存在

2230000 条数据还原需要11.39秒
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。