作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL
PostgreSQL
Redis
Etcd
我们前面讲解的MySQL和PostgreSQL的备份和还原,都可以分为逻辑备份和物理备份,但是MongoDB是一个分布式数据库,所以他其他分布式软件一样对备份要求不是很高,所以他只有逻辑备份和还原。
如果我们是通过yum进行安装,则这2个命令模式就是自带的,但是如果我们是采用二进制来进行部署,则是没有这2个命令的。所以我们这里需要首先部署这2个文件。
#下载解压放置到对应的PATH里面就可以正常执行
https://www.mongodb.com/try/download/database-tools
逻辑备份(mongodump)
# 备份整个实例
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
# 压缩备份
mongodump --gzip --out /backup/mongodb/
# 指定查询条件备份
mongodump --query '{"date": {"$gt": {"$date": "2023-01-01T00:00:00Z"}}}'下面就是真实备份效果,备份全部库默认会跳过local和config库,如果要备份这两个库需要使用指定库备份。
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)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 --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/
# 还原压缩备份
mongorestore --gzip /backup/mongodb/
# 还原到不同的数据库名
mongorestore --nsFrom 'mydb.*' --nsTo 'mydb_restore.*' /backup/mongodb/