问题描述
所以,我粗心大意地将 Ubuntu 从 18 升级到 20——因此 postgresql 从 10 升级到 12——没有备份我的 postgresql-10 集群。现在我正在考虑升级集群以使用 12,我意识到这是一个错误。既然 postgres 本身已经升级,有没有办法在尝试升级它们之前备份它们?
我可以复制整个数据文件夹并将其压缩到某个位置,但是 (a) 这将占用大量磁盘空间,并且 (b) 我肯定还不太了解 postgres,无法从这些文件中恢复.
(这里最后一个烦人的事情,也许值得自己提出问题,是我的 pg10 数据目录在一个外部驱动器上,我想继续使用它。即使我能解决我的备份问题,我不确定这样做的“最简单”方法是什么......)
编辑:实际上我认为我的问题与我想象的有点不同,postgres 备份工具可能仍然对我有用。我会回来报告的!
解决方法
不支持降级 PostgreSQL 的方法。
您能做的最好的事情是采用普通格式 pg_dump
并继续编辑文件,直到您成功将其加载到 v10。将转储分成 pre-data
、data
和 post-data
部分。
事实证明我同时安装了两个版本的 Postgres,因此我能够在升级集群之前使用简单的“pg_dumpall”进行备份。 This manpage 和 this blogpost 都有助于解决问题。
因为我有很多可用的板载存储空间,所以我让 pg_upgradecluster 填充默认数据文件夹,然后我将其全部复制到我的外部,并编辑了 conf 文件以指向该文件夹。 (然后,是的,我备份了升级后的集群。)