postgresql-13 - 将 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) 不兼容,谁能帮我解决这个问题。
解决方案
对于 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 - 创建一个新的数据目录 - 重新导入您的数据)。但是,最适合您的方法将取决于您的数据、允许的中断时间、扩展等......
推荐阅读
- python - Beautiful Soup - 如何抓取包含特定 src 属性的图像?
- digital-ocean - 如何将文件从本地机器复制到数字海洋水滴?
- android - 如何调试 Ionic 4 android 应用程序 css 问题 onRstart
- python - Python Tkinter,笔记本小部件中的按钮对齐问题
- javascript - 即使其中的代码被激活,if 语句也不会阻止事件流
- python - 使用 zip_longest 加入 2 个列表,但使用 None 删除组
- c# - 用括号对数据进行分组如何工作?
- r - 无法让 R 中的 base::by() 工作
- github - 有什么方法可以保存未发布(例如草稿)的问题?
- android - 如何检索从我的图库中选择的图像的文件大小?