返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

14.4. 如果你是在升级

发布于 2019-09-30 03:06:56 字数 1533 浏览 817 评论 0 收藏 0

新版本 PostgreSQL 的内部数据存储格式可能会发生改变。因此,如果你正在升级一个版本号不像"8.2.x"这样的系统,你就必须按照这里说的方法备份和恢复你的数据。这些指导假设你现有的安装在 /usr/local/pgsql 目录里面,并且数据区在 /usr/local/pgsql/data 。根据你的情况修改这些路径。

  1. 确保你在备过程中和备份后没有更新。虽然即使有数据更新也不会影响备份的完整性,但是很明显更新的数据会被排除在备份之外。如果有必要,可以编辑 /usr/local/pgsql/data/pg_hba.conf (或等效的)文件中的权限以禁止除你之外的所有人访问。

  2. 要备份出你的数据库安装,敲入:

    pg_dumpall > outputfile

    如果你需要保留 OID(比如说当你用到它们做外键时),那么带 -o 选项运行 pg_dumpall 。

    要做一个备份,你可以使用当前正在运行版本的 pg_dumpall 命令。不过,最好使用来自 PostgreSQL 8.2.3 的 pg_dumpall ,因为这个版本包含对老版本的错误修补以及改进。虽然这个建议看起来好像很愚蠢,因为你还没有安装新版本,但如果你准备安装新版本,我们还是建议你遵循这个建议。这个时候你可以按照平常那样完成安装,然后再转换数据。这样将降低停业时间。

  3. 如果你准备把新版本的数据库装在与旧数据库相同的位置,那么关闭旧的数据库服务器(至少在安装新文件之前如此):

    pg_ctl stop

    在那些在引导的时候就启动 PostgreSQL 的系统上,可能已经有一个启动文件可以干这件事。例如,在一台 Red Hat Linux 系统上我们可以使用:

    /etc/rc.d/init.d/postgresql stop
  4. 如果你准备装在老版本的地盘上,那么把它们挪走也是一条好主意,以便你碰到麻烦后还能退回去。用这样的命令:

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

当你装完 PostgreSQL 8.2.3 之后,创建一个新的数据库目录,然后启动新服务器。要记住你必须用特殊的数据库用户登录后才能执行这些命令(如果你是升级的话这个帐户应该已经存在了)。

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

最后,使用新的 psql 恢复你的数据:

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

更多内容在节23.5文档里,不管怎样,我们都建议你好好读一下。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文