我跑了很多年达维卡尔在 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
最后我做的是:
- 我在另一台计算机上创建了一个运行 Debian Buster 的非特权 LXC 系统容器。
- 在这个容器中,我安装了 PostgreSQL 11。
- 我将这些文件夹的内容从生产服务器复制到此容器:
/etc/postgresql/11/main
/var/lib/postgresql/11/main
- 我
pg_dump
在容器中创建了数据库转储 - 在生产服务器上,我使用
psql
数据库转储重新创建数据库
看起来它正在工作。但我还是要设置自动备份,以免将来不得不做类似的事情。