MongoDB数据备份与迁移

MongoDB数据备份与迁移

参考链接:

  • https://www.cnblogs.com/you-men/p/14675290.html#_label2
  • https://docs.mongoing.com/guan-li/mongodb-backup-methods#shi-yong-mongodump-bei-fen
  • https://www.cnblogs.com/dbabd/p/13259147.html

MongoDB备份工具简介

  • mongoexport/mongoimport 导入/导出的是JSON格式或者CSV格式
  • mongodump/mongorestore 导入/导出的是BSON格式
  • JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性
  • JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引(后边版本支持恢复时保留索引信息了,但是目前网络上主流的博客都说不支持,有点NT),账户等其他基础信息。使用时应该注意
  • mongodump uses Extended JSON v2.0 (Canonical) format for the metadata files. To parse these files for restore, use mongorestore, which supports Extended JSON v2.0 (Canonical or Relaxed mode) format

MongoDB数据备份/还原(mongodump/mongorestore)

  • MongoDB环境: 6.0.3
  • 如果你的数据库比较小(<100GB),并想完全控制你的备份文件。那么 MongoDump 和 MongoRestore 就是最佳搭档。通过这两个 mongo 脚本命令你可以手动备份数据库或集合(collections)。Mongodump 会将将所有数据以 Binary JSON(BSON)格式转储到指定位置。 Mongorestore 可以将这些 BSON 文件来还原到你的数据库
  • 默认情况下 mongodump 不获取 local 数据库里面的内容
全库备份还原(针对副本集)
# 1.随便进入mongodb容器,一般情况下是-0为主节点
root@tcs-x-1 ~]# kubectl exec -it pdos-mongodb-0 -n pdos  /bin/bash# 2. 查询当前哪个节点为主节点(二个方式都可以), .primary为返回Json的字段
I have no name!@pdos-mongodb-0:/$ mongosh --port 27017 -u root -p rootPassword --authenticationDatabase admin --eval "rs.isMaster().primary"
pdos-mongodb-0.pdos-mongodb.pdos.svc.cluster.local:27017I have no name!@pdos-mongodb-0:/$ mongosh --port 27017 -u root -p rootPassword --authenticationDatabase admin --eval "rs.isMaster().ismaster"
true# 3. 进入主节点容器进行数据备份,这里可以看出pdos-mongodb-0为主节点,
# 3.1  -o 执行备份路径
# 3.2 --authenticationDatabase 指定认证库
# 3.3 --gzip 备份的时候同时压缩一下,备份的bson全部为压缩格式
mongodump --port 27017 -u root -p rootPassword --authenticationDatabase admin -o /tmp/mongodb-backup --gzip# 4. 将容器内的备份文件拷贝到新mongodb库下面(需要在主节点进行操作)
[root@tcs-x-1 ~]# kubectl cp pdos-mongodb-0:/tmp/mongodb-backup ./mongodb-backup -n pdos
tar: Removing leading `/' from member names[root@tcs-x-2 ~]# kubectl cp mongodb-backup pdos-mongodb-0:/tmp/mongodb-backup -n pdos# 5. 还原数据库(会还原所有库)
mongorestore --port 27017 -u root -p rootPassword --authenticationDatabase admin --gzip /tmp/mongodb-backup
单个库备份还原(针对副本集)
  • 针对pdos业务数据库迁移,这个待迁移的库用户账号什么的已使用bitnami chart部署时初始化好了
# 1.随便进入mongodb容器,一般情况下是-0为主节点
root@tcs-x-1 ~]# kubectl exec -it pdos-mongodb-0 -n pdos  /bin/bash# 2. 查询当前哪个节点为主节点(二个方式都可以), .primary为返回Json的字段
I have no name!@pdos-mongodb-0:/$ mongosh --port 27017 -u root -p rootPassword --authenticationDatabase admin --eval "rs.isMaster().primary"
pdos-mongodb-0.pdos-mongodb.pdos.svc.cluster.local:27017I have no name!@pdos-mongodb-0:/$ mongosh --port 27017 -u root -p rootPassword --authenticationDatabase admin --eval "rs.isMaster().ismaster"
true# 3. 查询主节点目前有哪些库
I have no name!@pdos-mongodb-0:/tmp$ ·
admin     140.00 KiB
config    360.00 KiB
local     207.60 MiB
tud_pdos  814.39 MiB# 4. 进入主节点容器进行数据备份,这里可以看出pdos-mongodb-0为主节点,
# 4.1  -o 执行备份路径
# 4.2 --authenticationDatabase 指定认证库
# 4.3 --gzip 备份的时候同时压缩一下,备份的bson全部为压缩格式
# 4.4 -d 备份哪个数据库
mongodump --port 27017 -u root -p rootPassword --authenticationDatabase admin -d tud_pdos -o /tmp/mongodb-backup --gzip# 4. 将容器内的备份文件拷贝到新mongodb库下面(需要在主节点进行操作)
[root@tcs-x-1 ~]# kubectl cp pdos-mongodb-0:/tmp/mongodb-backup ./mongodb-backup -n pdos
tar: Removing leading `/' from member names[root@tcs-x-2 ~]# kubectl cp mongodb-backup pdos-mongodb-0:/tmp/mongodb-backup -n pdos# 移除pdos生成db
mongosh --port 27017 -u root -p rootPassword --authenticationDatabase admin --eval "db.getSiblingDB('tud_pdos').dropDatabase()"
{ ok: 1, dropped: 'tud_pdos' }# 5. 还原数据库,还原tud_pdos数据库下所有的collection
# 5.1 --nsInclude 还原tud_pod数据库下面所有的collection
# 5.2 --drop 在导入前,删除每个collection,不是迁移场景请勿使用该参数
# 5.3 --keepIndexVersion 阻止mongorestore还原时升级已存在的索引版本
# 5.4 --maintainInsertionOrder 维持插入的顺序,保证_id索引是一致的(理论上),选项从版本4.2开始引入,如果指定该选项,mongorestore在还原导入文档时以实际导出时的插入顺序一致,这其中包括批量写文档的顺序以及在批量中文档的插入顺序,在早期版本中只能保证批量写文档的顺序。如果指定该选项同时也指定了选项--stopOnError和设置选项
# 5.5 --stopOnError 遇到错误时终止
# 5.6 --preserveUUID 保留collection的UUID
mongorestore --port 27017 -u root -p rootPassword --authenticationDatabase admin  --nsInclude 'tud_pdos.*' --keepIndexVersion --maintainInsertionOrder --stopOnError --preserveUUID --drop --gzip /tmp/mongodb-backup# 6. 验证_ID是否一致

