AWS EC2实例中的PostgreSQL备份

时间:2017-12-13 18:52:07

标签: postgresql amazon-web-services amazon-ec2

我想用crontab运行一个脚本来备份PostgreSQL数据库。

我的脚本如下:

#!/bin/bash

current_date=`date +%Y-%m-%d`

# Delete old backups
find /home/ubuntu/backups/ * -mtime +1 -delete

# Do a full postgres cluster
pg_dump dbname | gzip > /home/ubuntu/backups/$current_date.gz

文件的所有者是root用户,我可能需要更改它...

使用sudo执行脚本时,我看到:

  

pg_dump:[archiver(db)]与数据库的连接" easydjango"失败:致命:角色" root"不存在

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以通过为pg_dump设置-U选项来传递正确的凭据。

https://www.postgresql.org/docs/current/static/app-pgdump.html

如果您不想提示输入密码,则需要设置PGPASSWORD环境变量。

export PGPASSWORD=mypass
pg_dump -U myuser ...

答案 1 :(得分:0)

如果未明确指定,PostgreSQL会将osuser本身视为pguser。在给出pgdump时,您需要指定用户属性。

此外,您指定的用户名应该对要转储的数据库具有足够的权限。

我建议您创建此链接https://www.postgresql.org/docs/current/static/libpq-pgpass.html中指定的PostgreSQL密码文件,然后尝试转储。