当前位置: 首页 > news >正文

基于k8s环境下mongodb备份恢复实战

#作者:Unstopabler

文章目录

  • 1.备份恢复方案
    • 1.1.备份恢复方案参考
    • 1.2.备份过程示例
      • 1.2.1.第一种备份mongodb数据方法
      • 1.2.2.第二种备份mongodb数据方法
    • 1.3.恢复mongodb数据示例:
      • 1.3.1.第一种恢复mongodb数据方法
      • 1.3.2.第二种恢复mongodb数据方法

1.备份恢复方案

1.1.备份恢复方案参考

以下为备份恢复方案,可作为参考,如下表格
在这里插入图片描述

1.2.备份过程示例

1.2.1.第一种备份mongodb数据方法

生产环境的备份方案如下:
一是备份的时候,尽量在业务减少的时候备份
二是通过mongodump工具带上参数–archive,可将数据文件备份到主机节点上。

kubectl exec -i mongo-0 -n mongodb -- \mongodump --host localhost --db testdb --archive --gzip \> ./$(date +%Y%m%d).archive.gz

执行结果生成20251015.archive.gz文件,如下图

在这里插入图片描述

1.2.2.第二种备份mongodb数据方法

生产环境的备份方案如下:
一是备份的时候,尽量在业务减少的时候备份
二是在容里创建指定的备份目录,
三是通过mongodump进行备份到指定的目录里
四是将备份文件从容器中拷贝到本地指定节点或者存储上
五清理掉容器里旧备份数据
六检验备份文件是否存在,主要检查.bson.gz和.json.gz文件

1.2.2.1.第一步先创建目录
先创建一个要备份数据的目录

[root@k8s-master ~]# kubectl exec -it mongo-0 -n mongodb -- mkdir -p /data/backup

1.2.2.2.第二步执行备份

[root@k8s-master ~]# kubectl exec -it mongo-0 -n mongodb -- mongodump --host localhost --gzip --out /data/backup

在这里插入图片描述

说明:

kubectl exec -it mongo-0 -n mongodb:进入 mongo-0 Pod
–host localhost:在 Pod 内部直接访问本地 mongod 实例
–gzip:压缩备份文件,节省空间
/data/backup:备份目录,需确保该路径存在或提前创建
1.2.2.3.第三步查看备份的文件
在这里插入图片描述

**1.2.2.4.**第四步,将备份文件cp到主机上,并查看备份文件是否存在

[root@k8s-master ~]# kubectl cp mongodb/mongo-0:/data/backup ./mongodb-backup-$(date +%Y%m%d)[root@k8s-master ~]# ls -R ./mongodb-backup-20251015/

在这里插入图片描述

看到两种.gz文件
一种是*.bson.gz为实际数据文件
一种是*.json.gz为元数据文件

注意:
mongodump 默认会生成大量小文件(每个集合一个 .bson 文件),
而这些文件必须先写入 Pod 的文件系统,无法通过标准输出到外部。
引入第二种备份方法

1.3.恢复mongodb数据示例:

1.3.1.第一种恢复mongodb数据方法

使用带 archive工具

kubectl exec -i mongo-0 -n mongodb -- \mongorestore \--host localhost:27017 \--db testdb \--archive \--gzip \
--drop
< backup.archive.gz

执行如下图:

在这里插入图片描述

登录验证,查看是否存在1000个数据
在这里插入图片描述

1.3.2.第二种恢复mongodb数据方法

以备份为.bson.gz和.json.gz的文件为主,不能以参数archive方式恢复。
第一步要将备份的文件拷贝到容器中,
第二步再执行如下命令,可以查看到finished restoring testdb.test恢复数据。

在这里插入图片描述

http://www.dtcms.com/a/544524.html

相关文章:

  • 申威ky10架构安装MongoDB 4.0.1(rpm包:mongodb-4.0.1-8.ky10.sw_64.rpm)详细步骤
  • 网站建设开发语言和使用工具it培训套路
  • Diffusion Model与视频超分(2):解读字节开源视频增强模型SeedVR2
  • Linux小课堂: 系统硬件资源管理与设备操作指南
  • ROS2核心概念之代码示例一
  • 工厂考勤系统选型参考:如何选出最合适的方案
  • 【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
  • Linux错误(7)接口处于Down状态不通告IPv6地址变更事件
  • 开发避坑指南(67):Maven引入iText7-core依赖失败解决方案
  • 北京南站地图建设公司简介怎么写
  • 镇江网站建设平台江苏企业展厅设计公司
  • 用JetBrains Rider开发C#应用程序指南
  • 快速创建Word箱单(2/2)
  • LangChain4j学习11:模型上下文协议 (MCP)
  • mysql线上主从集群设置
  • RK3568 11.0编译报错ld.lld: error: undefined symbol: rtkbt_cts_info
  • 南京大学LLM开发基础(四)MoE, LoRA, 数的精度 + MLP层实验
  • 机器学习-回归分析概述
  • 企业建设网站的主要作用网站seo搜索引擎优化怎么做
  • 微信小程序可以做电影网站吗安网多少钱
  • 计算机专业做网站的开题报告门户建设开源软件
  • js基础:08、构造函数(共享方法)、原型(prototype)、原型对象、(修改原型)toString方法、垃圾回收
  • 如何通过机器学习(如K-means、SVM、决策树)与深度学习(如CNN、LSTM)模型,进行全球气候变化驱动因素的数据分析与趋势预测
  • Docker篇6-项目app.py和flask_app.service配置和映射到docker中
  • 从零开始搭建 flask 博客(1)实验
  • 深入解析 Rust 解构模式:元组、结构体与枚举的精准拆解
  • 从零开始搭建 flask 博客实验(2)
  • 筑牢智算“地基”:华为以RAS理念重塑AIDC建设新模式
  • 跨网段耦合器助汽车零部件线实现PLC与MES跨网段互联
  • C#程序实现将Teradata的存储过程转换为Azure Synapse Dedicated SQL pool的存储过程