【问题标题】:What is the easiest to backup a mongoDB deployed with mup?备份使用 mup 部署的 mongoDB 最简单的方法是什么?
【发布时间】:2019-10-04 14:58:39
【问题描述】:

我使用 mup deploy (https://github.com/arunoda/meteor-up) 在 Ubuntu 服务器上部署我的应用程序,并在 mup.json 文件中使用选项 "setupMongo": true

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

【问题讨论】:

    标签: mongodb meteor


    【解决方案1】:

    如果使用 mup 部署,那么你很幸运。 你可以在这里找到步骤:https://github.com/xpressabhi/mup-data-backup

    下面是步骤:

    通过 mup 部署的 MongoDB 数据备份

    只有在使用 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
    

    从流星部署中删除旧数据

    进入在 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 mongorestore --archive=/root/mongodump.gz --gzip
    

    【讨论】:

      【解决方案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>
      

      【讨论】:

      • 感谢您的回答。有没有办法自动做到这一点? (例如每晚)
      • @JeromeMartin 你必须写一个 cron。如果上述(答案的第一位对您有用)您可以使用它进行设置:sheharyar.me/blog/regular-mongo-backups-using-cron
      【解决方案3】:

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

      它使用脚本来: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
      

      就是这样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-14
        • 2016-09-29
        • 2015-08-09
        • 2012-04-06
        • 2021-08-05
        • 1970-01-01
        相关资源
        最近更新 更多