首页 > 解决方案 > 将 postgres pod 版本 12 更新到 13 时出现问题

问题描述

我有一个运行应用程序的 Kubernetes 集群。集群的一部分是一个 postgresql pod,当前运行版本 12.4。不幸的是,我发现我需要升级 postgresql 版本 13。在这里我删除了版本 12 的 pod,然后使用新的图像版本 13 创建了一个新的 postgres pod。而 pod create 出现错误(数据目录由 PostgreSQL 版本初始化12,与此版本 13.1 (Debian 13.1-1.pgdg100+1) 不兼容,谁能帮我解决这个问题。

标签: postgresql-13

解决方案


对于 kubernetes,我相信存储在 pod 外部是持久的,因此通过删除 12 版 pod 并替换为 13 版,您基本上已经执行了升级,但没有考虑您的数据。

PostgreSQL 主要版本不兼容,您不应期望使用版本 13 二进制文件打开版本 12 集群:

对于 PostgreSQL 的主要版本,内部数据存储格式可能会发生变化,从而使升级变得复杂。将数据移动到新的主要版本的传统方法是转储并重新加载数据库,尽管这可能会很慢。更快的方法是 pg_upgrade。复制方法也可用,如下所述。(如果您使用的是 PostgreSQL 的预打包版本,它可能会提供脚本来帮助进行主要版本升级。有关详细信息,请参阅包级文档。)

我会怎么做?我会将版本 12 pod 放回恢复服务并在此处阅读升级文档: https ://www.postgresql.org/docs/13/upgrading.html

使用 pg_upgrade 或使用 pg_dump 采用导出/导入方法(导出您的数据 - 升级 pod - 创建一个新的数据目录 - 重新导入您的数据)。但是,最适合您的方法将取决于您的数据、允许的中断时间、扩展等......


推荐阅读