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

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 7.1 已结束支持。 请参阅 当前版本手册.

1.4. 如果你是在升级 #

PostgreSQL的内部数据存储格式会随新版本而变化。因此,如果你要升级的现有安装的版本号不是“7.1.x”,就必须按照这里的方法备份并恢复数据。这些说明假定你现有的安装在/usr/local/pgsql目录下,数据区域在/usr/local/pgsql/data中。请酌情替换为你实际的路径。

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

  2. 要转储你的数据库安装,输入:

    pg_dumpall > outputfile

    如果你需要保留 OID(例如把它们用作外键),请在运行 pg_dumpall 时使用 -o 选项。pg_dumpall 不保存大对象。如果你需要保存大对象,请查阅第 8.1.4 节。

    务必使用你当前运行版本中的 pg_dumpall 命令。7.1.3 的 pg_dumpall 不能用于较旧的数据库。

  3. 如果你把新版本安装在与旧版本相同的位置,那么最迟在安装新文件之前关闭旧服务器:

    kill -INT `cat /usr/local/pgsql/data/postmaster.pid`

    7.0 之前的版本没有这个 postmaster.pid 文件。如果你使用的是这样的版本,就必须自己找出服务器的进程 ID(例如输入 ps ax | grep postmaster),并把它提供给 kill 命令。

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

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

    有效。

  4. 如果你把新版本安装在与旧版本相同的位置,那么把旧的安装移开也是个好主意,以防以后还会用到它。使用类似这样的命令:

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

安装好PostgreSQL 7.1.3 之后,创建新的数据库目录并启动新服务器。记住,这些命令必须以特殊的数据库用户账户登录执行(如果你是在升级,该账户已经存在)。

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

最后,用

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

恢复你的数据,这里使用新的psql。

你也可以把新版本与旧版本并行安装以减少停机时间。这些主题在第 8.3 节中有详细讨论,无论如何都建议你阅读。

报告文档问题

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