百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Es7.x数据迁移实战(Snapshot、S3)

liuian 2025-06-24 15:18 4 浏览

前言

前面文章写过ES的迁移方案,不同场景使用不同的迁移方案会事半功倍,今天咱们就来具体操作一下基于Snapshot方式来迁移数据,Snapshot更加适用于大数据量跨集群迁移数据。并且索引创建快照的过程是增量的。在给索引创建快照的过程中,Elasticsearch会分析存储在仓库中的索引文件并且只会复制那些自从上次快照 之后新建或有所更新的文件。这使得多个快照以一种紧凑的方式存储在同一个仓库里。创建快照的过程是以非阻塞方式执行的。一个索引在创 建快照的同时能够被检索和查询。尽管如此,快照保存的是在开始进行创建快照的那个时间点的索引的视图。所以,在开始创建快照之后的记录不会出现在这个快照里。在主分片启动之后创建快照的过程就会立即开始,并且之后不会改变位置。

操作

开门见山,直接上操作,咱们使用Kibana可视化桌面来操作,当然也可以直接使用CURL的方式。

安装S3插件

除了S3,也可以使用本地存储fs等,进入docker容器

docker exec -it c76785ab5a8b bash

# 安装插件
./bin/elasticsearch-plugin insyall repository-s3

exit

重启容器(不建议这样安装,万一容器挂了重新启动后就会没有,建议使用挂载的方式)

docker restart c76785ab5a8b

查看是否安装成功

GET _cat/plugins

c76785ab5a8b analysis-ik 7.8.1
c76785ab5a8b repository-s3 7.8.1

显示这样表明安装成功,一般情况下插件版本是和ES的版本对应的

创建仓库

创建仓库之前咱们先把minio的AK、SK在后台配置(安全),以同样的方式进入docker中

./bin/elasticsearch-keystore add s3.client.default.access_key
./bin/elasticsearch-keystore add s3.client.default.secret_key

添加后退出重启(不建议)

然后开始创建仓库

PUT _snapshot/stock_backup
{
  "type": "s3",
  "settings": {
    "bucket": "stock",
    "protocol": "http",
    "disable_chunked_encoding": "true",
    "endpoint": "172.0.0.1:9000"
  }
}

验证是否创建成功

GET _snapshot/_all?pretty

{
  "stock_backup" : {
    "type" : "s3",
    "settings" : {
      "bucket" : "stock",
      "disable_chunked_encoding" : "true",
      "endpoint" : "172.0.0.1:9000",
      "protocol" : "http"
    }
  }
}

此时,仓库已经创建好了,咱们直接备份数据

备份

全量备份

PUT _snapshot/stock_backup/snapshot_all

部分备份,例如:只备份其中的index

当然也可以添加参数:

indices: 要本分的index,逗号分割。

max_wait: 最大等待时间。

wait_interval: 等待间隔。

wait_for_completion: 参数指定创建snapshot的请求是否等待快照创建完成再返回。

ignore_unavailable: 把这个选项设置为 true 的时候在创建快照的过程中会忽略不存在的索引。默认情况下, 如果没有设置 ignore_unavailable 在索引不存在的情况下快照请求将会失败。

include_global_state: 为false 能够防止 集群的全局状态被作为快照的一部分存储起来。默认情况下,如果快照中的1个或多个索引不是全部主分片都可用会导致整个创建快照的过程失败。 通过设置 partial 为 true 可以改变这个行为。

PUT _snapshot/stock_backup/default_all
{
  "indices": "dec_default_news,dec_default_rate,dec_default_ha",
  "ignore_unavailable": true,
  "include_global_state": false
}

查看备份状态

GET _snapshot/stock_backup/default_all  # 查看单个

{
  "snapshots" : [
    {
      "snapshot" : "default_all",
      "uuid" : "4ZgKyuBWTE2vtowAczIDpQ",
      "version_id" : 7080199,
      "version" : "7.8.1",
      "indices" : [
        "dec_default_news",
        "dec_default_rate",
        "dec_default_ha"
      ],
      "include_global_state" : false,
      "state" : "SUCCESS",
      "start_time" : "2022-04-02T03:16:09.842Z",
      "start_time_in_millis" : 1648869369842,
      "end_time" : "2022-04-02T03:16:09.842Z",
      "end_time_in_millis" : 1648869369842,
      "duration_in_millis" : 0,
      "failures" : [ ],
      "shards" : {
        "total" : 3,
        "failed" : 0,
        "successful" : 3
      }
    }
  ]
}

GET _snapshot/stock_backup/_all?pretty  # 查看所有

{
  "snapshots" : [
    {
      "snapshot" : "default_all",
      "uuid" : "4ZgKyuBWTE2vtowAczIDpQ",
      "version_id" : 7080199,
      "version" : "7.8.1",
      "indices" : [
        "dec_default_news",
        "dec_default_rate",
        "dec_default_ha"
      ],
      "include_global_state" : false,
      "state" : "SUCCESS",
      "start_time" : "2022-04-02T03:16:09.842Z",
      "start_time_in_millis" : 1648869369842,
      "end_time" : "2022-04-02T03:16:09.842Z",
      "end_time_in_millis" : 1648869369842,
      "duration_in_millis" : 0,
      "failures" : [ ],
      "shards" : {
        "total" : 3,
        "failed" : 0,
        "successful" : 3
      }
    }
  ]
}

此时已经备份成功

恢复

咱们的操作是跨集群的数据迁移,同样的操作,在另一个集群里面创建相同的仓库

PUT _snapshot/stock_backup
{
  "type": "s3",
  "settings": {
    "bucket": "stock",
    "protocol": "http",
    "disable_chunked_encoding": "true",
    "endpoint": "172.0.0.1:9000"
  }
}

然后看下现在有备份数据

