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

备份使用mup部署的mongoDB最简单的方法是什么?,mongodb,meteor,Mongodb,Meteor,我使用mup deploy()在Ubuntu服务器上部署了我的应用程序,并在mup.json文件中选择了“setupMongo”:true 一切正常,我希望每天将mongoDB数据库保存到FTP或S3,或者将mongoDB副本设置到另一台服务器(以避免每次复制整个数据库,但这似乎更复杂)。最好的方法是将其进行mongodump 假设它在mup实例本身上运行,因为它只侦听127.0.0.1,那么您必须使用ssh-in并使用mongodump 如果您只是运行它: mongodump 它将创建一个包

我使用
mup deploy
()在Ubuntu服务器上部署了我的应用程序,并在mup.json文件中选择了
“setupMongo”:true


一切正常,我希望每天将mongoDB数据库保存到FTP或S3,或者将mongoDB副本设置到另一台服务器(以避免每次复制整个数据库,但这似乎更复杂)。

最好的方法是将其进行mongodump

假设它在mup实例本身上运行,因为它只侦听
127.0.0.1
,那么您必须使用ssh-in并使用
mongodump

如果您只是运行它:

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

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

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

/mongodump--主机--用户名--密码

这个答案的灵感来自:

它使用一个脚本:mongodump->tar->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

就是这样。

如果使用mup部署,您会很幸运。 您可以在此处找到以下步骤:

以下是步骤:

通过mup部署的MongoDB数据备份 只有当meteor使用mup工具部署时,这些命令才能正常运行。Mup为mongodb创建docker,因此使用这些命令进行备份变得很容易

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

docker exec -it mongodb mongodump --archive=/root/mongodump.gz --gzip 
docker cp mongodb:/root/mongodump.gz mongodump_$(date +%Y-%m-%d_%H-%M-%S).gz
将备份复制到服务器 将数据移动到另一台服务器/本地计算机或备份位置

scp /path/to/dumpfile root@serverip:/path/to/backup
从meteor部署中删除旧数据 进入docker中运行的mongo控制台,然后在获取新数据之前删除当前数据库

docker exec -it mongodb mongo appName
db.runCommand( { dropDatabase: 1 } )
将数据还原到meteor docker
谢谢你的回答。有没有一种方法可以自动完成?(例如每天晚上)@jeromematin你必须写一个cron。如果以上(答案的第一部分对您有效),您可以使用此设置:
docker exec -it mongodb mongo appName
db.runCommand( { dropDatabase: 1 } )
docker cp /path/to/dumpfile mongodb:/root/mongodump.gz
docker exec -it mongodb mongorestore --archive=/root/mongodump.gz --gzip