使用 CRON 和 S3CMD 自动化 MongoDB 备份





5.00/5 (4投票s)
本文档旨在提供所有步骤,以创建一个针对 Linux 服务器上 MongoDB 服务器的自动化备份,所有备份都通过 crontab 计划发送到 Amazon AWS S3 服务。
目录
简介
以下技巧描述了如何在 Linux 环境中使用 Cron 调度器和 Amazon S3 来存储所有备份数据,从而为 MongoDB 服务器创建一个自动备份例程。
背景
要完成这些步骤,您必须具备
- 配置了 MongoDB 2.2.3 或更高版本在 Linux 环境中(最好是在 Amazon EC2 实例中)
- Amazon S3 帐户,用于存储所有备份数据
安装和配置 S3CMD
S3cmd
是一个程序,允许您使用 shell
执行 Amazon S3
中的所有操作。
要安装和配置
sudo su
sudo yum --enablerepo epel install s3cmd
s3cmd --configure
要测试 s3cmd
,请显示您的 Amazon S3
帐户中的所有存储桶。
s3cmd ls
备份脚本
创建一个新的 shell
文件,命名为 mongodb_to_s3_backup.sh
,使用任何 Linux 编辑器(我使用 vi
)
vi mongodb_to_s3_backup.sh
#!/bin/bash
#Force file syncronization and lock writes
mongo admin --eval "printjson(db.fsyncLock())"
MONGODUMP_PATH="/usr/bin/mongodump"
MONGO_HOST="SERVER_IP_HERE" #replace with your server ip
MONGO_PORT="27017"
MONGO_DATABASE="dbname_here" #replace with your database name
TIMESTAMP=`date +%F-%H%M`
S3_BUCKET_NAME="bucketname_here" #replace with your bucket name on Amazon S3
S3_BUCKET_PATH="mongodb-backups"
# Create backup
$MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE
# Add timestamp to backup
mv dump mongodb-$HOSTNAME-$TIMESTAMP
tar cf mongodb-$HOSTNAME-$TIMESTAMP.tar mongodb-$HOSTNAME-$TIMESTAMP
# Upload to S3
s3cmd put mongodb-$HOSTNAME-$TIMESTAMP.tar
s3://$S3_BUCKET_NAME/$S3_BUCKET_PATH/mongodb-$HOSTNAME-$TIMESTAMP.tar
#Unlock database writes
mongo admin --eval "printjson(db.fsyncUnlock())"
测试脚本并验证您的 Amazon S3 存储桶。
bash mongodb_to_s3_backup.sh
使用 CRON 自动化备份
要安排 mongodb_to_s3_backup.sh
,请使用 cron
调度器。
sudo su
crontab -e
每行(不含注释)代表一个计划
#every day at 01h 00m
00 01 * * * /bin/bash /home/ec2-user/mongodb_to_s3_backup.sh
就这些了。如有任何问题或疑虑,请告诉我,我会帮助您。祝您愉快;]
所有代码都在我的 gist 帐户中:https://gist.github.com/lazarofl/4961746