备份使用mup部署的mongoDB最简单的是什么?

时间:2015-05-31 14:35:05

标签: mongodb meteor

我使用mup deployhttps://github.com/arunoda/meteor-up)在mup.json文件中使用选项"setupMongo": true在Ubuntu服务器上部署了我的应用。

一切正常,我想每天将mongoDB数据库保存到FTP或S3,或者将mongoDB副本设置为另一台服务器(以避免每次都复制整个数据库,但看起来更复杂)。

3 个答案:

答案 0 :(得分:2)

最好的方法是mongodump。

假设它在mup实例上运行,因为它只侦听127.0.0.1,你必须ssh并使用mongodump

如果你只是运行它:

mongodump

它将创建一个包含备份的目录dump

如果您想远程执行此操作,则必须编辑/etc/mongodb.conf以确保其绑定globally,您必须创建用户,因为它可以公开访问。然后将auth设置为true。

然后您可以从自己的机器mongodump(您可以从mongodb.org下载mongodump二进制文件):

./mongodump --host <your server ip address> --username <username> --password <password>

答案 1 :(得分:2)

如果与mup一起部署,你很幸运。 我在这里写了几步 https://github.com/xpressabhi/mup-data-backup

以下是该链接的步骤

通过mup

部署MongoDB数据备份

如果使用mup工具部署metero,这些命令运行良好。 Mup为mongodb创建了docker,因此使用这些命令可以轻松进行备份。

备份

从docker备份正在运行的应用数据,然后从docker复制到本地文件夹。

docker exec -it mongodb mongodump --archive = / root / mongodump.gz --gzip

docker cp mongodb:/root/mongodump.gz mongodump _ $(日期+%Y-%m-%d_%H-%M-%S).gz

将备份复制到服务器

将数据移至另一台服务器/本地计算机或备份位置

scp / path / to / dumpfile root @ serverip:/ path / to / backup

从流星部署中删除旧数据

进入在docker中运行的mongo控制台,然后在获取新数据之前删除当前数据库。

docker exec -it mongodb mongo appName

db.runCommand({dropDatabase:1})

将数据恢复到meteor docker

docker cp / path / to / dumpfile mongodb:/root/mongodump.gz

docker exec -it mongodb mongodump --archive = / root / mongodump.gz --gzip

答案 2 :(得分:1)

这个答案的灵感来自: sheharyar.me/blog/regular-mongo-backups-using-cron

它使用脚本:mongodump - &gt; tar - &gt; wput(ftp)

首先,创建一个bash脚本:

#!/bin/bash

MONGO_DATABASE="your_db_name"
APP_NAME="your_app_name"

MONGO_HOST="127.0.0.1"
MONGO_PORT="27017"
TIMESTAMP=`date +%F-%H%M`
MONGODUMP_PATH="/usr/bin/mongodump"
BACKUPS_DIR="/home/username/backups/$APP_NAME"
BACKUP_NAME="$APP_NAME-$TIMESTAMP"

# mongo admin --eval "printjson(db.fsyncLock())"
# $MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE
$MONGODUMP_PATH -d $MONGO_DATABASE
# mongo admin --eval "printjson(db.fsyncUnlock())"

mkdir -p $BACKUPS_DIR
mv dump $BACKUP_NAME
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME
rm -rf $BACKUP_NAME

wput $BACKUP_NAME.tgz ftp://login:password@ftp.domain.com/backups/

将其另存为mongo_backup.sh并运行:

chmod +x mongo_backup.sh
bash mongo_backup.sh
sudo su
crontab -e

然后输入这一新行:

00 00 * * * /bin/bash /home/username/scripts/mongo_backup.sh

就是这样。