云原生|秒懂云原生容灾备份实践

news2024/10/5 14:17:58

作者:刘健 后端开发工程师

目录

一、需备份的数据

二、在云航项目中使用

三、备份任务说明


一、需备份的数据

kubernetes在运行中,通常会产生两类数据:

  1. kubernetes集群资源对象数据。

  2. 容器运行时产生的数据。

针对cloudUp项目而言,需要备份的数据如下:

  1. kubernetes集群资源对象数据:kubernetes集群资源对象数据,通常存储在集群控制平面连接的etcd中。所以只需要备份etcd中的数据就可以了。

  2. 容器运行时产生的数据:cloudUp容器在运行过程中,会产生以下数据。

  • Postgres:cloudUp portal端使用的关系数据库。用于存储portal的用户数据,配置数据等。

  • Mongo:cloudUp devops端使用的nosql数据库。用于存储devops端的系统配置数据,任务数据等。

  • Mysql:cloudUp devops端使用的关系数据库。用于存储devops的用户数据,及用户登录数据等。

  • minio:cloudUp devops端使用的对象数据库。用于存储devops运行时产生的日志数据等。

二、在云航项目中使用

//backup微服务

响应⽤户的备份策略,并创建备份任务。备份策略有:即时备份和定时备份。 

触发备份任务时,微服务中,创建备份任务pod。并监听pod的运行状态。记录任务执行结果到数据库中。 

//备份任务

备份任务使用独立的pod运行。备份任务采用命令行的方式,接收备份参数并进行相应处理。 

备份任务可以将cloudUp中的数据备份到minio,sftp和独立数据卷中,也可以在备份的数据中选择某⼀个进行恢复。

三、备份任务说明

备份恢复采用单独工具的方式独立开发。可以通过Pod的方式与cloudUpi配套使用,也可以某个独立的环境中使用。

//备份/恢复kubernetes

对于kuberentes,只需要对etcd进行备份与恢复。etcd官方提供了snapshot的方式进行数据备份与恢复。本次也是依赖于官方提供的备份方式进行备份与恢复。

  • 备份etcd

etcd的备份使用官方提供的etcdctl工具。

获取工具并执行:在golang中,可以使用调用etcdutl依赖包go.etcd.io/etcd/etcdut L/v3中的snapshot..Save()的方法进行数据备份。

备份完成后,会根据传入的文件名(dbpath),生成备份文件。根据传入的参数,选择将备份文件打包并传入到stp,minio或数据卷中。

  • 恢复etcd

etcd的恢复使用官方提供的etcdctl.工具。

获取工具并执行:在golang中,可以使用调用etcdutl依赖包go,etcd.io/etcd/etcdutl/v3中的snapshot.Restore()方法进行数据恢复。

etcd的恢复,是生成一个新的etcd的数据目录,然后需要手动将新后动的etcd数据目录,替换成生成的数据目录

//备份恢复portal

portal需要备份和恢复的有postgreso。

  • 备份bostgres

postgres的备份采用官方提供的pg dump.工具。

获取pg_dump工具:pg_dump工具是postgres自带,并依赖于postgres环境运行。故采用portal使用的对应版本的oostgres作为基础镜像时,就可以使用此工具。

执行pg_dump工具:在golang中使用exec.Command方法后动pg_dump工具

  • 恢复postgres

使用对应的sqldriveri连接到新的postgres数据库。然后执行需要恢复到sql语句。

//备份恢复devops

备份和恢复devops:涉及到mongo,minio和mysql

  • 备份mongo

mongo备份使用官方提供的MongoDump工具。

获取工具并执行:在golang中,可以使用调用依赖包github.com/mongodb/mongo-tools/mongodump中的MongoDump.Dump()方法进行数据备份。

  • 恢复mongo

mongol的恢复使用了官方提供的MongoRestore工具。

