找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2006

积分

0

好友

277

主题
发表于 2025-12-30 23:16:42 | 查看: 20| 回复: 0

数据库作为应用系统的核心资产,其数据安全至关重要。与 MySQL 和 PostgreSQL 不同,MongoDB 作为一款分布式 NoSQL 数据库,其高可用架构本身降低了对备份的绝对依赖,因此官方主要提供逻辑备份与恢复方案。

逻辑备份工具:mongodump

如果你通过 yum 等包管理器安装 MongoDB,通常会自动包含 mongodumpmongorestore 工具。但如果采用二进制方式部署,则需要单独下载 MongoDB 数据库工具包,解压后将其路径添加到系统 PATH 环境变量中即可使用。

mongodump 命令功能强大,支持多种备份场景,其常用参数示例如下:

# 备份整个实例(默认跳过 local 和 config 库)
mongodump --host localhost --port 27017 --out /backup/mongodb/

# 备份指定数据库
mongodump --db mydb --out /backup/mongodb/

# 备份指定集合
mongodump --collection mycollection --db mydb --out /backup/mongodb/

# 使用用户名密码认证
mongodump --username admin --password password --authenticationDatabase admin

# 启用 gzip 压缩备份,节省存储空间
mongodump --gzip --out /backup/mongodb/

# 指定查询条件进行部分备份(例如备份特定时间后的数据)
mongodump --query '{"date": {"$gt": {"$date": "2023-01-01T00:00:00Z"}}}'

在实际操作中,备份整个实例会生成类似如下的输出,可以看到它自动跳过了系统库:

mongodump --host localhost --port 27017 --out /backup/mongodb/
2025-12-24T23:42:02.907+0800    writing admin.system.users to /backup/mongodb/admin/system.users.bson
2025-12-24T23:42:02.925+0800    done dumping admin.system.users (4 documents)
2025-12-24T23:42:02.925+0800    writing admin.system.version to /backup/mongodb/admin/system.version.bson
2025-12-24T23:42:02.926+0800    done dumping admin.system.version (2 documents)
2025-12-24T23:42:02.926+0800    writing abcd.users to /backup/mongodb/abcd/users.bson
2025-12-24T23:42:02.926+0800    writing test.demo to /backup/mongodb/test/demo.bson
2025-12-24T23:42:02.938+0800    done dumping abcd.users (1 document)
2025-12-24T23:42:02.948+0800    done dumping test.demo (1 document)

如果需要备份 local 库(例如包含副本集或分片集群的元数据),必须显式指定数据库名:

mongodump --host localhost --port 27017 --db local --out /backup/mongodb/
2025-12-24T23:45:48.110+0800    writing local.startup_log to /backup/mongodb/local/startup_log.bson
2025-12-24T23:45:48.112+0800    done dumping local.startup_log (14 documents)

逻辑恢复工具:mongorestore

与备份相对应,mongorestore 命令用于将 mongodump 生成的 BSON 数据文件恢复到 MongoDB 实例中。它是保障数据库数据可恢复性的关键工具。

# 恢复整个备份目录到目标实例
mongorestore --host localhost --port 27017 /backup/mongodb/

# 恢复指定数据库
mongorestore --db mydb /backup/mongodb/mydb/

# 恢复指定集合
mongorestore --collection mycollection --db mydb /backup/mongodb/mydb/mycollection.bson

# 恢复前先删除目标集合(覆盖模式)
mongorestore --drop /backup/mongodb/

# 恢复 gzip 压缩格式的备份
mongorestore --gzip /backup/mongodb/

# 将数据恢复到不同名称的数据库中(常用于数据迁移或测试)
mongorestore --nsFrom 'mydb.*' --nsTo 'mydb_restore.*' /backup/mongodb/

一个典型的恢复过程会输出详细的日志,显示正在准备元数据、删除现有集合(如果使用了 --drop 参数)、恢复文档以及重建索引等步骤。

MongoDB数据库恢复操作终端日志
图1:使用 mongorestore 命令执行恢复操作的终端输出示例

掌握 mongodumpmongorestore 是每一位 MongoDB 运维工程师的基本功。合理规划备份策略并定期演练恢复流程,才能真正确保在数据丢失或损坏时能够从容应对。更多关于数据库和中间件的深度内容,欢迎在 云栈社区 交流探讨。




上一篇:DSP48E溢出检测实战:基于模式检测与掩码配置详解
下一篇:RAG中的Rerank是什么?面试如何回答与具体实现
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 18:32 , Processed in 0.288812 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表