MongoDB备份恢复工具mongodump、mongorestore

生成测试数据

bash 复制代码
(1)创建测试数据,创建备份文件存放目录
mkdir /data/backup
​
(2)创建订单表
use product
for(i = 1; i <= 1000; i++) {
    db.order.insertOne({
        "order_id": "ORD" + i,
        "customer": "用户" + (i % 50 + 1),
        "amount": Math.floor(Math.random() * 1000 + 100),
        "status": ["待付款", "已付款", "已发货", "已完成", "已取消"][Math.floor(Math.random() * 5)],
        "create_time": new Date()
    });
}

(3)创建用户信息表
use user
for(i = 1; i <= 1000; i++) {
    db.userinfo.insertOne({
        "user_id": i,
        "username": "user" + i,
        "age": Math.floor(Math.random() * 50 + 18),  // 18-67岁
        "email": "user" + i + "@example.com",
        "register_date": new Date(2023, Math.floor(Math.random() * 12), Math.floor(Math.random() * 28 + 1))
    });
}

1.备份工具mongodump

1.1 选项说明

分类 选项 描述
常规选项 --help 打印使用说明
--version 打印工具版本并退出
--config= 配置文件路径
详细级别选项 -v, --verbose= 更详细的日志输出(可多次使用增加详细程度,如-vvvvv,或指定数值如--verbose=N)
--quiet 隐藏所有日志输出
连接选项 -h, --host= 要连接的MongoDB主机(副本集使用setname/host1,host2格式)
--port= 服务器端口(也可使用--host hostname:port格式)
认证选项 -u, --username= 认证用户名
-p, --password= 认证密码
--authenticationDatabase= 存储用户凭据的数据库
--authenticationMechanism= 使用的认证机制
--awsSessionToken= 通过AWS IAM认证的会话令牌
命名空间选项 -d, --db= 要使用的数据库
-c, --collection= 要使用的集合
URI选项 --uri=mongodb-uri MongoDB URI连接字符串
查询选项 -q, --query= 查询过滤器,v2扩展JSON字符串,如'{"x":{"$gt":1}}'
--queryFile= 包含查询过滤器文件路径(v2扩展JSON)
--readPreference=
--forceTableScan 强制表扫描(不使用$snapshot或提示_id)。已弃用,因为这是WiredTiger的默认行为
输出选项 -o, --out= 输出目录,或'-'表示标准输出(默认:'dump')
--gzip 使用Gzip压缩存档或集合输出
--oplog 在非分片集群的副本集上进行时间点快照
--archive= 转储为存档到指定路径。如果指定标志但无值,存档将写入标准输出
--dumpDbUsersAndRoles 转储指定数据库的用户和角色定义
--excludeCollection= 要从转储中排除的集合(可多次指定以排除更多集合)
--excludeCollectionsWithPrefix= 从转储中排除具有给定前缀的所有集合(可多次指定以排除更多前缀)
-j, --numParallelCollections= 并行转储的集合数量
--viewsAsCollections 将视图作为普通集合转储其生成的数据,忽略标准集合

1.2 例子

1.2.1 全库备份

bash 复制代码
[root@MongoDB-01 ~]# mongodump  -uroot -p123 --port 27017 --authenticationDatabase admin -o /data/backup
或
[root@MongoDB-01 ~]# mongodump --uri="mongodb://root:123@localhost:27017" --authenticationDatabase admin -o /data/backup

1.2.2 备份指定库

json 复制代码
mongodump --host=localhost --port=27017 -uroot -p123 --authenticationDatabase admin --db=product -o /data/backup/product

1.2.3 备份指定集合

json 复制代码
mongodump --host=localhost --port=27017 -uroot -p123 --authenticationDatabase admin --db=product --collection=orders -o /data/backup

1.2.4 压缩备份

bash 复制代码
[root@MongoDB-07 backup]# mongodump  --host=127.0.0.1 -uroot -p123 --port=27017 --authenticationDatabase=admin -o /data/backup --gzip

1.2.5 带oplog的备份

json 复制代码
[root@MongoDB-07 backup]# mongodump  --host=127.0.0.1 --port=27017 -uroot -p123 --authenticationDatabase=admin -o /data/backup --gzip --oplog

2.恢复工具mongorestore

2.1 选项说明