获取工具并执行:在golang中,可以使用调用依赖包github,com/mongodb/mongo-tools/mongorestore中的MongoRestore.Restore()方法进行数据恢复

  • 备份minio

minio的备份,先获取一个桶下的所有object,然后逐一获取object并打包成一个统一的备份文件。

  • 恢复minio

minio的恢复,将备份的objecti重新写入到minio的对应桶中。

  • 备份mysql

mysqli备份采用mysq驱动,执行sql语句的方式,从mysql数据库中查询并拼接成sql语句。

  • 恢复mysql

mysqlt恢复采用mysql驱动,执行备份sql语句的方式。

//备份数据存储

根据传入的参数,决定将数据存储到那个目标存储中心。cloudUp定义了三个存储中心。

Minio:传入的参数store-.minio-file有值时,将数据存储到minio中。

SFTP:传入的参数store-sftp-file有值时,将数据存储到sftp中。

volume:传入的参数store-volume-file有值时,将数据存储到volume中。

本次分享就到这里啦~

版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。

公众号搜索神州数码云基地,了解更多技术干货。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

淘宝商品信息存入数据库

python 爬虫程序: #京东.pyimport json import pprint import re import requests # name_turnover {} url "https://s.taobao.com/search?data-keys&data-value88&ajaxtrue&_ksTS1686118766568_2290&callbackjsonp2291&ieutf8&in…

用AI写出的高考作文!

今天是6月7日,又到了每一年高考的日子。小灰自己参加高考是在2004年,距离现在已经将近20年,现在回想起来,真的是恍如隔世。 今天高考语文的作文题是什么呢? 全国甲卷的题目是:人技术时间 人们因技术发展得以…

centos7 部署 Redis

从源安装Redis 一、安装Redis1.1 下载源文件1.2 编译源文件1.2.1 解压文件1.2.2 编译Redis 1.2.3 安装Redis1.2.4 启动 Redis 二、Redis设置2.1 缓存设置2.2 redis 环境优化2.3 安全设置 一、安装Redis 1.1 下载源文件 使用下列命令获取最新版的稳定Redis wget https://down…

Live800:智能客服有哪些未来发展趋势?

智能客服,也称智能问答系统,是一种利用机器学习、自然语言处理等技术实现自主询问、自主应答、自主维护的自动化系统。它们可以通过文字形式,为用户提供个性化、一对一的服务,避免了人工客服的人力成本和等待时间。 未来&#xff…

【Protobuf速成指南】enum类型的使用

文章目录 2.1枚举类型一、如何定义枚举类型?二、语法规范三、重定义问题四、enum类型相关函数五、Contact 2.1 改写六、总结 2.1枚举类型 本系列文章将通过对通讯录项目的不断完善,带大家由浅入深的学习Protobuf的使用。这是Contacts的2.1版本&#xff0…

【IMX6ULL驱动开发学习】02.IMX6ULL烧写Linux系统

由于我买的是正点原子的IMX6ULL阿尔法开发板,但是我是看韦东山老师视频学习的驱动 所以这里我烧录的方法是按照韦东山老师的课程来的 这里给出烧写Linux系统用到的工具 链接:https://pan.baidu.com/s/1bD-xxn3K8xQAVkJSaJmTzQ 提取码:af6w …

操作系统1-操作系统的基本特征和主要功能

