我有 $PGDATA/base 但没有别的。它是在 postgreSQL 服务关闭后从安装中获取的,所以很干净。有什么方法可以重新创建 $PGDATA 中的其他元素以允许再次使用它 - pg_tblspc/, global/ ?
FWIW 我正在运行 8.1.23。
谢谢
我有 $PGDATA/base 但没有别的。它是在 postgreSQL 服务关闭后从安装中获取的,所以很干净。有什么方法可以重新创建 $PGDATA 中的其他元素以允许再次使用它 - pg_tblspc/, global/ ?
FWIW 我正在运行 8.1.23。
谢谢
您遗漏了太多信息,以至于恢复有用数据的机会微乎其微。
pg_clog
包含提交/回滚日志。没有这些,系统就不知道数据库文件的哪些部分有效,哪些部分无效。(严重过度简化,但是嘿)。pg_xlog
,预写日志。没有这些,数据库将无法处理不完整的写入,因此它会看到数据库文件处于不完整状态,可能已损坏。索引可能已损坏,堆页面可能已部分写入等。global/pg_control
,包含系统标识符、事务环绕值、事务日志检查点位置等等的文件。... 和更多。
遵循文档中有关如何备份数据库的说明至关重要。不按照说明进行操作将导致备份无用且无法恢复。测试备份也很重要。
通过深入分析和
postgres
为数据恢复修改的服务器二进制文件的黑客版本,我希望有可能恢复损坏的数据版本,主键中有重复条目、损坏的外键、多个数据副本已更新,重新出现已删除的行等。这需要对 PostgreSQL 服务器有一些深入的了解并花费一些时间 - 所以你会看到一个不平凡的成本,你只会找回一个损坏的副本你的数据。