2017-01-18 15 views
0

Когда я пытаюсь создать резервную копию базы данных PIVOTAL HAWQ, используя сценарий оболочки.PIVOTAL HAWQ Резервное копирование - ошибка сценария оболочки

ошибка Получение:

/home/gpadmin/backup_db.sh: line 12: pg_dump: command not found 

Входной сценарий оболочки: backup_db.sh

#!/bin/bash 
# Location to place backup. 
backup_dir="/home/backup/" 
#String to append at the name of the backup files 
backup_date=`date +%d-%m-%Y` 
#Numbers of days we want to keep copy databases 
number_of_days=7 
databases=(prod test gpadmin) 
for i in ${databases[@]}; do 
    if [ "$i" != "template0" ] && [ "$i" != "template1" ]; then 
    echo Dumping $i to $backup_dir$i\_$backup_date 
    pg_dump $i|gzip > $backup_dir$i\_$backup_date.gz 
    fi 
done 
find $backup_dir -type f -prune -mtime +$number_of_days -exec rm -f {} \; 

CRONTAB: ЗАПРЕЩЕНО SHELL SCRIPT - */5 * * * */home/gpadmin/backup_db.sh> /tmp/bkp.log

При запуске оболочки вручную сброса данных. Но в то же время не работает через crontab, который работает каждые 5 минут.

Любая помощь по этому поводу была бы очень признательна.

+0

Похоже, что PATH не устанавливается, когда выполняется задание cron. Поэтому команда 'pg_dump' не найдена. – codeforester

+0

@codeforester PATH? – NEO

+0

pg_dump не дружит с mpp. все ваши данные пройдут через мастер и приземлится в локальный каталог. Hawq стоит на huds hadoop. Вы перемещаете данные hdfs в локальный каталог. Это не имеет смысла. –

ответ

1

Вам понадобится исходный код hawq на вашем скрипте, если вы запустите его из cron.

#!/bin/bash 
# Source hawq binaries 
. /usr/local/hawq/greenplum_path.sh #Change into your exact binaries location 

# Location to place backup. 
backup_dir="/home/backup/" 
+0

Я использовал исходные коды HAWQ и начал работать через cron. Благодаря тонну. – NEO

1

Похоже на проблему с PATH, что crontab не может найти двоичные файлы pg_dump. Попробуйте запустить скрипт с абсолютным путем pg_dump (usr/local/hawq/bin/pg_dump).

Вы также можете вызвать /usr/local/hawq/greenplum_path.sh и вызвать вызов pg_dump.

+0

Hardcoding абсолютный путь не идеален. Гораздо лучше иметь сценарий установки, который соответственно устанавливает PATH. И 'source' этот скрипт в работу. – codeforester

+0

PGHOST = "localhost" PGUSER = "postgres" PGBIN = "/ usr/bin" – NEO

+0

Вы можете указать переменную окружения, чтобы получить правильные двоичные файлы. –

 Смежные вопросы

  • Нет связанных вопросов^_^