无法打开文件"pg_clog/0000":没有这样的文件或目录



我在访问 Postgres 数据库时收到如下错误

ERROR:  could not access status of transaction 69675
DETAIL:  Could not open file "pg_clog/0000": No such file or directory.

我没有对pg_clog文件夹做任何事情,但0000文件不存在。有没有办法恢复该文件或以任何方式解决此问题?任何帮助将不胜感激。

您遇到数据库损坏,应从备份还原。您应该尝试找出数据库发生了什么,以便将来可以防止它。

  • 您的存储可靠吗?
  • 您是否使用像fsync = off这样的危险设置?
  • 最近有崩溃吗?
  • 你真的在运行 9.1 吗?如果是,你不应该这样做,因为它不受支持。
  • pg_clog目录中是否有任何文件?应该有。
  • 您最近是否遇到空间不足问题,可能导致某人从"日志"目录中删除文件?

如前面的响应中所述,您最好从备份中恢复,但是,当我们在服务器上恢复数据时,我发现这些事务文件的元数据与数据存储的位置不同,我们正在全真空下进行一些测试,并且需要将数据库恢复到真空之前的早期状态。 如果数据完整性不像测试数据库那样重要,则可以像这样为缺少的事务日志创建空文件:

dd if=/dev/zero of=/path/to/db/pg_clog/xxxx bs=256k count=1
chown postgres.postgres /path/to/db/pg_clog/xxxx
chmod go-rwX /path/to/db/pg_clog/xxxx

可能有多个文件丢失,但如果只是几个文件,则可以考虑使用。

最新更新