目录 1、操作系统的目标和作用 (1)操作系统的目标 (2)操作系统的作用 2、操作系统的发展过程 (1)未配置操作系统的计算机系统 (2)单道批处理系统(Simple Batch Processing Sys…

企企通受邀出席多场高质量数智化活动,推进行业数字化升级转型

当前,数字经济已成为引领全球经济社会变革、推动我国经济高质量发展的重要引擎。Chat GPT的横空出世,宣告虚实无缝结合的跨场景体验时代即将到来。在云计算、大数据、人工智能、物联网等技术助推下,经过大量实践证明,数字化、智能…

工业RFID读写器选择指南

工业RFID读写器在工业领域上可提升自动化、现代化工业生产的效率,那么企业在选择工业读写器的时候,需要注重哪些方面,如何选择呢?以下是ANDEWELL给大家准备的工业RFID读写器选择指南! 1、根据应用场景选择 根据不同的应用场景,要…

【Docker安装部署Neo4j保姆级教程】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

大数据架构师岗位的主要职责概述(合集)

大数据架构师岗位的主要职责概述1 职责: 1.参与公司数据平台系统规划和架构工作,主导系统的架构设计和项目实施,确保项目质量和关键性能指标达成; 2.统筹和推进制造工厂内部数据系统的构建,搭建不同来源数据之间的逻辑关系&#x…

10.无监督学习

10.1 无监督学习的定义 监督学习:我们有一些列标签,然后用假设函数去拟合它 无监督学习:给出的数据不带任何标签。对于无监督学习来说,需要做的就是将数据输入到算法中,让算法找到一些隐含在数据中的结构,通…

IDEA代码提示设置

1. 打开File -> setting -> Editor -> Live Templates 2. 点击中间框框中的右侧""号,选择 Template Group, 命名为MyGroup(随便起名字) 3. 选中 MyGroup 点击右侧""号,选择Live Template Abbreviation 快捷提示 Description 描述 Template tex…

探究核心技术最佳实践,云原生OLAP论坛火热开启!

2023/06/11,09:00-12:30,在DataFunSummit 2023:OLAP引擎架构峰会上,由阿里云资深技术专家,实时数仓 Hologres 研发负责人姜伟华老师出品的云原生OLAP论坛讲邀请来自阿里云、亚马逊云科技、三七互娱、聚水潭、诺亚财富的…

相机成像模型(二)

相机内参/外参 将上述公式整合到一起,得到世界坐标系中点(Xw,Yw,Zw)映射到像素坐标系中点(u,v)的计算过程,同时给出相机内参、外参的定义如下。 相机外参:描述世界坐标系与相机坐标系之间的变换关系,可将世界坐标系中的点变换至相机坐标系;依赖世界坐标系的定义。 相机内参…

ubuntu18.04LTS编译openssl库进行rsa加密解密

一、下载openssl库源码,下载地址:https://ftp.openssl.org/source/ 我下载的版本: 二、编译源码 1、解压源码: tar zxvf openssl-1.1.1u.tar.gz 2、进入到解压后的文件夹中: cd openssl-1.1.1u/3、执行配置&#x…

6.数组、排序和查找|Java学习笔记

文章目录 数组数组使用注意事项和细节数组赋值机制 排序查找相关链接 数组 数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。 数据类型 数组名[] new 数据类型[大小];int a[] 或者 int[] a 都可以。 int[] a {1,2,3};// 二维数组的声明方式有…

ThreeJS教程:山脉地形高度可视化

推荐:将 NSDT场景编辑器加入你的3D工具链 3D工具集: NSDT简石数字孪生 山脉地形高度可视化 一个山脉地形的高度可视化,具体说就是地形不同的高度设置不同的颜色值。有多种方式,下面就举一个设置顶点颜色.attributes.color的例子 …

魏副业而战:夸克网盘拉新如何引流推广?3个方法,让你多赚5W+

我是魏哥,与其在家躺平,不如魏副业而战! 夸克网盘拉新项目,相信大家都知道吧。 提到拉新,很多人不屑一顾,认为拉人头的项目,没什么前途。 这个想法,魏哥是反对的。 任何项目的存…

阿里巴巴 2023 版(Java 岗)面试突击手册,Github 已标星42K

程序员作为一个自带“高薪多金”标签的职业,收入要高于市场的平均薪资,即便是在 2023 年,程序员的薪资依然保持居高不下。 据拉勾发布的《2022 程序员群体职场洞察报告》显示计算机专业的应届本科生起薪普遍高于其他职业的平均薪资水平。77%的本科毕业生…