我在访问 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
可能有多个文件丢失,但如果只是几个文件,则可以考虑使用。