MongoDB迁移后数据校验

# 数据校验,目前数据校验主要分三个部分判断两个数据库的表数量是否一致判断两个数据库每个表中的数据量是否一致判断两个数据库每个表的索引是否一致判断两个数据库中每个表的前 10 条数据是否一致

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

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

相关文章

Rust 的 Arc<Mutex<T>> 的用法示例源代码

在 Rust 中&#xff0c;Arc<Mutex<T>> 是一种组合类型&#xff0c;它结合了 Arc&#xff08;原子引用计数&#xff09;和 Mutex&#xff08;互斥锁&#xff09;。Arc 用于在多个所有者之间共享数据&#xff0c;而 Mutex 用于确保在任意时刻只有一个线程可以访问被保…

js使用canvas实现图片鼠标滚轮放大缩小拖拽预览,显示像素坐标,显示像素值

html代码 todo 实现画矩形框&#xff0c;圆形roi <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title&…

单元测试开发必不可少的一项工作,C#怎么来写单元测试

单元测试在开发过程中非常重要&#xff0c;写单元测试有几个重要的理由&#xff1a; 确保代码质量和稳定性&#xff1a; 单元测试可以帮助你验证代码的正确性。通过编写测试用例&#xff0c;你可以确保代码按照预期的方式工作&#xff0c;并且在进行重构或修改时不会破坏原有的…

JMeter 面试题及答案整理,最新面试题

JMeter中如何进行性能测试的规划和设计&#xff1f; 进行JMeter性能测试的规划和设计主要遵循以下几个步骤&#xff1a; 1、确定测试目标&#xff1a; 明确性能测试的目的和目标&#xff0c;比如确定要测试的系统性能指标&#xff08;如响应时间、吞吐量、并发用户数等&#…

zookeeper快速入门一:zookeeper安装与启动

本文是zookeeper系列之快速入门中的第一篇&#xff0c;欢迎大家观看与指出不足。 写在前面&#xff1a; 不影响教程&#xff0c;笔者安装zookeeper用的是WSL(windows下的linux子系统&#xff09;&#xff0c;当然你想直接在windows上用zookeeper也是可以的。 如果你也想用ws…

怎么判断发票扫描OCR软件好用不好用?

发票扫描OCR&#xff08;Optical Character Recognition&#xff09;是一种将纸质发票上的文字、数字等信息转化为可编辑的文本格式的技术。在现代企业中&#xff0c;随着数字化转型的推进&#xff0c;发票扫描OCR技术变得越来越重要。然而&#xff0c;面对市场上众多的发票扫描…

spring boot集成redis实现共享存储session

