【问题标题】:PIVOTAL HAWQ Backup - shell script errorPIVOTAL HAWQ 备份 - shell 脚本错误
【发布时间】:2017-01-18 12:10:42
【问题描述】:

当我尝试使用 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 工作。

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

【问题讨论】:

  • 看起来当你的 cron 作业运行时 PATH 没有设置。这就是找不到pg_dump 命令的原因。
  • @codeforester 路径?
  • pg_dump 对 mpp 不友好。您的所有数据都将通过 master 并降落到本地目录。 Hawq 站在 hadoop hdfs 上。您正在将 hdfs 数据移回本地目录。这没有意义。
  • 我应该使用什么命令来备份 HAWQ 数据库而不是 pg_dump?
  • 有没有备份HAWQ的替代方案?

标签: bash shell crontab greenplum hawq


【解决方案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/"

【讨论】:

  • 我确实获取了 HAWQ 二进制文件并开始通过 cron 工作。非常感谢。
【解决方案2】:

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

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

【讨论】:

  • 硬编码绝对路径并不理想。最好有一个设置脚本来相应地设置 PATH。并将 source 该脚本放入工作中。
  • PGHOST="localhost" PGUSER="postgres" PGBIN="/usr/bin"
  • 您可以获取环境变量以获取正确的二进制文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 2015-10-03
  • 2021-06-11
  • 1970-01-01
相关资源
最近更新 更多