前言

在实际开发和部署过程中,我们经常需要在 Docker 环境中管理 MongoDB 数据库。本文将详细介绍如何在 Docker 中备份和恢复 MongoDB 数据库,并解决在此过程中可能遇到的各种问题。

正文

1. MongoDB 数据库导出

1.1 导出工具选择

工具 格式 适用场景 数据保真度
mongodump 二进制 BSON 完整备份 / 迁移 高,保留所有数据类型
mongoexport JSON/CSV 数据分析 / 交换 可能损失部分数据类型

1.2 使用 mongodump 进行完整备份

1
2
3
4
5
6
7
8
9
10
11
# 在 Docker 容器内执行 mongodump
docker exec -it <mongodb_container_name> mongodump -h 127.0.0.1:27017 --authenticationDatabase=admin -u <username> -p <password> -d <database_name> -o /tmp/mongodb_backup --gzip

# 在我本机使用的命令
docker exec -it b85158ed3a6c mongodump -h 127.0.0.1:27017 --authenticationDatabase=admin -u mongo_tBF2DfnRVqrW -p xh1JJqbwFn739EfIO9yJCnkj -o /tmp/mongodb_backup --gzip

# 将备份文件从容器复制到宿主机
docker cp <mongodb_container_name>:/tmp/mongodb_backup /path/on/your/host/

# 在我本机使用的命令
docker cp b85158ed3a6c:/tmp/mongodb_backup /tmp/

1.3 使用 mongoexport 导出特定集合

1
2
3
4
5
# 导出特定集合为 JSON 格式 
docker exec -it <mongodb_container_name> mongoexport -h 127.0.0.1:27017 --authenticationDatabase=admin -u <username> -p <password> -d <database_name> -c <collection_name> --type=json --out /tmp/<collection_name>.json

# 复制到宿主机
docker cp <mongodb_container_name>:/tmp/<collection_name>.json /path/on/your/host/

2. MongoDB 数据库导入

2.1 导入工具选择

工具 源格式 适用场景 对应导出工具
mongorestore BSON 完整备份恢复 mongodump
mongoimport JSON/CSV 逻辑数据导入 mongoexport

2.2 Windows 环境下的导入操作

1
2
3
4
5
6
7
8
# 方法一:目录挂载(推荐)
docker run --rm -it -v C:\Users\Tamsiree\Desktop\fsdownload\mongodb_backup:/tmp/restore mongo:6.0 bash -c 'mongorestore -h host.docker.internal --authenticationDatabase admin -u mongo_yr3ZiF -p mongo_A55pcm --gzip --drop /tmp/restore'

docker run --rm -it -v C:\Users\Tamsiree\Desktop\fsdownload\mongodb_backup:/tmp/restore mongo:6.0 bash -c 'mongorestore -h host.docker.internal:17177 --authenticationDatabase admin -u mongo_tBF2DfnRVqrW -p xh1JJqbwFn739EfIO9yJCnkj --gzip --drop /tmp/restore'

# 方法二:文件复制到运行中的容器
docker cp "C:\Users\Tamsiree\Desktop\fsdownload\mongodb_backup" mongo-local:/tmp/restore
docker exec -it mongo-local mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -u mongo_yr3ZiF -p mongo_A55pcm --gzip --drop /tmp/restore

6. 总结

通过本文的介绍,我们全面了解了在 Docker 环境中管理 MongoDB 数据库的完整流程,包括备份、恢复的解决方案。掌握这些技能将帮助您更有效地管理和维护基于 Docker 的 MongoDB 数据库,确保业务的连续性和数据的安全性。

记住,在进行任何数据库操作之前,确保你有完整的备份,并在测试环境中验证操作流程,这样才能最大限度地减少生产环境中的风险。


to be continued…