我是吃了没有提前备份数据的亏,因为一次误操作,删除了所有数据。阿里云的ECS服务器控制台有定时与自动化任务-自动备份数据服务,不免费。那么就自己动手来吧。
如果你是考虑数据的安全性,那么在备份数据后,还需要上传到OSS,或其他可以存储的地方。
一、安装 mongodb-org-tools
这个软件包包含了 MongoDB 备份所需的命令,如 mongodump 和 mongorestore。
sudo yum install mongodb-org-tools
如果遇到在 CentOS 上,无法找到 mongodb-org-tools 软件包的问题
No match for argument: mongodb-org-tools Error: Unable to find a match: mongodb-org-tools
创建一个新的仓库文件 /etc/yum.repos.d/mongodb-org.repo,并将以下内容粘贴到文件中:
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
我使用的是 MongoDB 4.4.6 版本。如果你需要其他版本,请在 baseurl 和 gpgkey 中替换相应的版本号。
清除缓存并安装 mongodb-org-tools:
sudo yum clean all
sudo yum install mongodb-org-tools
二、创建一个备份脚本 backup_mongodb.sh
输入以下命令,在 /usr/local/bin 目录下创建备份脚本并使用 nano 编辑器打开:
sudo nano /usr/local/bin/backup_mongodb.sh
将以下内容粘贴到打开的编辑器中(请替换 、、 和 为实际值):
#!/bin/bash
# MongoDB 凭证
MONGODB_USER="<MONGODB_USER>"
MONGODB_PASSWORD="<MONGODB_PASSWORD>"
MONGODB_DATABASE="<MONGODB_DATABASE>"
# Backup 目录(我的目录:/var/backups/mongodb,请根据你的实际情况设置)
BACKUP_DIR="<BACKUP_DIR>"
# 如果不存在,创建备份目录
mkdir -p ${
BACKUP_DIR}
# 获取当前日期和时间
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
# Backup 文件名
BACKUP_FILE="${BACKUP_DIR}/mongodb_backup_${TIMESTAMP}.gz"
# 运行mongodump命令来备份MongoDB
mongodump --username={
mathJaxContainer[1]}{
MONGODB_PASSWORD} --db={
mathJaxContainer[2]}{
BACKUP_FILE}
echo "MongoDB backup created at ${BACKUP_FILE}"
# 删除超过7天的备份文件
find ${
BACKUP_DIR} -type f -mtime +7 -name "mongodb_backup_*.gz" -exec rm {
} \;
echo "Deleted backups older than 7 days"
保存文件并退出编辑器。在 nano 编辑器中,按 Ctrl + X(^X),然后按 Y,然后按 Enter。
为脚本设置可执行权限:
sudo chmod +x /usr/local/bin/backup_mongodb.sh
现在,你可以在任何地方通过运行 backup_mongodb.sh 命令来手动执行该备份脚本。
三、配置定时任务
如果你需要定期自动备份,使用 crontab 配置定时任务以定期运行备份脚本。
运行以下命令:
crontab -e
在打开的编辑器中,添加以下行以每天凌晨 1 点运行备份脚本(确保替换 /path/to/backup_mongodb.sh 为实际的脚本路径):
# 分 小时 日 月 星期几
#每天凌晨1点自动执行备份脚本
0 1 * * * /path/to/backup_mongodb.sh
#如果你只需要每周执行一次自动备份
0 1 * * 0 /path/to/backup_mongodb.sh
#代表每周日凌晨1点执行
保存并退出编辑器。现在,你的 MongoDB 数据库将每天凌晨 1 点自动备份,并且只保留最近 7 天的备份数据。
以上,就完成了在阿里云服务器上配置自动备份 MongoDB 数据库的操作。