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

【MongoDB】mongoDB数据迁移

目录

一、MongoDB概述

1.1MongoDB简介

1.2 MongoDB应用场景

二、数据迁移

2.1任务场景

2.2服务器上备份数据

2.3恢复数据库


一、MongoDB概述


1.1MongoDB简介


MongoDB 是一个文档数据库(以 JSON 为数据模型),由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,数据格式是BSON ,一种类似 JSON 的二进制形式的存储格式,简称Binary JSON ,和 JSON 一样支持内嵌的文档对象和数组对象,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。大多数时候 Oracle 和 MySQL 能做的事情, MongoDB 都能做(包括 ACID 事务)。

SQL概念

MongoDB概念

数据库(database)

数据库(database)

表(table)

表(table)

行(row)

文档(document)

列(column)

字段(field)

索引(index)

索引(index)

主键(primary key)

_id(字段)

视图(view)

视图(view)

表连接(table joins)

聚合操作($lookup)

概念释义

  • 数据库( database ):最外层的概念,可以理解为逻辑上的名称空间,一个数据库包含多个不同名称的集合。
  • 集合( collection ):相当于 SQL 中的表,一个集合可以存放多个不同的文档。
  • 文档( document ):一个文档相当于数据表中的一行,由多个不同的字段组成。
  • 字段( field ):文档中的一个属性,等同于列( column )。
  • 索引( index ):独立的检索式数据结构,与 SQL 概念一致。
  • id :每个文档中都拥有一个唯一的 id 字段,相当于 SQL 中的主键( primary key )。
  • 视图( view ):可以看作一种虚拟的(非真实存在的)集合,与 SQL 中的视图类似。从 MongoDB
  • 聚合操作( $lookup ): MongoDB 用于实现 “ 类似 ” 表连接( tablejoin )的聚合操作符。

1.2 MongoDB应用场景


  • 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、 积分 等直接以内嵌文档的形式存储,方便查询、更新;
  • 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来;
  • 社交场景,使用 MongoDB 存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能;
  • 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析;
  • 视频直播,使用 MongoDB 存储用户信息、礼物信息等;
  • 大数据应用,使用云数据库 MongoDB 作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。

二、数据迁移


2.1任务场景

项目现场因为历史问题,MongoDB数据库部署在windows服务器。现在需要将MongoDB集合从windows服务器迁移到Linux。

方法

简要分析说明

ETL工具(kettle)

1、可以创建索引;

2、迁移过程可追溯;

3、集合名称、字段名有开发出错的风险;

4、大集合不适合全量一次性同步,需要分批次增量同步过去;

mongodump/mongorestore

1、迁移会保留索引和元数据;

2、适合全量备份迁移;

3、对于大集合导出导入效率较高;

4、会受限于网络速度

mongoexport/mongoimport

1、导出的文件可以是json、csv,可读性较高;

2、适合小数据量迁移

3、不会保留索引和元数据;

4、迁移效率较低;

compass工具

1、导出的文件可以是json、csv,可读性较高;

2、不需要写命令,不需要开发;

3、适合小数据量迁移;

4、不会保留索引和元数据;

5、迁移效率较低;

结合场景我们是一次性全量的同步,选择了mongodump/mongorestore

  • mongodump 把数据库内容导出为 BSON 文件
  • mongorestore 把 BSON 文件导入到新环境

2.2服务器上备份数据


连接服务器,我们 直接在目标Linux服务器上 连接 windows 上的monoDB进行数据文件备份。

# 在服务器上备份数据
mongodump \--host 10.11.102.xxx \--port 27017 \--username reid_aio \--password rCg3F4m#rjvehitS \--db ipvacloud_reid \--out ./backup

备份参数释 义:

场景

参数组合

说明

本地数据库

--db dbname --out /backup

最基础用法

远程数据库

--host 192.168.1.100 --port 27017

指定服务器

需要认证

--username user --password pwd --authenticationDatabase admin

生产环境常用

压缩备份

--gzip

节省空间

单个文件

--archive=backup.archive

方便传输

部分数据

--query '{"status":"active"}'

只备份活跃数据

直接在linux上安装好的mongoDB恢复全部数据库

# 直接在linux上安装好的mongoDB恢复全部数据库
mongorestore ./backup

恢复参数释义

场景

参数组合

说明

基础恢复

--db dbname /backup/source

恢复到指定数据库

覆盖数据

--drop

先删除现有数据

模拟运行

--dryRun

看看会做什么,不实际执行

压缩文件

--gzip

处理压缩备份

归档文件

--archive=backup.archive

从单文件恢复

重命名库

--db new_name /backup/old_name

恢复时改名


https://blog.csdn.net/qq_36435177/article/details/148748145

https://blog.csdn.net/sinat_27933301/article/details/114545425

https://blog.csdn.net/qq_67832732/article/details/135567678

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

相关文章:

  • 《C++多态入门:轻松理解虚函数与多态编程》
  • 虚拟化范式跃迁中的生命周期隐喻与命令哲学——解构Docker容器从抽象实体到可控资源的数字化生存法则
  • OpenLayers地图交互 -- 章节八:平移交互详解
  • AES+RSA 实现混合加密
  • 命名实体识别技术NER
  • 网络验证 一键加密 一键接入验证 加壳加密数盾加盾
  • JDBC组件
  • StandardScaler,MinMaxScaler等四个内置归一化函数学习
  • pandawiki 无法获取模型列表
  • openEuler2403安装宝塔面板
  • Altium Designer(AD) PCB铺铜
  • 解决Django长时间操作中的MySQL连接超时问题
  • 样本量估计原理与python代码实现
  • 0v0.pro 深度评测、 AI 助手篇、80+模型 free
  • ego(9)---ego-planner中的动力学仿真
  • 2025年9月第3周AI资讯
  • ETL详解:从核心流程到典型应用场景
  • SQL查询基础常用攻略
  • 数据结构二叉树(C语言)
  • Domain、BO、BIZ 三层的协作关系
  • 【从小白到精通之数据库篇】Mysql--连接与子查询
  • C++ 函数详解:从基础到高级应用
  • HTML打包的EXE程序无法关闭?
  • openEuler2403安装Ollama
  • 苍穹外卖项目实战(day11-1)-记录实战教程、问题的解决方法以及完整代码
  • 【Linux命令从入门到精通系列指南】mv 命令详解:文件与目录移动、重命名及安全操作的终极实战手册
  • 【C语言】深入解析阶乘求和算法:从代码实现到数学原理
  • 图形库的基础--svg
  • 令牌桶算法
  • FPGA开发环境配置