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

相关推荐
奇点爆破XC1 天前
统计数据库当前数据容量
数据库
Leon-Ning Liu1 天前
OGG同步Oracle到Kafka
数据库·oracle·kafka
远方16091 天前
117-Oracle 26ai FILTER(过滤)子句新特性
大数据·数据库·sql·oracle·database
Maverick061 天前
Oracle 归档日志(Archive Log)操作手册
数据库·oracle
isNotNullX1 天前
一文讲清8大数据清洗方法
大数据·数据库·数据挖掘·数据迁移
Francek Chen1 天前
【大数据存储与管理】分布式数据库HBase:05 HBase运行机制
大数据·数据库·hadoop·分布式·hdfs·hbase
小小怪7501 天前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
麦聪聊数据1 天前
SQL 到 API 转化过程中的版本控制与灰度发布机制
数据库·sql·低代码·微服务
Coder-coco1 天前
家政服务管理系统|基于springboot + vue家政服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·家政服务管理系统
人道领域1 天前
Day | 07 【苍穹外卖 :用户端添加购物车】
java·开发语言·数据库·后端·苍穹外卖