PostgreSQL7.0手册-用户手册-21. 系统应用 - pg_upgrade
描述
pg_upgrade — 允许从前面的版本升级而不需要重载数据
语法
pg_upgrade [ -f filename ] old_data_dir
描述
pg_upgrade 是一个从以前的 PostgreSQL 版本升级而不重载数据的工具。不是所有 Postgres 版本的迁移都可以用这个方法实现。请检查你的节点的版本信息获取细节。
用 pg_upgrade 升级 Postgres
备份你现有的数据目录,最好是用 pg_dumpall 做一次完整输出。
然后:
% pg_dumpall -s >db.out
不带任何数据输出你的旧数据库的表定义。
停止旧的 postmaster 和所有后端的运行。
把你的旧的 pgsql data/ 目录改成(用 mv )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/ 目录。
升级完的数据库将是处于未清理的状态。你在开始生产工作前可能需要运行一个 VACUUM ANALYZE。