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与误删除恢复操作

相关推荐
香气袭人知骤暖2 小时前
SQL慢查询常见优化步骤
android·数据库·sql
Star Learning Python2 小时前
MySQL日期时间的处理函数
数据库·sql
JosieBook2 小时前
【数据库】多模融合,智启新篇:金仓数据库重塑国产文档数据库范式
数据库
韩立学长2 小时前
基于Springboot流浪动物救助系统o8g44kwc(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
聆风吟º3 小时前
金仓数据库:以 “多模融合” 重塑国产文档数据库新标杆
数据库·重构·kingbasees
子沫20203 小时前
使用mybatis-plus、mybatis插入数据库时加密,查询数据库时解密,自定义TypeHandler 加解密使用
数据库·mybatis·mybatis-plus
清风拂山岗 明月照大江3 小时前
MySQL运维
运维·数据库·mysql
小伍_Five3 小时前
《NoSQL数据库技术与应用(黑马程序员)》课后习题答案完整版
数据库·nosql
oas13 小时前
山东大学软件学院2024-2025非关系型数据库期末考试(限选)
数据库·nosql