yum update
作为升级到 2012.09 的一部分,我刚刚在我的 Amazon Linux 实例上运行,它将 PostgreSQL 从 9.1 升级到 9.2。现在 PostgreSQL 不会启动。我该怎么办?
(这是一个非常不完整的问题,因为它只是在这里提供发布答案的地方)。
yum update
作为升级到 2012.09 的一部分,我刚刚在我的 Amazon Linux 实例上运行,它将 PostgreSQL 从 9.1 升级到 9.2。现在 PostgreSQL 不会启动。我该怎么办?
(这是一个非常不完整的问题,因为它只是在这里提供发布答案的地方)。
Amazon 的 PostgreSQL 软件包将从 9.1 升级到 9.2,就好像这是一次正常的小更新一样。不是;请参阅PostgreSQL 版本政策,它清楚地表明主要版本是“xy”,例如“9.1”、“9.2”等。这个版本政策可能很奇怪,也可能是不明智的,但它也被广泛理解并且是你所期望的包装商了解。升级 PostgreSQL 集群的文档非常清楚地解释了这一点。
亚马逊包似乎没有得到,只是升级 PostgreSQL。这是一个非常糟糕的主意。升级可能涉及停机和破坏向后兼容性的更改。C 扩展函数必须重新编译。如果
pg_upgrade
不能与您的数据库一起使用,则可能需要转储和重新加载。即使pg_upgrade
可以使用,停机时间也可能很长。请参阅Andrew Dunstan的 Amazon 严重的 PostgreSQL 打包错误,以及AWS 论坛上的此错误报告。
亚马逊
对此有一个常见问题解答条目,但这确实是错误的答案。正确答案是“不问就不要升级!”。不仅如此,做 apg_upgrade
还需要一些准备,并且不适用于所有数据库。这真是个糟糕的建议。(他们现在似乎默默地删除了这个常见问题条目,这将帮助那些仍在从旧版本更新的客户!)尽管如此,
pg_upgrade
一旦发生这种情况,这是您唯一简单的选择。如果您不能使用它,您需要回滚到 PostgreSQL 9.1、pg_dump
您的数据库pg_dumpall --globals-only
以及,然后安装 9.2 并加载转储。请参阅升级 PostgreSQL 集群