分类 选项 描述
常规选项 --help 打印使用说明
--version 打印工具版本并退出
--config= 配置文件路径
详细级别选项 -v, --verbose= 更详细的日志输出(可多次使用增加详细程度,如-vvvvv,或指定数值如--verbose=N)
--quiet 隐藏所有日志输出
连接选项 -h, --host= 要连接的MongoDB主机(副本集使用setname/host1,host2格式)
--port= 服务器端口(也可使用--host hostname:port格式)
认证选项 -u, --username= 认证用户名
-p, --password= 认证密码
--authenticationDatabase= 存储用户凭据的数据库
--authenticationMechanism= 使用的认证机制
--awsSessionToken= 通过AWS IAM认证的会话令牌
命名空间选项 -d, --db= 要使用的数据库
-c, --collection= 要使用的集合
命名空间选项 --nsExclude= 排除匹配的命名空间
--nsInclude= 包含匹配的命名空间
--nsFrom= 重命名匹配的命名空间,必须与nsTo匹配
--nsTo= 重命名匹配的命名空间,必须与nsFrom匹配
URI选项 --uri=mongodb-uri MongoDB URI连接字符串
输入选项 --objcheck 插入前验证所有对象
--oplogReplay 用于恢复非分片集群的副本集的时间点快照
--oplogLimit=[:ordinal] 仅包含在提供的Timestamp之前的oplog条目
--oplogFile= 用于重放oplog的oplog文件
--archive= 从指定的存档文件恢复转储。如果指定标志但无值,则从stdin读取存档
--restoreDbUsersAndRoles 恢复给定数据库的用户和角色定义
--dir= 输入目录,使用'-'表示stdin
--gzip 解压缩gzip压缩的输入
恢复选项 --drop 导入前删除每个集合
--dryRun 查看摘要而不导入任何内容。建议与详细模式一起使用
--writeConcern= 写关注选项,如--writeConcern majority,--writeConcern '{w: 3, wtimeout: 500, fsync: true, j: true}'
--noIndexRestore 不恢复索引
--convertLegacyIndexes 移除无效的索引选项并重写遗留选项值(例如,true变为1)
--noOptionsRestore 不恢复集合选项
--keepIndexVersion 不更新索引版本
--maintainInsertionOrder 按照输入源中的出现顺序恢复文档。默认情况下,插入将以任意顺序执行。设置此标志还会启用--stopOnError的行为,并将NumInsertionWorkersPerCollection限制为1
-j, --numParallelCollections= 并行恢复的集合数量
--numInsertionWorkersPerCollection= 每个集合并发运行的插入操作数量
--stopOnError 在插入过程中遇到任何错误时停止。默认情况下,mongorestore会尝试继续处理文档验证和DuplicateKey错误,但启用此选项后,工具将停止。即使启用此选项,在遇到错误后仍可能插入少量文档;使用--maintainInsertionOrder可在错误后立即停止
--bypassDocumentValidation 绕过文档验证
--preserveUUID 保留原始集合UUID(默认关闭,需要drop)
--fixDottedHashIndex 启用时,目标上所有带点字段的哈希索引将被创建为单字段升序索引

2.2 例子

2.2.1 恢复全备

json 复制代码
#(1)恢复未压缩的全备
mongorestore --host=127.0.0.1 --port=27017 -uroot -p123 --authenticationDatabase=admin  --dir=/data/backup/ --drop 

#(2)恢复压缩的全备
mongorestore --host=127.0.0.1 --port=27017 -uroot -p123 --authenticationDatabase=admin  --dir=/data/backup/ --gzip --drop

2.2.2 恢复指定库

Plain 复制代码
mongorestore --host=127.0.0.1 --port=27017 -uroot -p123 --authenticationDatabase=admin -d product --dir=/data/backup/product  --gzip --drop 

2.2.3 恢复单个集合

json 复制代码
[root@MongoDB-07 backup]# mongorestore --host=127.0.0.1 --port=27017 -uroot -p123 --authenticationDatabase=admin -d product -c order --dir=/data/backup/product/order.bson.gz --gzip 

oplog与误删除恢复操作请参考oplog与误删除恢复操作

相关推荐
坚定信念,勇往无前32 分钟前
electron-vite 安装better-sqlite3
javascript·数据库·electron
大明者省36 分钟前
Ubuntu22.04 宝塔面板与 XFCE 远程桌面端口兼容性分析
运维·服务器·数据库·笔记
liudanzhengxi1 小时前
巧用ULN2003A轻松扩展单片机IO口
数据库·mongodb
Teable任意门互动1 小时前
深度解析:AI 赋能开源多维表格,实现企业全场景数据整合与高效应用
数据库·人工智能·低代码·信息可视化·开源·数据库开发
DevOpenClub2 小时前
职教高考及高职分类招生控制线 API 接口
java·数据库·高考
funnycoffee1232 小时前
华为S5736交换机3层ECMP负载方式
linux·服务器·数据库
添砖java‘’2 小时前
MySQL复合查询
数据库·mysql
星川水月2 小时前
Access数据库快速入门——外部数据导入和SQL简单查询
数据库·sql·access
清平乐的技术专栏2 小时前
一文读懂Kafka中的“消费”(对标MySQL数据库)
数据库·mysql·kafka