如何从旧版本恢复 Postgresql 数据库

如何从旧版本恢复 Postgresql 数据库

我跑了很多年达维卡尔在 Debian 服务器(目前 Debian 版本为 11.6)上,可以从许多不同的设备访问我的日历。该应用程序使用PostgreSQL来存储数据。当我在服务器上修修补补时,我发现有两个较旧版本的 PostgreSQL(9.6 和 11)仍安装着,而版本 13 已经安装好了。所以我想,我可以简单地删除这些版本,不会有什么问题。(我真是太蠢了)

我发现我无法再同步进化或通过我的手机(使用卡尔达夫)。我也无法访问 Davical 的管理 Web 界面。我能够追踪到 Davical(或者更准确地说是 PDO)正在尝试使用 /var/run/postgresql/.s.PGSQL.5432 上的 Unix 套接字访问 PostgreSQL,但我发现只有 /var/run/postgresql/.s.PGSQL.5433 存在。我找到了配置文件(/etc/postgresql/13/main/postgresql.conf),我可以在配置文件中告诉 PostgreSQL 开始监听端口 5432 而不是端口 5433。

但我仍然无法访问它。我发现我删除的旧 PostgreSQL 版本中还留有一些配置。所以我想也许有什么东西仍然阻止 PostgreSQL 从这些端口运行。所以我清除了这两个应用程序版本。

它可以工作,但是现在在 PostgreSQL 的日志(/var/log/postgresql/postgresql-13-main.log)中,我看到一条错误消息,提示“davical_app@davical FATAL: le rôle « davical_app » n'existe pas”(“davical_app@davical FATAL: the role “davical_app” does not exist”)

当我使用 psql 查看数据库是否完好时,我收到一条错误消息:

postgres$ psql davical
psql: erreur : FATAL:  la base de données « davical » n'existe pas

(这意味着数据库“davical”不存在)

我去查看发现 /var/lib/postgresql/11/main 和 /var/lib/postgresql/9.6/main 中仍然有文件,但aptitude没有给我重新安装postgresql-9.6或的选项postgresql-11

我的问题:

  • PostgreSQL 有没有办法导入早期版本的数据库?
  • 有没有办法在未安装该版本的情况下导出 PostgreSQL 数据库?
  • 有没有办法重新安装旧版本的 Debian 软件包?

不,我没有任何备份。是的,我知道这看起来很糟糕。至少有办法恢复我的所有约会和任务吗?

答案1

最后我做的是:

  1. 我在另一台计算机上创建了一个运行 Debian Buster 的非特权 LXC 系统容器。
  2. 在这个容器中,我安装了 PostgreSQL 11。
  3. 我将这些文件夹的内容从生产服务器复制到此容器:
    • /etc/postgresql/11/main
    • /var/lib/postgresql/11/main
  4. pg_dump在容器中创建了数据库转储
  5. 在生产服务器上,我使用psql数据库转储重新创建数据库

看起来它正在工作。但我还是要设置自动备份,以免将来不得不做类似的事情。

相关内容