↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 9.0 已结束支持。 2015-10-08. 请参阅 当前版本手册.

15.4. 升级 #

这些说明假定你现有的安装在/usr/local/pgsql目录下,数据区域在/usr/local/pgsql/data中。请酌情替换为你实际的路径。

PostgreSQL的内部数据存储格式几乎每个大版本都会变化。因此,如果你要升级的现有安装的版本号不是“9.0.x”,就必须备份并恢复数据。如果是从PostgreSQL“9.0.x”升级,新版本可以使用你当前的数据文件,因此应当跳过下面的备份和恢复步骤,它们并不需要。

  1. 如果要做备份,请确保数据库没有被更新。这不影响备份的完整性,但已更改的数据当然不会包含在内。必要时,可以修改文件/usr/local/pgsql/data/pg_hba.conf(或等价文件)中的权限,禁止除你之外的所有人访问。

    要备份数据库安装,输入:

    pg_dumpall > outputfile

    如果需要保留 OID(例如用作外键),运行pg_dumpall时请使用-o选项。

    做备份时,可以使用当前运行版本的pg_dumpall命令。不过,为获得最佳结果,请尽量使用PostgreSQL 9.0.23 的pg_dumpall命令,因为该版本包含对旧版本的缺陷修复和改进。虽然在你尚未安装新版本时这条建议看似不合常理,但如果打算让新旧两个版本并行安装,遵循它是可取的。这种情况下你可以先正常完成安装,之后再传输数据。这也能缩短停机时间。

  2. 关闭旧服务器:

    pg_ctl stop

    在开机时自动启动PostgreSQL的系统上,很可能有启动文件可以完成同样的事情。例如,在Red Hat Linux系统上可以发现这样有效:

    /etc/rc.d/init.d/postgresql stop

  3. 如果要从备份恢复,请重命名或删除旧安装目录。建议重命名而不是删除,以防遇到问题需要回退。注意该目录可能占用相当大的磁盘空间。要重命名目录,可以使用类似下面的命令:

    mv /usr/local/pgsql /usr/local/pgsql.old

  4. 按第 15.5 节所述安装新版本的PostgreSQL。

  5. 需要时创建新的数据库集簇。记住,这些命令必须以特殊的数据库用户账户登录执行(如果你是在升级,该账户已经存在)。

    /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

  6. 恢复原先的pg_hba.conf以及对postgresql.conf的所有修改。

  7. 再次以特殊的数据库用户账户启动数据库服务器:

    /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data

  8. 最后,从备份恢复数据:

    /usr/local/pgsql/bin/psql -d postgres -f outputfile

    using the new psql.

Further discussion appears in 第 24.4 节, 其中包括前一个安装如何在新安装期间继续运行的说明。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.