sharadov Asked: 2017-10-31 09:26:50 +0800 CST2017-10-31 09:26:50 +0800 CST 2017-10-31 09:26:50 +0800 CST Postgres 小版本升级 772 在 linux (Centos) 上执行 postgres 次要版本升级的推荐方法是什么?我正在考虑从 9.5.4 升级到 9.5.5。 postgresql upgrade 3 个回答 Voted Best Answer Evan Carroll 2017-10-31T09:30:50+08:002017-10-31T09:30:50+08:00 只需dist-upgrade在 Linux 上执行或类似操作,或在 Windows/OSX 上安装较新版本。次要版本确保与数据目录(堆和索引)完全兼容。 不过,按道理来说,您必须在升级期间停止数据库。 来自关于版本控制的官方文档 次要版本通过增加版本号的最后一部分来编号。从版本 10 开始,这是版本号的第二部分,例如 10.0 到 10.1;对于旧版本,这是版本号的第三部分,例如 9.5.3 到 9.5.4。PostgreSQL 团队只向次要版本添加错误修复。所有用户都应尽快升级到最新的次要版本。虽然升级总是有一些风险,但 PostgreSQL 次要版本只修复经常遇到的安全性和数据损坏错误,以降低升级风险。社区认为不升级比升级风险更大。 所以本质上,PostgreSQL 非常保守,只有在不升级的风险大于升级的风险时才会发布次要版本号升级。我已经使用 PostgreSQL 大约 15 年了。在进行小升级时,我不做任何额外的备份,也不采取任何特殊的预防措施。并不是说你不能——即使是文档也说它们带有“一些风险”。 ypercubeᵀᴹ 2017-10-31T10:37:41+08:002017-10-31T10:37:41+08:00 简而言之,Postgres 安装(也称为集群)的小升级相当简单: 停止集群 用新版本替换 Postgres 二进制文件(此处的详细信息可能会有所不同,具体取决于操作系统和风格) 重启集群 对于生产系统和试图更加小心的 DBA,还有两件事: 可以在升级之前进行 备份。 在执行升级之前必须阅读发行说明。 有时,即使是很小的升级也需要额外的步骤。有时它正在重建一些索引,有时是更奇怪的东西等等。通常,你不需要做任何额外的事情,但是阅读这些笔记是必不可少的,因为当需要一些额外的工作时,它是为了防止一些错误被修复或扭转某些腐败等。 如果您想从 9.5.4 升级(示例)到 9.5.9,您还需要阅读所有中间版本说明(9.5.5、9.5.6、9.5.7、9.5.8、9.5.9)。对于具体的 9.5.5 注释,请参见下文。 所以步骤是: 阅读发行说明并相应地更改程序 停止所有连接并阻止新连接 进行备份(使用 with 的整个集群pg_basebackup或使用 的每个数据库pg_dump) 停止集群 用新版本替换 Postgres 二进制文件 重启集群 如果涉及复制,您也必须考虑这一点: 对于生产系统和尝试更加小心的 DBA,可以在升级之前进行备份: 停止所有连接并阻止新连接 等待所有副本赶上 并进行备份 停止所有集群(主和副本) 用新版本替换 Postgres 二进制文件(在每个集群中) 重启所有集群 这种情况下的一个变化是可以跳过备份,如果我们保持一个或多个副本停止并使用旧的二进制文件。如果出于任何原因,我们需要回到旧的次要版本,我们可以将该副本提升为主版本。 例如,对于特定的 9.5.5 版本,发行说明说: E.5。发布 9.5.5 发布日期:2016-10-27 此版本包含 9.5.4 中的各种修复。有关 9.5 主要版本中的新功能的信息,请参阅第 E.10 节。 E.5.1。迁移到版本 9.5.5 运行 9.5.X 的用户不需要转储/恢复。 但是,如果您的安装受到下面第一个更新日志条目中描述的错误的影响,那么在更新后您可能需要采取措施修复损坏的可用空间映射。 此外,如果您从 9.5.2 之前的版本升级,请参阅第 E.8 节。 所以,我们也需要阅读第一个变更日志: E.5.2。变化 修复关系自由空间图和可见性图截断的 WAL 日志记录(Pavan Deolasee,Heikki Linnakangas) 这些文件可能在崩溃恢复期间无法正确恢复,或者在备用服务器上写入不正确。空闲空间映射中的虚假条目可能会导致尝试访问已从关系本身截断的页面,通常会产生类似"could not read block XXX: read only 0 of 8192 bytes". 如果启用校验和,则可见性映射中的校验和失败也是可能的。 在https://wiki.postgresql.org/wiki/Free_Space_Map_Problems中讨论了确定是否存在问题并修复问题的程序。 因此,从 9.5.4 迁移到 9.5.5 不需要转储/恢复,您只需检查此特定问题。检查您的错误日志,一切顺利;) Channa 2020-11-23T11:54:56+08:002020-11-23T11:54:56+08:00 yum update postgresql-version
只需
dist-upgrade
在 Linux 上执行或类似操作,或在 Windows/OSX 上安装较新版本。次要版本确保与数据目录(堆和索引)完全兼容。不过,按道理来说,您必须在升级期间停止数据库。
来自关于版本控制的官方文档
所以本质上,PostgreSQL 非常保守,只有在不升级的风险大于升级的风险时才会发布次要版本号升级。我已经使用 PostgreSQL 大约 15 年了。在进行小升级时,我不做任何额外的备份,也不采取任何特殊的预防措施。并不是说你不能——即使是文档也说它们带有“一些风险”。
简而言之,Postgres 安装(也称为集群)的小升级相当简单:
对于生产系统和试图更加小心的 DBA,还有两件事:
在执行升级之前必须阅读发行说明。
有时,即使是很小的升级也需要额外的步骤。有时它正在重建一些索引,有时是更奇怪的东西等等。通常,你不需要做任何额外的事情,但是阅读这些笔记是必不可少的,因为当需要一些额外的工作时,它是为了防止一些错误被修复或扭转某些腐败等。
如果您想从 9.5.4 升级(示例)到 9.5.9,您还需要阅读所有中间版本说明(9.5.5、9.5.6、9.5.7、9.5.8、9.5.9)。对于具体的 9.5.5 注释,请参见下文。
所以步骤是:
pg_basebackup
或使用 的每个数据库pg_dump
)如果涉及复制,您也必须考虑这一点:
对于生产系统和尝试更加小心的 DBA,可以在升级之前进行备份:
并进行备份
这种情况下的一个变化是可以跳过备份,如果我们保持一个或多个副本停止并使用旧的二进制文件。如果出于任何原因,我们需要回到旧的次要版本,我们可以将该副本提升为主版本。
例如,对于特定的 9.5.5 版本,发行说明说:
所以,我们也需要阅读第一个变更日志:
因此,从 9.5.4 迁移到 9.5.5 不需要转储/恢复,您只需检查此特定问题。检查您的错误日志,一切顺利;)