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

相关推荐
科技小花4 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸4 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain4 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希4 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神4 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员4 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java5 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿5 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴5 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU5 小时前
三大范式和E-R图
数据库