【MongoDB】mongoDB数据迁移

目录

一、MongoDB概述

1.1MongoDB简介

[1.2 MongoDB应用场景](#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

相关推荐
小猿姐17 小时前
闲谈KubeBlocks For MongoDB设计实现
mongodb·云原生·kubernetes
盒马coding19 小时前
第19节-非规范化数据类型-Composite-types
数据库·postgresql
-雷阵雨-19 小时前
MySQL——桥梁JDBC
数据库·mysql·oracle
亿坊电商19 小时前
在PHP框架里如何进行数据库连接?
数据库·oracle·php
满昕欢喜19 小时前
SQL Server从入门到项目实践(超值版)读书笔记 28
数据库·sql·sqlserver
楚韵天工20 小时前
宠物服务平台(程序+文档)
java·网络·数据库·spring cloud·编辑器·intellij-idea·宠物
李白你好21 小时前
一款专业的多数据库安全评估工具,支持 **PostgreSQL、MySQL、Redis、MSSQL** 等多种数据库的后渗透操作
数据库·mysql·postgresql
恋红尘1 天前
Mysql
数据库·mysql
paishishaba1 天前
数据库设计原则
数据库
曹牧1 天前
oracle:NOT IN
数据库·oracle