过了一会儿,我注意到,当我得到新版本的 postgresql(我正在使用 debian 测试)时,它们正在安装,同时保持旧版本的 DBMS 并行运行(一个监听不同的端口等等)。所以,没有考虑太多,我只是dpkg remove --purge
在旧版本上运行,而没有意识到我正在使用的数据库实际上是在安装的最旧版本上运行。如果使用 --purge 删除 postgresql 包以便我可以取回数据库,FS 上是否有未删除的数据库数据?
过了一会儿,我注意到,当我得到新版本的 postgresql(我正在使用 debian 测试)时,它们正在安装,同时保持旧版本的 DBMS 并行运行(一个监听不同的端口等等)。所以,没有考虑太多,我只是dpkg remove --purge
在旧版本上运行,而没有意识到我正在使用的数据库实际上是在安装的最旧版本上运行。如果使用 --purge 删除 postgresql 包以便我可以取回数据库,FS 上是否有未删除的数据库数据?
检查
/var/lib/postgresql/<version>
。有数据库文件。如果此目录不存在,则将其删除。删除时究竟会发生什么
--purge
,这取决于发行版(更确切地说,在使用不同参数调用的卸载脚本中/var/lib/dpkg/info
)。这取决于脚本(由软件包提供),究竟会发生什么。的逻辑--purge
决定了真正的、完全的移除。如果发生这种情况,数据 - 至少部分 - 在您的磁盘上可能仍然可用,因此恢复仍然不是不可能的(被覆盖的扇区除外),但您不太可能做到这一点。
为此,您需要关闭系统电源(是的,这是在没有任何同步等情况下显式关闭电源的罕见情况之一),然后在不安装它的情况下重新启动,然后进行块级扫描通过其签名来获取 postgresql 数据库文件。
始终从您的数据库进行定期自动备份。