0

我们的应用程序记录了大量数据,因此我们必须每周归档数据并将其从生产机器中移出一次。现在这是一个手动过程,但我正在自动化它。基本上,我使用“mongodump”并压缩输出,然后将其移动到云中并删除生产机器上的记录数据。

我的问题是如何在删除数据库中的所有文档之前确保 mongodump 成功?下面的基本伪代码:

if(mongodumpIsSuccessful)
    {
        //delete all document in log collection
    }

else
    {
        //handle failed mongodump
    }

我浏览了文档,但似乎找不到任何东西。有没有更好的方法来完成我正在尝试做的不使用 mongodump 的事情?谢谢。它

4

1 回答 1

0

我在转储部分使用 bash 脚本,然后,如果成功,则通过 Java 应用程序执行删除(因为在我们的用例中,我们需要从多个相关集合中删除)。

mongodump --db ${DB} --host ${HOST} --collection $1 \
    --out ${ARCHIVE_PATH} \
    --query <query> \
    >> $LOG 2>&1

if [ $? -ne 0 ]; then
    echo "mongodump failed for collection $1, exiting" &>> $LOG
    cat $LOG | mail -s "$HOST/$DB mongo archive & delete" -r ${FROM} ${MAILTO}
    exit 1
fi

java -cp ".:lib/*" DeleteBeforeDate ${DATE} ${DB} ${HOST} >> $LOG 2>&1
RESULT=$?

if [ $RESULT -eq 0 ]; then
    rm $LOG
else
    cat $LOG | mail -s "$HOST/$DB mongo archive & delete" -r ${FROM} ${MAILTO}
    rm $LOG
    exit ${RESULT}
fi

exit 0
于 2014-12-03T20:43:52.527 回答