0

当我尝试使用 shell 脚本备份 PIVOTAL HAWQ 数据库时。

得到错误:

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

输入shell脚本: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 : 输入外壳脚本 - */5 * * * * /home/gpadmin/backup_db.sh > /tmp/bkp.log

运行 shell 时手动转储数据。但同时不能通过每 5 分钟运行一次的 crontab 工作。

对此的任何帮助将不胜感激。

4

2 回答 2

1

crontab 找不到 pg_dump 二进制文件似乎是 PATH 的问题。请尝试使用 pg_dump (usr/local/hawq/bin/pg_dump) 的绝对路径运行脚本。

您也可以在调用 pg_dump 调用之前获取 /usr/local/hawq/greenplum_path.sh 。

于 2017-01-18T04:05:04.393 回答
1

如果您从 cron 运行它,您将需要在您的脚本上获取 hawq 二进制文件。

#!/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/"
于 2017-01-18T04:05:53.277 回答