AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

    • 主页
    • 系统&网络
    • Ubuntu
    • Unix
    • DBA
    • Computer
    • Coding
    • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 189684
Accepted
sharadov
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 3 个回答
  • 10822 Views

3 个回答

  • Voted
  1. 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 年了。在进行小升级时,我不做任何额外的备份,也不采取任何特殊的预防措施。并不是说你不能——即使是文档也说它们带有“一些风险”。

    • 5
  2. 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 不需要转储/恢复,您只需检查此特定问题。检查您的错误日志,一切顺利;)

    • 4
  3. Channa
    2020-11-23T11:54:56+08:002020-11-23T11:54:56+08:00
    yum update  postgresql-version
    
    • 0

相关问题

  • 我可以在使用数据库后激活 PITR 吗?

  • 运行时间偏移延迟复制的最佳实践

  • 存储过程可以防止 SQL 注入吗?

  • PostgreSQL 中 UniProt 的生物序列

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助
subwaysurfers
my femboy roommate

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve