使用Docker备份和恢复MongoDB数据库

MongoDB是一款非常流行的NoSQL数据库,它广泛用于各种应用程序开发。这篇文章将指导你如何在Docker环境中使用mongodumpmongorestore工具来备份和恢复MongoDB数据库,同时我们将使用Shell脚本自动化这个过程。

使用Shell脚本备份和恢复数据库

我们可以创建一个Shell脚本,将备份和恢复操作封装成函数,然后根据传入的参数来决定执行哪个操作。我们命名这个脚本为mongo_backup_restore.sh

#!/bin/bash

# 定义变量
USERNAME="chatgpt"
PASSWORD="xxxx"
HOST="172.17.0.1"
PORT="27017"
BACKUP_PATH="/www/wwwroot/backup"

# 备份函数
backup_mongo() {
    echo "开始备份所有MongoDB数据库..."
    docker run --rm -v ${BACKUP_PATH}:/backup mongo bash -c "mongodump --uri='mongodb://${USERNAME}:${PASSWORD}@${HOST}:${PORT}' --out=/backup"
    echo "备份完成,备份文件保存在${BACKUP_PATH}目录中。"
}

# 恢复函数
restore_mongo() {
    echo "开始恢复所有MongoDB数据库..."
    docker run --rm -v ${BACKUP_PATH}:/backup mongo bash -c "mongorestore --drop --uri='mongodb://${USERNAME}:${PASSWORD}@${HOST}:${PORT}' /backup"
    echo "数据库恢复完成。"
}

# 判断参数
if [ "$1" == "backup" ]
then
    backup_mongo
elif [ "$1" == "restore" ]
then
    restore_mongo
else
    echo "参数错误。用法: $(basename $0) [backup|restore]"
fi

在这个脚本中,我们首先定义了几个变量,包括MongoDB的用户名、密码、主机名、端口号、数据库名和备份文件的保存路径。然后,我们定义了两个函数backup_mongorestore_mongo,用于执行备份和恢复操作。

你需要将<username>, <password>, <host>, <port>, 和 <database>替换为你的MongoDB服务器的实际信息。你也可以将备份路径${BACKUP_PATH}修改为你的实际备份路径。

然后,你可以使用如下命令执行脚本:

  • 备份数据库:./mongo_backup_restore.sh backup
  • 恢复数据库:./mongo_backup_restore.sh restore
默认情况下,mongodumpmongorestore 工具会备份和恢复所有数据库,只要我们在 --uri 参数中不指定具体的数据库名称即可。

结论

在Docker环境中使用mongodumpmongorestore工具备份和恢复MongoDB数据库是一种简单且有效的方式。通过使用我们提供的Shell脚本,你可以方便地进行备份和恢复操作。只需要记住,当你使用mongorestore时,要确保你正在尝试恢复的数据库是空的,或者你愿意覆盖现有数据。另外,你的MongoDB服务器需要允许远程连接,并且你需要有足够的权限进行数据恢复。

将这个脚本运行为定时任务,如cron作业,可以更好地满足定期备份和恢复的需求,提高数据安全性和灵活性。

最后修改:2023 年 08 月 18 日
如果觉得我的文章对你有用,请随意赞赏