【问题标题】:How can I dump whole database or individial database using mongodump?如何使用 mongodump 为单个数据库转储整个数据库?
【发布时间】:2018-11-27 14:59:47
【问题描述】:

我正在尝试使用来自副本集的 mongodump 备份 mongoDB 数据库。我使用的脚本可以很好地将数据库从远程转储到本地。当我尝试从副本集转储时,相同的脚本错误说身份验证失败。

有没有一种简单的方法可以让我拥有整个数据库转储,否则将首选特定的数据库转储。

#!/bin/bash

HOST="mongorep1:27017,mongorep2:27017,mongorep3:27017"
REMOTE_DB="Products"
LOCAL_DB="Products"
USER="AppUser"
PASS="password"

## DUMP THE REMOTE
echo "Dumping '$HOST:$PORT/$REMOTE_DB'..."
mongodump --host $HOST --db $REMOTE_DB -u $USER -p $PASS --out dump/`date +"%m-%d-%y"`

echo "Done."

谢谢

【问题讨论】:

    标签: mongodb mongodb-replica-set


    【解决方案1】:

    当使用带有 mongodump 的副本集时,您需要在字符串传递到 --host 之前加上副本集名称。例如,如果您的副本集名称是 myreplicaset_name,那么它应该看起来像 -

    HOST="myreplicaset_name/mongorep1:27017,mongorep2:27017,mongorep3:27017"

    【讨论】:

    • 嗨@Abhay。我尝试使用前缀,但它正在转储管理数据库而不是产品数据库。我正在使用产品凭证。 #!/bin/bash HOST="rs0/mongorep1:27017,mongorep2:27017,mongorep3:27017" REMOTE_DB="Products" LOCAL_DB="Products" USER="AppUser" PASS="password" ## DUMP THE REMOTE echo "Dumping '$HOST:$PORT/$REMOTE_DB'..." mongodump --host $HOST:$PORT -u $USER -p $PASS -d $REMOTE_DB --out /usr/local/bin/dump/date +"%m-%d-%y"` echo "完成。"`
    • 如果您能够使用凭证转储管理员,那么您可以转储所有。只需删除-d $REMOTE_DB 部分,它将转储所有数据库。
    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多