我的任务是从一台旧的、无人维护的服务器中恢复数据,它的主要用途应用程序不再工作。基本上只是想在将服务器烧毁之前获得一个 postgres 数据库转储。
我通过 ssh 进入实例,但无法访问数据库。
psql: FATAL: database "foobar" does not exist
这很奇怪。我愿意pg_lscluster
Version Cluster Port Status Owner Data directory Log file
9.1 main 5433 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
好的,有东西在运行。我检查数据目录ls /var/lib/postgresql/
8.4 9.1
呵呵,那好吧。查看这两个目录的内容,很明显所有数据都在 8.4 文件夹中,而 9.1,当我查看psql
正在运行的集群时,我只能看到默认数据。
因此,以某种方式删除了运行 8.4 的集群。不知道为什么或如何(我不是唯一可以访问服务器的人,但我在 bash 历史记录中找不到任何可疑的东西)。
那么我将如何恢复对数据的访问,以便我可以提取一个转储?
好的,我设法解决了它。
我试图创建 cluser
它抱怨说 8.4 不是已安装的版本。好吧,这证实了我的怀疑,在某个时候 postgres 在 debian 仓库中升级到了最新版本,并且留下了数据。
所以我去重新安装 8.4(如果你想按照这些步骤,请记住备份你的数据目录。不要让我对任何数据丢失负责)
的输出
pg_lsclusters
显示8.4主集群是在安装过程中创建的。我担心它会通过全新安装破坏数据目录,但事实并非如此。运行psql
显示所有旧数据仍然存在