ES 数据库备份快照

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

背景:

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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 632 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    59 引用 • 25 回帖 • 2 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 77 回帖
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 182 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 2 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 642 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 26 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    133 引用 • 796 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖 • 2 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 37 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 262 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 1 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 5 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖 • 1 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 111 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    954 引用 • 944 回帖
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 49 关注
  • Tomcat

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

    162 引用 • 529 回帖 • 8 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖 • 1 关注
  • 叶归
    12 引用 • 56 回帖 • 23 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 3 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    291 引用 • 4495 回帖 • 662 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    29 引用 • 202 回帖 • 29 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • 一些有用的避坑指南。

    69 引用 • 93 回帖