我正在尝试使用 crontab 进行简单的 postgres 备份。这是我使用的命令:
# m h dom mon dow user command
49 13 * * * postgres /usr/bin/pg_dump store | bzip2 > /home/backups/postgres/$(date +"\%Y-\%m-\%d")_store.sq.bz2
创建了一个备份文件,但它非常小(看起来像 14 个字节)。
我可以在终端中正常运行此命令(文件大小与我的数据库匹配)。
日志文件没有提及任何错误 (grep CRON/var/log/syslog)。知道可能会出现什么问题吗?
最佳答案
解决这个问题的关键是要意识到在 bash 中运行“相同”命令和通过 Cron 运行不是一回事!
例如当通过 Cron 运行时,明显的默认设置(.bash_profile/.pgpass/默认二进制路径)是不一样的,因此在 bash 上有效的可能在 Cron 中不起作用。
对于 list :
- 确保 Bzip2 替换为完整路径(例如 CentOS/RHEL 上的
/usr/bin/bzip2
) - 确保“
Store
”数据库可由 Cron 命令读取(例如,添加 -U Postgres 将是一个很好的补充)。如果 DB 登录依赖于 .pgpass 文件,则它不适用于 cron。在这种情况下,您需要确保为此目的配置了 pg_hba.conf(例如,您可以允许对特定的已知数据库/机器/用户组合等进行“trust
”身份验证。< - 出于显而易见的原因,确保/home/backups/postgres/... 可写访问。
关于postgresql - crontab 后 postgres 数据库备份很小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103051/