GET _snapshot/stock_backup/_all?pretty
{
  "snapshots" : [
    {
      "snapshot" : "default_all",
      "uuid" : "4ZgKyuBWTE2vtowAczIDpQ",
      "version_id" : 7080199,
      "version" : "7.8.1",
      "indices" : [
        "dec_default_news",
        "dec_default_rate",
        "dec_default_ha"
      ],
      "include_global_state" : false,
      "state" : "SUCCESS",
      "start_time" : "2022-04-02T03:16:09.842Z",
      "start_time_in_millis" : 1648869369842,
      "end_time" : "2022-04-02T03:16:09.842Z",
      "end_time_in_millis" : 1648869369842,
      "duration_in_millis" : 0,
      "failures" : [ ],
      "shards" : {
        "total" : 3,
        "failed" : 0,
        "successful" : 3
      }
    }
  ]
}

发现已经存在了备份的数据,此时只需要恢复就行

POST _snapshot/stock_backup/default_all/_restore

{
  "acknowledged" : true
}

等待执行结束就OK

GET _cat/indices

yellow open dec_default_news   HWykC-xpQVK0ZqK-3NjXVA 1 1     308    0   208kb   208kb
yellow open dec_default_rate   F3JFzHF-QK2AH_9IUmnacA 1 1  409471    0 221.5mb 221.5mb
yellow open dec_default_ha     c78OXNB1T3KafgVHj7TwiA 1 1     164    0 250.2kb 250.2kb

大功告成

相关推荐

谷歌Gemini 2.5全线爆发!勇战濒死恐慌,却被宝可梦吓到当场宕机

编辑:定慧桃子【新智元导读】今天,谷歌旗舰Gemini2.5三箭齐发,首次亮相轻量版2.5Flash-Lite。最新70页技术报告中,爆料了Gemini2.5在玩宝可梦濒死时,惊现类人的恐慌,...

Claude 4系列模型正式发布,号称“世界上最好的”AI编程模型

当地时间5月22日,Anthropic在其首次开发者大会上,正式发布了其下一代Claude模型系列:ClaudeOpus4和ClaudeSonnet4。该公司在公告中高调宣称,...

p5.js 中文入门教程(p5js和js怎么转换)

本文简介点赞+关注+收藏=学会了本文的目标是和各位工友一起有序的快速上手p5.js,会讲解p5.js的基础用法。本文会涉及到的内容包括:项目搭建p5.js基础2D图形文字图形样式...

ElasticSearch中文分词插件(IK)安装

坚持原创,共同进步!请关注我,后续分享更精彩!!!前言ElasticSearch默认的分词插件对中文支持很不友好。一段话按规则会以每个中文字符来拆解,再分别建立倒排索引。如"中华人民共和国国歌...

ELK 教程 - 发现、分析和可视化你的数据

【注】本文译自:ELKStackTutorial-GettingStartedWithELKStack|Edureka随着越来越多的IT基础设施转身云计算,对公共云安全工具...

网络安全事件技术排查(网络安全事件排查有哪些因素)

1.文件分析a)文件日期与异常文件检测文件时间检查:Windows:通过文件属性查看创建/修改时间,但需注意攻击者可能伪造时间(如使用工具修改文件时间戳)。Linux:使用ls-l或sta...

日志文件转运工具Filebeat笔记(日志文件生成原理)

一、概述与简介Filebeat是一个日志文件转运工具,在服务器上以轻量级代理的形式安装客户端后,Filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并将来自...

Spring Boot 分布式系统中的日志打印设计:实战指南

在分布式系统中,日志是排查问题、监控系统状态和进行事后分析的“生命线”。然而,随着微服务架构的普及,日志的管理和检索变得愈发复杂。尤其是在生产环境中,当问题发生时,如何快速定位相关日志成为了一个关键挑...

Loki日志系统取代ELK?(日志系统 elk)

一、Loki是什么?Loki是由GrafanaLabs开源的一个水平可扩展、高可用性,多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中,处理海量日志的问题。Loki采用...

20 个最热门的 MCP Server,收藏备用!

1.GitHubMCPServer功能:代码仓库管理、自动化代码审查、处理拉取请求(PR)、Issue跟踪。项目地址:https://docs.github.com/en/rest核心架构:基于...

ElasticSearch实现数据模糊搜索(el-select模糊搜索)

关注我的微信公众号:后端技术漫谈不定期推送关于后端开发、爬虫、算法题、数据结构方面的原创技术文章,以及生活中的逸闻趣事。我目前是一名后端开发工程师。主要关注后端开发,数据安全,网络爬虫,物联网,边缘计...

Linux 日志系统维护的实战示例(linux 日志文件系统)

Linux日志系统维护的实战示例,涵盖常见场景和工具:1.日志轮转与清理(Logrotate)问题:系统/var/log空间不足,需定期切割和清理旧日志。实战步骤:检查默认配置Logrotat...

日志分析平台——ELK安装配置(elk日志解析)

简介:ELK是(Elasticsearch、Logstash、Kibana)三个软件的集合简称。那么这三个软件分别扮演着一个什么样的角色呢?Elasticsearch:搜索引擎,主要任务是将日志索引并...

Docker上使用Elasticsearch,Logstash,Kibana

在对一个项目做性能测试时我需要处理我们web服务器的访问日志来分析当前用户的访问情况。因此,我想这是试用ELK的一个好机会。ELK栈首先要注意的是使用它是非常简单的。从决定使用ELK到在本机上搭一个...

.NET Core 性能监控(.net core性能对比)

一、.NETCore性能监控的重要性随着.NETCore应用程序的广泛应用,性能监控成为了保障应用稳定运行的关键环节。性能监控可以帮助开发者实时掌握应用状态,快速定位问题所在,并采取相应的...