pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pg_upgrade — 允许从前一个版本升级而无需重新加载数据
pg_upgrade [ -ffilename]old_data_dir
pg_upgrade 是一个用于从前一个 Postgres 版本升级而无需重新加载所有数据的工具。 并非所有 Postgres 版本间的迁移都能用这种方式处理。请查阅发行说明了解与你的安装相关的细节。
用 pg_upgrade 升级 Postgres
备份你现有的数据目录,最好用 pg_dumpall 做一次完整的转储。
然后执行:
% pg_dumpall -s >db.out
转储出旧数据库的表定义而不含任何数据。
停止旧的 postmaster 和所有后端。
用 mv 把你旧的 pgsql data/ 目录重命名为 data.old/。
执行
% make install
以安装新的二进制文件。
运行 initdb 创建一个包含新版本系统表的 新 template1 数据库。
启动新的 postmaster。(注意:在升级完成之前,绝对不能有用户连接到 数据库。你可以临时不带 -i 启动 postmaster,和/或临时修改 pg_hba.conf。)
把工作目录切换到 pgsql 主目录,然后输入:
% pg_upgrade -f db.out data.old
该程序会做一些检查以确保一切都配置正确, 然后运行你的 db.out 脚本重建你原有的所有数据库和表,但不包含数据。接着它会把 包含非系统表和索引的数据文件从 data.old/ 物理移动到相应的 data/ 子目录中,替换 db.out 脚本执行期间创建的空数据文件。
如需允许用户登录,恢复你原来的 pg_hba.conf。
停止并重启 postmaster。
仔细检查升级后数据库的内容。如果发现问题,你需要用完整的 pg_dump 备份恢复。满意之后你可以删除 data.old/ 目录。
升级后的数据库将处于未清理(un-vacuumed)的状态。在开始生产工作之前,你可能想运行一次 VACUUM ANALYZE。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。