pg_upgrade
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。