一、备份与恢复方案
mongodump是MongoDB官方提供的备份工具,它可以从MongoDB数据库读取数据,并生成BSON文件,mongodump适合用于备份和恢复数据量较小的MongoDB数据库, 不适用于大数据量备份。
默认情况下mongodump不获取local数据库里面的内容。mongodump仅备份数据库中的文档,不备份索引,所以我们还原后,需要重新生成索引。 mongodump备份过程中会对mongod服务的性能产生影响,我们建议在业务低峰期进行操作。如果我们备份的数据,大于系统内存,我们备份的时候容易出现错误。
查阅:Mongodb原生导入导出工具对比
二、备份与恢复参数
2.1、mongodump参数详解
说明:这里主要介绍mongodump常用参数。
general options:
      --help                                       输出帮助说明
      --version                                    输出版本号
verbosity options:
  -v, --verbose=<level>                            增加备份过程中日志详细程序,例如 -vvvv 打的日志最多
      --quiet                                      备份过程中不输出日志
connection options:
  -h, --host=<hostname>                            连接地址 (setname/host1,host2 for replica sets)
      --port=<port>                                端口号 可以 --host hostname:port(can also use --host hostname:port)
authentication options:
  -u, --username=<username>                        用户名
  -p, --password=<password>                        密码
      --authenticationDatabase=<database-name>     指定验证库
      --authenticationMechanism=<mechanism>        指定验证机制
namespace options:
  -d, --db=<database-name>                         指定库名
  -c, --collection=<collection-name>               指定集合名称
output options:
  -o, --out=<directory-path>                       备份输出到哪个目录 (defaults to 'dump')
      --gzip                                       压缩备份文件
      --oplog                                      备份oplog完成一致性快照备份
      --archive=<file-path>                        备份成一个归档文件,不能和 -o 参数同时使用
      --dumpDbUsersAndRoles                        备份数据库的用户、角色信息
      --excludeCollection=<collection-name>        过滤掉哪些集合,多个集合,需要使用多个--excludeCollection 参数
  -j, --numParallelCollections=                    并行备份线程个数 (4 by default)
 
2.2、mongorestore参数详解
说明:这里主要介绍mongorestore常用参数。
general options:
      --help                                      打印帮助信息
      --version                                   打印版本号
verbosity options:
  -v, --verbose=<level>                           增加备份过程中日志详细程序,例如 -vvvv 打的日志最多
      --quiet                                     备份过程中不输出日志
connection options:
  -h, --host=<hostname>                           连接地址 (setname/host1,host2 for replica sets)
      --port=<port>                               端口号 可以 --host hostname:port(can also use --host hostname:port)
authentication options:
  -u, --username=<username>                       用户名
  -p, --password=<password>                       密码
      --authenticationDatabase=<database-name>    指定验证库
      --authenticationMechanism=<mechanism>       指定验证机制
namespace options:
  -d, --db=<database-name>                        如果不指定 -d 参数,会从备份目录中获取库名称,导入单表时可以指定导入具体库
  -c, --collection=<collection-name>              如果不指定 -c 参数,会从备份目录中获取集合名称,导入单表时可以指定导入集合名称
input options:
      --objcheck                                  在插入前检查记录有效性
      --oplogReplay                               恢复数据后,重放oplog
      --oplogLimit=<seconds>[:ordinal]            only include oplog entries before the provided Timestamp
      --archive=<filename>                        从指定文件进行恢复,如果未指定文件,则从标准输入中进行恢复
      --restoreDbUsersAndRoles                    r恢复指定数据库的用户和角色信息
      --dir=<directory-name>                      指定恢复目录
      --gzip                                      从压缩文件中进行恢复
restore options:
      --drop                                      导入集合前先删掉集合,不会删除不会备份中的集合
      --keepIndexVersion                          防止在恢复数据过程中升级索引到最新版本
  -j, --numParallelCollections=                   并行恢复线程数,默认为4 (4 by default)
      --stopOnError                               强制mongostore 在遇到错误时停止还原
 
三、备份与恢复操作
3.1、环境信息
| 主机IP | 操作系统 | 软件版本 | 
|---|---|---|
| 192.168.1.191 | Centos7.6 | Mongodb3.2.22 | 
3.2、备份操作
说明:当前环境的mongodb服务是采用容器部署的,这里的/data/backup是指容器中的备份目录,备份文件会存放在这个目录下,你也可以将容器中的/data/backup目录映射为当前宿主机上的某一目录。
[root@localhost ~]# docker exec mongo-single bash -c 'mongodump --host 127.0.0.1:27017 -ulolaage -p123456 -d possecu -o /data/backup --gzip'
 
 如下图所示:
 
说明:
--host:指定ip和端口
-u:用户
-p:密码
-d:指定备份的库名
-o: 备份输出到哪个目录
--gzip:从压缩文件中进行恢复
--drop:恢复数据之前删除原来数据库数据,避免数据重复
 
3.2、恢复操作
[root@localhost ~]# docker exec mongo-single bash -c 'mongorestore --host 127.0.0.1:27017 -ulolaage -p123456 -d possecu --dir /data/backup/possecu --gzip --drop ' 
 
 如下图所示:
 
  说明:
--host:指定ip和端口
-u:用户
-p:密码
-d:指定恢复的库名
--dir: 指定恢复目录
--gzip:压缩备份文件
 
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:Linux运维实战总结















![[附源码]计算机毕业设计JAVA中小企业人事管理系统](https://img-blog.csdnimg.cn/8a97c84c88684ba5b41554b79950a139.png)



