【问题标题】:automatic backup in postgresql creates the empty backuppostgresql 中的自动备份创建空备份
【发布时间】:2020-06-27 21:13:16
【问题描述】:

我想在 UNIX 中使用 crontab 自动备份 PostgreSQL 数据库。我已经尝试过,但它会创建 0 字节备份。

我的 crontab 条目是:

24 * * * *  /home/desktop/myscript.sh

我的 sh 文件包含以下代码:

pg_dump -U PostgreSQL -d test > b.backup

它将创建文件,但文件为空。有什么解决办法吗?有什么办法可以解决这个问题吗?

【问题讨论】:

  • 检查您的系统日志文件是否有来自cron 的错误消息。可能您的cron 作业需要密码或其他方式进行身份验证。
  • 建议的副本包含大量您似乎没有执行的故障排除步骤。请edit你的问题显示你做了什么调试(或者当你在故障排除时设法自己解决问题时可能只是删除它)。
  • 你有任何社交媒体或whatsapp联系电话,以便我可以直接问你
  • Stack Overflow 的主要目的是建立一个知识库,以便您可以根据现有答案自行解决问题。再说一次,我能私下做的就是将故障排除步骤一一灌输给你。

标签: postgresql ubuntu cron


【解决方案1】:

不要假设在 cron 作业中设置了任何环境变量;明确:

/full/path/to/pg_dump -U postgres -d test > /full/path/to/b.backup

在您的收件箱中查找来自cron 的失败报告邮件。

【讨论】:

  • 我没听懂你在说什么?
  • 我说的是修复你的 shell 脚本以使其正常工作。
  • 我应该在 pg_dump 之前写 sudo
  • 我有没有提到sudo
  • pg_dump的全路径是什么?应该是什么? /home/desktop pg_dump......
【解决方案2】:

您必须指定 pg_dump 的完整路径

#!/bin/bash
BKPDATE=$(date +%d.%m.%Y-%H:%M:%S)
cd /var/lib/pgsql/12/backups
/usr/pgsql-12/bin/pg_dump -Fc dl_db > DBNAME_$BKPDATE.dmp --verbose 2> LOG_$BKPDATE.log

或者您必须将 PostgreSQL 的 bin 目录添加到如下路径:

vi /var/lib/pgsql/.pgsql_profile

   export PATH=$PATH:/usr/pgsql-12/bin

【讨论】:

  • 我正在使用 POSTGRES 9.2 版本此语法在此版本中有效
  • 如果你指定 9.2 bin 目录而不是 12 它必须工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多