ES 数据库备份快照

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

背景:

某客户 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 回帖 • 211 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 438 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1275 回帖 • 2 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 456 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 17 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    110 引用 • 54 回帖 • 4 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1706 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 3 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖
  • Markdown

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

    169 引用 • 1523 回帖 • 1 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 391 回帖
  • 电影

    这是一个不能说的秘密。

    121 引用 • 605 回帖
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 366 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 97 关注
  • 996
    13 引用 • 200 回帖 • 14 关注
  • Word
    13 引用 • 40 回帖 • 2 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 2 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    409 引用 • 3576 回帖
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    314 引用 • 547 回帖 • 2 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 363 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 541 关注
  • V2Ray
    1 引用 • 15 回帖
  • 反馈

    Communication channel for makers and users.

    124 引用 • 916 回帖 • 257 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    75 引用 • 258 回帖 • 629 关注
  • Spring

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

    943 引用 • 1460 回帖 • 2 关注
  • 分享

    有什么新发现就分享给大家吧!

    247 引用 • 1793 回帖