ES 数据库备份快照

背景:

某客户 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 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    111 引用 • 99 回帖 • 386 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 星云链

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

    3 引用 • 16 回帖 • 39 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 74 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 311 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    129 引用 • 1110 回帖 • 205 关注
  • RabbitMQ

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

    49 引用 • 60 回帖 • 460 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 8 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    29 引用 • 88 回帖
  • OpenResty

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

    17 引用 • 55 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    13 引用 • 66 回帖 • 1 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    8 引用 • 25 回帖 • 2 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 377 关注
  • PWA

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

    13 引用 • 68 回帖 • 77 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    50 引用 • 89 回帖
  • Eclipse

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

    75 引用 • 258 回帖 • 657 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    251 引用 • 1403 回帖 • 2 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    42 引用 • 24 回帖 • 1 关注
  • Kafka

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

    34 引用 • 35 回帖
  • 招聘

    哪里都缺人,哪里都不缺人。

    184 引用 • 1050 回帖 • 147 关注
  • 996
    13 引用 • 200 回帖 • 1 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    53 引用 • 192 回帖 • 11 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    83 引用 • 126 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    513 引用 • 669 回帖
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    485 引用 • 1387 回帖 • 505 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 486 关注
  • LaTeX

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

    7 引用 • 31 回帖 • 297 关注