我想从 Windows 2012 服务器上运行的复制集中对我的 MongoDB 进行每日备份。
最终目标是获取每日备份并将备份写入远程或本地共享 - Windows。
我可以批处理 mongodump 命令吗?
任何帮助将不胜感激!!
我想从 Windows 2012 服务器上运行的复制集中对我的 MongoDB 进行每日备份。
最终目标是获取每日备份并将备份写入远程或本地共享 - Windows。
我可以批处理 mongodump 命令吗?
任何帮助将不胜感激!!
抱歉,有点晚了,但以下对我来说似乎工作正常。该脚本转储数据库并使用 7-Zip 压缩输出。
1)创建备份脚本(backup.bat)
@echo off
REM move into the backups directory
CD C:\database_backups
REM Create a file name for the database output which contains the date and time. Replace any characters which might cause an issue.
set filename=database %date% %time%
set filename=%filename:/=-%
set filename=%filename: =__%
set filename=%filename:.=_%
set filename=%filename::=-%
REM Export the database
echo Running backup "%filename%"
C:\mongodb\mongodump --out %filename%
REM ZIP the backup directory
echo Running backup "%filename%"
"c:\Program Files\7-Zip\7z.exe" a -tzip "%filename%.zip" "%filename%"
REM Delete the backup directory (leave the ZIP file). The /q tag makes sure we don't get prompted for questions
echo Deleting original backup directory "%filename%"
rmdir "%filename%" /s /q
echo BACKUP COMPLETE
2) 安排备份
我在 linux 上运行,而不是 Windows 2012,但这就是我所做的。在副本集中的其中一台服务器上,此脚本每晚通过 cron 作业运行。
#config
BACKUPNAME=[backup file name]
DATAPATH=[path to mongo data folder]
DATESTAMP=$(date +"%Y-%m-%d")
FILENAME=backup.$BACKUPNAME.$DATESTAMP.tar.gz
TARPATH=$DATAPATH/$FILENAME
echo $DATESTAMP;
/etc/init.d/mongod stop
/usr/bin/mongodump --journal --dbpath $DATAPATH --out $DATAPATH/backup
tar czvf $TARPATH $DATAPATH/backup
rm -rf $DATAPATH/backup
/usr/bin/s3cmd put $TARPATH s3://[backup s3 bucket name]/$FILENAME
rm -f $TARPATH
/etc/init.d/mongod start
/scripts/prunebackups
我正在使用 s3cmd 将文件发送到 Amazon AWS 上的 S3 存储桶,但您可以轻松地将文件复制到任何地方。prunebackups
是一个脚本,它根据旧备份的年龄从 S3 中删除旧备份。
在 Windows 上,我会创建一个执行类似任务的批处理文件。在本质上:
然后,您可以使用任务计划程序定期运行它。
如果您在副本集中有其他 mongod 实例,则不应遇到任何停机问题。我设置中的备份实例从不用于读取或写入,而仅用于备份,以防其他实例之一出现故障。
MongoDB 有关于不同备份策略的文档:http: //docs.mongodb.org/manual/administration/backup/
我们选择了 mongodump 方法,因为对我们来说存储转储备份比存储快照更便宜。这是我们使用的具体策略:http: //docs.mongodb.org/manual/tutorial/backup-databases-with-binary-database-dumps/。好消息是,我们实际上不得不将数据从备份恢复到生产一次,而且非常轻松。