【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

评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿龙先生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值