momo's Blog.

[复习]Mongo备份恢复相关操作

字数统计: 671阅读时长: 3 min
2022/07/04 Share

前言

再次记录和复习一下Mongo备份相关的操作

Mongo 数据库工具

下载地址: https://www.mongodb.com/try/download/database-tools

使用mongodump备份数据

官方文档地址: https://www.mongodb.com/docs/database-tools/mongodump/

连接实例

不管是分片还是副本, 都可以通过 --uri 使用ConnectionStringURI来连接实例.

mongo 默认会连接主节点

1
mongodump --uri="mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myReplicaSetName" [additional options]

100.0版本起的Mongodump可以直接通过位置参数, 而不需要指定--uri选项

1
mongodump mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

指定数据库

Mongo使用 --db=<database>, -d=<database> 指定要备份的数据库, 如果不指定,则备份所有。

也可以通过 ConnectionStringURI 的方式指定数据库, 但会和上面的选项冲突。

1
mongodb://bb:3717,sa:3717/db-name

压缩,指定目录,归档

--gzip 使用gzip压缩
--out=<path>, -o=<path> 将数据库以bson的格式写入指定的目录, 默认为dump
--archive=<file> 指定存档文件, 不能与-o 一起使用

备份一个指定的collection

1
mongodump mongodb://bb:3717,sa:3717/db-name  --gzip --collection=records

压缩和归档


压缩

1
mongodump mongodb://bb:3717,sa:3717/db-name --gzip -o dir_name

归档

1
mongodump mongodb://bb:3717,sa:3717/db-name --gzip --archive=test.20150715.gz

复制和恢复数据库

  1. 使用mongodump备份数据库到archive mongodump-test-db

    1
    mongodump mongodb://bb:3717,sa:3717/db-name --gzip --archive=mongodump-test-db
  2. 使用mongorestore从存档恢复 (并且更改数据库名称) –nsForm: –nsTo

    1
    mongorestore  mongodb://bb:3717,sa:3717  --archive="mongodump-test-db" --nsFrom='db-name.*' --nsTo='examples.*'

指定配置文件

使用--config=<filename>来指定配置文件

配置文件格式

1
2
3
password: <password>
uri: mongodb://mongodb0.example.com:27017
sslPEMKeyPassword: <password>

使用mongorestore恢复数据

从归档文件中恢复

  • --archive 指定备份的归档文件
  • --gzip 如果归档文件备份时指定了这个, 则恢复时也需要指定
  • --nsInclude 指定要恢复的ns, 格式为:<database>.<collection>
  • --drop 恢复前删除原来的数据。PS: 只会删除要恢复的数据
  • --dryRun 空跑, 不实际操作,一般检查语法。

恢复指定的collocation

1
mongorestore mongodb://s-aaaaaaaaaa.mongodb.rds.aliyuncs.com:3717,s-bbbbbbbbb.mongodb.rds.aliyuncs.com:3717  --archive=dbdump-20220704.gz  --gzip  --nsInclude=my-db.user --drop --dryRun

恢复my-db

1
mongorestore mongodb://s-aaaaaaaaaa.mongodb.rds.aliyuncs.com:3717,s-bbbbbbbbb.mongodb.rds.aliyuncs.com:3717  --archive=dbdump-20220704.gz  --gzip  --nsInclude=my-db.* --drop --dryRun

从bson目录中恢复

恢复指定的collocation

1
mongorestore mongodb://s-aaaaaaaaaa.mongodb.rds.aliyuncs.com:3717,s-bbbbbbbbb.mongodb.rds.aliyuncs.com:3717 --gzip  --nsInclude=my-db.user --drop --dryRun dump/

恢复my-db

1
mongorestore mongodb://s-aaaaaaaaaa.mongodb.rds.aliyuncs.com:3717,s-bbbbbbbbb.mongodb.rds.aliyuncs.com:3717 --gzip  --nsInclude="my-db.*" --drop --dryRun dump/

参考

  1. mongodump 示例
  2. mongorestore 示例
CATALOG
  1. 1. 前言
  2. 2. Mongo 数据库工具
    1. 2.1. 使用mongodump备份数据
      1. 2.1.1. 连接实例
      2. 2.1.2. 指定数据库
      3. 2.1.3. 压缩,指定目录,归档
      4. 2.1.4. 备份一个指定的collection
      5. 2.1.5. 压缩和归档
      6. 2.1.6. 复制和恢复数据库
      7. 2.1.7. 指定配置文件
    2. 2.2. 使用mongorestore恢复数据
      1. 2.2.1. 从归档文件中恢复
      2. 2.2.2. 从bson目录中恢复
  3. 3. 参考