帮助中心/最新通知

质量为本、客户为根、勇于拼搏、务实创新

< 返回文章列表

【服务器相关】MongoDB 数据库基础 之 mongodb的备份与恢复

发表时间:2025-06-16 03:46:00 小编:主机乐-Yutio
物理备份

    任何数据库都离不开日常的备份与恢复,这二者是数据库安全的前提,MongoDB的备份与恢复方法一般而言都采用自带的工具来进行。

     在开始讲述备份之前,需要首先了解两个概念,一个是恢复点目标、一个叫恢复时间目标,下面我们分别来看:

  • 恢复点目标:

(也叫RPO,recovery point objective)

也就是数据可以恢复到哪个时间点,可以承受多少损失。

  • 恢复时间目标:

(也叫RTO,recover time objective),在发生故障的时候,数据库可以承受多长时间宕机。

有了这两个概念,就可以理解不同备份恢复方法可以满足的RPO和RTO是多少了。

来看备份工具:

Mongodump工具

在MongoDB中,mongodump工具通常用来做备份使用。它有如下特点:

1、可以对mongos和mongod进行操作

2、备份的是数据和数据结构,会以bson数据格式存储

3、不会备份索引,只会备份索引的元数据,只有在恢复的时候才会重建索引。

4、备份的过程中,mongodump会批量的将数据加载到内存中,该方法在数据量比较大的时候,会持续占用内存资源,会增加IO负载压力。

5、可以备份整个数据库、整个集合、部分集合内容

该工具的缺点:

1、仅仅适合备份小型的、或者单一数据库的备份

2、数据量大的时候,备份时间较长

关于Mongodump的命令使用方法,大家可以mongodump –help去查看,常用选项如下:

-p,–port:端口

-h,–host:IP地址

-d,–db:数据库

-c,–collection:备份的集合名称

-q,–query:备份数据的条件表达式

-o,–out:备份文件的存放位置

-u,–username:用户名

-p,–password:密码

–authenticationDataBase:认证数据库

具体的使用方法,下面有例子。

Mongorestore工具

   数据备份和数据恢复二者是不可分割的,因为数据的备份,本质上还是为了恢复准备的,如果备份的数据不能恢复,那么备份也就失去了意义。

    在MongoDB中,Mongorestore这个工具是用来做数据恢复的,数据恢复命令的常用参数如下:

与mongodump重复的部分不再赘述

-p,–port

-h,–host

-d,–db

-c,–collection

–dir:恢复文件存放的位置,如果指定了数据库文件夹或者集合文件,则只恢复当前数据库或者当前集合,如果没有指定,则恢复当前目录下所有备份数据。

–drop:恢复前会删除已有的数据库

-u,–user

-p,–password

–authenticationDatabase

下面来看样例:

数据备份举例

如果我们的备份进度处在中间位置,即:

    A库备份完成的时候,B库没有开始备份

此时分别写入A库和B库两个文档,则最终的备份结果中,A库的数据没有新增的数据,B库的数据有新增的数据,就会产生数据的不一致。为了解决这个问题,备份一般都使用锁定数据库或者停止实例的方法来解决。

    在MongoDB中,可以在从库上进行锁定或者停止实例的备份操作,不建议在线上环境使用MongoDB单库,因为这种情况,备份恢复将会成为一个瓶颈问题。

物理备份

    任何数据库都离不开日常的备份与恢复,这二者是数据库安全的前提,MongoDB的备份与恢复方法一般而言都采用自带的工具来进行。

     在开始讲述备份之前,需要首先了解两个概念,一个是恢复点目标、一个叫恢复时间目标,下面我们分别来看:

  • 恢复点目标:

(也叫RPO,recovery point objective)

也就是数据可以恢复到哪个时间点,可以承受多少损失。

  • 恢复时间目标:

(也叫RTO,recover time objective),在发生故障的时候,数据库可以承受多长时间宕机。

有了这两个概念,就可以理解不同备份恢复方法可以满足的RPO和RTO是多少了。

来看备份工具:

Mongodump工具

在MongoDB中,mongodump工具通常用来做备份使用。它有如下特点:

1、可以对mongos和mongod进行操作

2、备份的是数据和数据结构,会以bson数据格式存储

3、不会备份索引,只会备份索引的元数据,只有在恢复的时候才会重建索引。

4、备份的过程中,mongodump会批量的将数据加载到内存中,该方法在数据量比较大的时候,会持续占用内存资源,会增加IO负载压力。

5、可以备份整个数据库、整个集合、部分集合内容

该工具的缺点:

1、仅仅适合备份小型的、或者单一数据库的备份

2、数据量大的时候,备份时间较长

关于Mongodump的命令使用方法,大家可以mongodump –help去查看,常用选项如下:

-p,–port:端口

-h,–host:IP地址

-d,–db:数据库

-c,–collection:备份的集合名称

-q,–query:备份数据的条件表达式

-o,–out:备份文件的存放位置

-u,–username:用户名

-p,–password:密码

–authenticationDataBase:认证数据库

具体的使用方法,下面有例子。

Mongorestore工具

   数据备份和数据恢复二者是不可分割的,因为数据的备份,本质上还是为了恢复准备的,如果备份的数据不能恢复,那么备份也就失去了意义。

    在MongoDB中,Mongorestore这个工具是用来做数据恢复的,数据恢复命令的常用参数如下:

与mongodump重复的部分不再赘述

-p,–port

-h,–host

-d,–db

-c,–collection

–dir:恢复文件存放的位置,如果指定了数据库文件夹或者集合文件,则只恢复当前数据库或者当前集合,如果没有指定,则恢复当前目录下所有备份数据。

–drop:恢复前会删除已有的数据库

-u,–user

-p,–password

–authenticationDatabase

下面来看样例:

数据备份举例

如果我们的备份进度处在中间位置,即:

    A库备份完成的时候,B库没有开始备份

此时分别写入A库和B库两个文档,则最终的备份结果中,A库的数据没有新增的数据,B库的数据有新增的数据,就会产生数据的不一致。为了解决这个问题,备份一般都使用锁定数据库或者停止实例的方法来解决。

    在MongoDB中,可以在从库上进行锁定或者停止实例的备份操作,不建议在线上环境使用MongoDB单库,因为这种情况,备份恢复将会成为一个瓶颈问题。

以上就是MongoDB的备份与恢复的详细内容,更多关于MongoDB 备份与恢复的资料请关注其它相关文章!


联系我们
返回顶部