如何从PostgreSQL9.1.7升级到9.2.4
具体过程如下:
步骤1:安装postgreSQL 9.2.4
具体过程参见:如何安装PostgreSQL 9.2.4 For Windows?
步骤2:配置鉴权口令文件
pg_upgrade会在升级过程中多次连接新旧数据库,所以可以在pg_hba.conf中将鉴权方式设为"Trust"或者在使用MD5鉴权方式下配置pgpass.conf文件(文件位置:%APPDATA%\postgresql\pgpass.conf)。这样可以避免在升级过程中提示鉴权失败而导致升级不能正常进行。待升级成功后可以移除或清空文件内容。
步骤3:安装插件
将旧数据库服务器中使用的插件同样安装至新数据库服务器中。
步骤4:停止新旧数据库服务
通过命令行或服务管理界面进行
出现问题:
原因:未使用管理员权限运行命令提示符(CMD)
步骤5:用非windows系统管理员权限用户做升级前准备
RUNAS /USER:postgres "CMD.EXE"
SET PATH=D:\Program Files\PostgreSQL\9.2\bin;%PATH%;
步骤6:进入postgres用户目录,执行pg_upgrade(如果环境变量设置正确,会使用新版本下的pg_upgrade),会有升级相应的日志文件生成于此
命令格式:pg_upgrade -b oldbindir -B newbindir -d olddatadir -D newdatadir [option...]
其中会使用 - r 参数:作用是在系统升级成功后仍然保留日志文件。
如果升级过程中出现问题,可以通过windos事件检查器及相应升级日志文件进行分析。
pg_upgrade_internal.log
pg_upgrade_restore.log
pg_upgrade_server.log
pg_upgrade_server_start.log
pg_upgrade_utility.log
出现问题:
(1) 没有配置pgpass.conf或pg_hba.conf,检查日志文件有如下错误信息
could not connect to old postmaster started with the command:
"D:/Program Files (x86)/PostgreSQL/9.1/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "D:/Users/lv/Data/PostgreSQL/9.1" -o "-p 50432 -b " start
cannot write to log file pg_upgrade_server.log
(2) PATH环境变量配置错误引起的失败
手册上的示例为:SET PATH=%PATH%;C:\Program Files\PostgreSQL\9.0\bin; 这样旧数据库服务器环境变量将会使其路径优先被搜索到,导致提示该版本下的pg_upgrade不支持升级到新数据库版本。
(3) 失败后根据提示重新用initdb生成数据库时未创建用户postgres
(4) 创建用户时未创建口令,检查pg_upgrade_internal.log,有如下错误信息
connection to database failed: fe_sendauth: no password supplied
(5) 升级进程未结束再次运行pg_upgrade不成功
可以在进程管理中停止所有postgresql进程,然后重新进行升级
(6) 升级成功后,日志文件被自动删除,可以在命令行中用-r参数指定保留。
步骤7:恢复对配置文件(pg_hba.conf,postgresql.conf)进行的修改
主要是将鉴权方式修改回比较安全的模式
步骤8:升级后处理
升级完成后,pg_upgrade会提示需要运行脚本或批处理文件检查新数据库服务器及删除旧数据库服务器数据。
广告 您可能关注的内容 |