ES 数据库备份快照

本贴最后更新于 705 天前,其中的信息可能已经事过景迁

背景:

某客户 UCSS-HA+DB 高可用环境,由于事件和日志量非常大,预估 20G+,考虑到导出事件和日志备份有一定风险导出失败,故考虑该手工备份 ES 数据库相关表

下述操作部署,为 3.10 db 高可用环境操作,参考文档:ElasticSearch 手工归档


  1. 登录 db-master 服务器,启用并配置 nfs 挂载信息

    说明:为什么要启用 nfs 挂载备份路径:

    es 备份时,需要所有节点都可以访问同一个路径,默认是本地路径,相当于每个节点访问的这个备份路径都是不同的,备份就会失败

    vi /opt/skyguard/elasticsearch/es-all.yaml  #取消下述列的注释
    108       #- name: backups
    109       #  mountPath: /backups
    
    121       #- name: backups
    122       #  nfs:
    123       #    path: /mnt/nfs_shared   #修改为nfs挂载路径
    124       #    server: 172.22.111.11   #修改为nfs服务器ip
    

    安装 nfs 客户端组件

    ubuntu 环境

    dpkg -l |grep nfs-common  #查询是否有安装包
    ii  nfs-common      1:1.2.8-9ubuntu12.3         amd64        NFS support files common to client and server
    apt install nfs-common  #执行安装
    

    redhat/centos/oraclelinux 环境

    yum list |grep nfs-utils  #查询是否有安装包
    nfs-utils.x86_64                       1:1.3.0-0.68.0.1.el7.2      @ol7_latest  
    yum install nfs-utils  #执行安装
    
  2. 启用仓库地址

    配置备份后的快照文件存放地址(此地址为 es 容器内的地址)

    root@k8s-master2 ~]# vi /opt/skyguard/elasticsearch/es-cm.yaml
    # path.repo: "/backups"  #取消注释,生效备份快照的路径
    
  3. 生效配置:
    kubectl apply -f  /opt/skyguard/elasticsearch/es-all.yaml
    kubectl apply -f  /opt/skyguard/elasticsearch/es-cm.yaml
    

    停掉当前的 es
    kubectl delete statefulset es
    之后使用 kubectl get pods | grep es 命令查看 es pod 的情况,直到检索不到结果为止,说明 es 的 pod 都已经删除掉了。

  4. 删掉 ES 集群界节点容器

    查看 ES 容器节点

    kubectl get pods | grep es
    es-0                                     1/1     Running   0          16h
    es-1                                     1/1     Running   0          16h
    es-2                                     1/1     Running   0          16h
    

    删掉 ES 容器节点

    kubectl delete pod es-0 es-1 es-2
    pod "es-0" deleted
    pod "es-1" deleted
    pod "es-2" deleted
    

    确认看 K8S 已经已经创建好新的容器节点(看 Runling 的运行时间判断是否是新创建)

    kubectl get pods | grep es
    es-0                                     1/1     Running   0          2m37s
    es-1                                     1/1     Running   0          2m6s
    es-2                                     1/1     Running   0          2m36s
    
  5. 生成仓库地址

    生成仓库地址的过程,就是指定 ES 的备份文件存放路径的过程

    注意:此命令及下述命令,均需要在 ucss 服务器的 sps 容器上执行

    原因:db 高可用环境,只授信了 ucss ip

    curl -H "Content-Type: application/json"  -XPUT http://172.22.2.179:9200/_snapshot/backup_archive -d '{"type":"fs","settings":{"location":"/backups"}}' -u skyguard:Elastic@SkyGuard     #表示仓库地址为/backups
    响应信息:{"acknowledged":true}  #表示执行成功
    
  6. 查看需要生成快照的表信息

    curl http://172.22.2.179:9200/_cat/indices -u skyguard:Elastic@SkyGuard
    green open swg-20221119-01                 460ytmRqRuK85gtLy1aOsw 5 1 1206 3   2.5mb   1.2mb
    green open ucwi-20221119-01                KFqxV4LUTxWsbeBL-SxzUg 5 1    0 0     2kb     1kb
    green open dlp-mobile-20221119-01          A4mn4ef0QoK4-x6qcgEEAg 5 1    0 0     2kb     1kb
    green open connect-log-20221119-01         q1WtputiQxq6R0oJwtbWlA 5 1   39 0 436.7kb 218.3kb
    green open dlp-discovery-20221119-01       tKtXvhw8STS5m-38aKCMCg 5 1    0 0     2kb     1kb
    green open email-message-20221119-01       QPCnoOWZQPm5ZwnmUpd69A 5 1   38 0   1.2mb 649.7kb
    green open dlp-endpoint-20221119-01        W_obj8ExSKia5v7rQJTNRw 5 1    0 0     2kb     1kb
    green open dlp-network-20221119-01         oKqBLAfJSIitTFjJL1cW2Q 5 1   35 3   3.8mb   1.9mb
    green open dlp-watermark-20221119-01       sqQpxwz8T82hgomfcX_uxw 5 1    0 0     2kb     1kb
    green open mobile-app-incident-20221119-01 drzGKMroQsKULGDaKC2zYA 5 1    0 0     2kb     1kb
    green open mobile-mag-log-20221119-01      yJQSxhKPS4OhElVydO0-mQ 5 1    0 0     2kb     1kb
    green open itm-scores-20221119-01          Z0G6pV01SWiyDT3JFIIADA 5 1    0 0     2kb     1kb
    
  7. 生成快照(会自动导出到 nas 目录)

    curl -X PUT -H "Content-Type:application/json" http://172.22.2.179:9200/_snapshot/backup_archive/dlp-20230118 -d '{"indices":"swg-20221119-01,connect-log-20221119-01"}' -u skyguard:Elastic@SkyGuard 
    

完成上诉操作后,进入 nas 目录,便可以看到备份的快照信息了,如下图所示:

[root@k8s-master1 backups]# pwd
/var/lib/kubelet/pods/fa0aaf80-5c04-4676-a52a-7cfdc40bd113/volumes/kubernetes.io~nfs/backups
[root@k8s-master1 backups]# ls -lh
total 36K
drwxrwxr-x 4 skyguard root 4.0K Jan 17 23:21 indices
-rw-rw-r-- 1 skyguard root  27K Jan 17 23:21 meta--9kdlqjSSlWSeIP7ZD_svQ.dat
-rw-rw-r-- 1 skyguard root 2.2K Jan 17 23:21 snap--9kdlqjSSlWSeIP7ZD_svQ.dat

拷贝完后,请其实 copy 走数据,防止被后续的备份冲掉。

  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 209 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 75 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 44 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 747 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    167 引用 • 1520 回帖
  • 创业

    你比 99% 的人都优秀么?

    85 引用 • 1399 回帖 • 2 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 39 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 50 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 603 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    196 引用 • 540 回帖 • 1 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 634 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 401 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 252 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    943 引用 • 1460 回帖 • 1 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 49 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 1 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    53 引用 • 37 回帖 • 2 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 159 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 592 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 6 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖 • 1 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 101 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 668 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 149 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖 • 1 关注
  • 反馈

    Communication channel for makers and users.

    123 引用 • 913 回帖 • 250 关注