mongodump выдает только несколько коллекций при запуске из скрипта, конкурирует с базой данных при запуске из терминала; - PullRequest
2 голосов
/ 03 февраля 2011

У меня есть скрипт, который выводит БД и копирует его в S3.Это запись crontab, которая вызывает скрипт:

*/1 * * * * /root/scripts/backupDB.sh

backupDB.sh:

#!/bin/sh -e

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/

date_now=`date +%Y_%m_%d_%H_%M`
dir_name="db_backup"
tar_name="db_backup_${date_now}.tar.gz"
file_name="${dir_name}/${tar_name}"

if [ -z "$dir_name" ]; then
    mkdir $dir_name
fi

log() {
    echo $1
    echo $1 >> ${HOME}/tmp/mybackup.log
}

do_cleanup(){
    rm -rf db_backup* 
    log 'cleaning up....'
}

do_backup(){
    log 'Starting the backup' && \
    /usr/bin/mongodump -o ${HOME}/${dir_name} && \
    log 'Data dump created'
    /bin/tar -cjf ${HOME}/${tar_name} ${HOME}/${dir_name} && \
    log 'Created archive'

    log 'saving the backup archive in amazon S3' && \
    /usr/bin/s3cmd put --acl-private ${HOME}/${tar_name} s3://bucket/db-backups/${tar_name} && \
    log 'data backup saved in amazon s3'
}


do_backup && do_cleanup

При запуске через терминал тот же скрипт сбрасывает всебазы данных.При запуске через cron выдает только несколько коллекций каждой базы данных.Лог mongodb вставляется сюда . Ничего странного не показывает.Вы можете видеть, что соединения устанавливаются в начале каждой минуты, соответствуют записи в crontab, которая вызывает скрипт.Но это также показывает, что соединение заканчивается немедленно.В чем может быть проблема?

1 Ответ

1 голос
/ 03 февраля 2011

Сколько времени занимает запуск сценария?

Поскольку вы запускаете его из cron довольно часто, всегда возникает опасение, что следующий экземпляр может запуститься до того, как первый завершится, что приведет к разного рода проблемам.с выводом в зависимости от того, что делает скрипт.

Вы захотите реализовать некоторую форму блокировки для предотвращения одновременных запусков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...