spring boot集成redis实现共享存储session redis实现共享存储session 首先下载redis,我下载的版本是5.0.14,目前官网貌似找不到5.x版本&#xff0c;可以自行去网上寻找。我这里的springboot版本是2.6.4引入redis依赖 <!-- https://mvnrepository.com/artifact/org.spring…

重拾C++之菜鸟刷算法第13篇---回溯算法

子集 知识点 子集问题中&#xff0c;不能包含重复子集&#xff0c;那么就需要startIndex来防止重复取值 题目 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任…

Android 设计模式观察者

Java观察者模式实现观察者模式的接口Observer和目标接口Subject,并实现了一个具体的目标类WeatherData。 同时,还实现了一个观察者类CurrentConditionsDisplay,它在目标类注册后,会在测量变化时接收到更新,并打印当前状况。最后在main函数中,我们创建了目标类的实例,并设…

十、软考-系统架构设计师笔记-软件架构演化和维护

1、软件架构演化 软件架构的演化和维护的目的是为了使软件能够适应环境的变化而进行的纠错性修改和完善性修改。软件架构的演化和维护过程是一个不断迭代的过程&#xff0c;通过演化和维护&#xff0c;软件架构逐步得到完善&#xff0c;以满足用户需求。软件架构的演化就是软件…

校园闲置物品交易网站 |基于springboot框架+ Mysql+Java+Tomcat的校园闲置物品交易网站设计与实现(可运行源码+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 用户功能模块 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen…

【NLP笔记】文本分词、清洗和标准化

文章目录 文本分词中文分词英文分词代码示例 文本清洗和标准化 文本分词 参考文章&#xff1a;​一文看懂NLP里的分词&#xff08;中英文分词区别3 大难点3 种典型方法&#xff09;; 文本分词处理NLP的基础&#xff0c;先通过对文本内容进行分词、文本与处理&#xff08;无用标…

Rocky Linux - Primavera P6 EPPM 安装及分享

引言 继上一期发布的Redhat Linux版环境发布之后&#xff0c;近日我又制作了基于Rocky Enterprise Linux 的P6虚拟机环境&#xff0c;同样里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机&#xff0c;请先与Oracle Primav…

Day48| 121 买卖股票的最佳时机 122 买卖股票的最佳时机II

目录 121 买卖股票的最佳时机 122 买卖股票的最佳时机II 121 买卖股票的最佳时机 class Solution { public:int maxProfit(vector<int>& prices) {int len prices.size();//dp[i] 表示当前的最大利润vector<vector<int>> dp(len, vector<int>…

算法学习(持续更新中)

时间复杂度 一个操作如果和样本的数据量没有关系&#xff0c;每次都是固定时间内完成的操作&#xff0c;叫做常数操作。 时间复杂度为一个算法流程中&#xff0c;常数操作数量的一个指标。常用O&#xff08;读作big O&#xff09;来表示。具体来说&#xff0c;先要对一个算法…

AI - 支持向量机算法

&#x1f9e8;概念 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种强大的机器学习算法&#xff0c;主要用于解决二分类问题。 SVM的核心思想是找到一个超平面&#xff0c;这个超平面能够最好地将数据分为两类&#xff0c;即在保证分类准确的情况下&am…

Hive SQL必刷练习题:同时在线人数问题(*****)

问题描述&#xff1a; 思路&#xff1a; ​ 因为有进直播间时间&#xff0c;和出直播间人数。所以我可以统计&#xff0c;进来一个是不是人数就会加1&#xff0c;出去一个&#xff0c;人数就会减1。 ​ 所以可以给进直播间的时间标记一个1&#xff0c;出直播间的时间标记一个…

【机器学习-02】矩阵基础运算---numpy操作

在机器学习-01中&#xff0c;我们介绍了关于机器学习的一般建模流程&#xff0c;并且在基本没有数学公式和代码的情况下&#xff0c;简单介绍了关于线性回归的一般实现形式。不过这只是在初学阶段、为了不增加基础概念理解难度所采取的方法&#xff0c;但所有的技术最终都是为了…

sparksql简介

什么是sparksql sparksql是一个用来处理结构话数据的spark模块&#xff0c;它允许开发者便捷地使用sql语句的方式来处理数据&#xff1b;它是用来处理大规模结构化数据的分布式计算引擎&#xff0c;其他分布式计算引擎比较火的还有hive&#xff0c;map-reduce方式。 sparksql…

GUROBI之数学启发式算法Matheuristics

参考运小筹的帖子&#xff1a;优化求解器 | Gurobi 数学启发式算法&#xff1a;参数类型与案例实现 - 知乎 (zhihu.com) 简言之&#xff0c;数学启发式是算法就是数学规划和启发式算法的融合&#xff0c;与元启发式算法相比&#xff0c;数学启发式算法具有更强的理论性。 在GUR…