PostgreSQL 备份 WAL ShellScript

PostgreSQL 备份 WAL ShellScript

我需要编写一个脚本来备份我的 psql 数据库,我想使用 wal 存档模式而不是 pg_dump。我根据在网上找到的一个脚本编写了此脚本:

#!/bin/bash
#Test Script BackupSQL
PG_SQL_CMD=/opt/novell/idm/Postgres/bin/psql
PG_SQL_USER=postgres
PG_SQL_DB=password
PG_SQL_HOST=localhost

PG_BACKUP_LABEL='backup_label'

PG_BACKUP_START="$PG_SQL_CMD -U $PG_SQL_USER -h $PG_SQL_HOST -c \"select pg_start_backup('$PG_BACKUP_LABEL')\""
PG_BACKUP_STOP="$PG_SQL_CMD -U $PG_SQL_USER -h $PG_SQL_HOST -c \"select pg_stop_backup()\""


echo $PG_BACKUP_START
eval $PG_BACKUP_START
sleep 2
echo $PG_BACKUP_STOP
eval $PG_BACKUP_STOP

我的问题是:运行脚本时,它提示我输入 psql 密码。我没有找到在 psql 命令中指定密码的方法,就像在 mysql 中使用 -p 选项一样。

我怎样才能让脚本回答提示?

答案1

尝试使用该.pgpass文件而不必输入密码。
请参阅:http://www.postgresql.org/docs/8.3/static/libpq-pgpass.html

或者你可以使用如下的 shell 语法:

 psql -h database.server.com -U username <<EOF
 sekritpassword
 EOF

或者作为最后的选择,您应该能够使用环境变量 PGUSER 和 PGPASSWD。

答案2

如果您的 pg_hba.conf 文件中有以下行,则无需提供密码。您只需以 postgres 用户身份运行此命令。

local   all         all           ident

相关内容