前言
再次记录和复习一下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 |
复制和恢复数据库
使用mongodump备份数据库到archive
mongodump-test-db1
mongodump mongodb://bb:3717,sa:3717/db-name --gzip --archive=mongodump-test-db
使用mongorestore从存档恢复 (并且更改数据库名称) –nsForm: –nsTo
1
mongorestore mongodb://bb:3717,sa:3717 --archive="mongodump-test-db" --nsFrom='db-name.*' --nsTo='examples.*'
指定配置文件
使用--config=<filename>来指定配置文件
配置文件格式
1 | password: <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/ |