建议使用企业数据库内置的Windows安装程序从PostgreSQL从9.3.0到9.3.1进行次要升级的建议方法是什么?我应该先卸载还是仅在现有安装上安装?
当前安装是使用postgresql-9.3.0-1-windows-x64.exe执行的。现在我想使用postgresql-9.3.1-1-windows-x64.exe进行升级。
e.g. ...
部分。
建议使用企业数据库内置的Windows安装程序从PostgreSQL从9.3.0到9.3.1进行次要升级的建议方法是什么?我应该先卸载还是仅在现有安装上安装?
当前安装是使用postgresql-9.3.0-1-windows-x64.exe执行的。现在我想使用postgresql-9.3.1-1-windows-x64.exe进行升级。
e.g. ...
部分。
Answers:
在Windows上,只需停止postgresql服务,然后在现有9.3.0之上运行postgresql-9.3.1-1-windows-x64.exe即可。无需卸载。当然,建议备份。
缺少Windows上更新过程的清晰明确的文档。请注意,@ dezso提供的文档链接已在当前手册中移至:https ://www.postgresql.org/docs/current/static/upgrading.html
PostgreSQL发行说明通常会在附录E中记录迁移技巧。例如,
Windows安装程序信息的最佳来源是企业数据库论坛。这是我发现解决问题的一些帖子...
请注意,升级信息在各个发行版之间移动。例如,
请注意,自2017年6月起,EnterpriseDB取代了影响该答案链接的社区讨论论坛(https://web.archive.org/web/20171021012954/https://www.enterprisedb.com/news/enterprisedb-announces-新postgres-rocks-在线用户论坛)。我能够在Wayback Machine上找到一些原始帖子。我无法修复的一个死链接是:“ 2010年1月-从8.4.1升级到8.4.2”, http://forums.enterprisedb.com/posts/list/2115.page#7888。
作为记录,至少从当前版本Postgres 9.4起,从Enterprise DB运行Windows的安装程序(默认为从Postgres站点链接),您不必停止该postgresql
服务。安装程序会为您完成该操作。您仍然需要重新建立连接(如果有的话)(大多数客户端会自动这样做)。
最好参考当前手册(使用最新版本的Postgres):
http://www.postgresql.org/docs/current/interactive/upgrading.html
我刚刚将Postgres 10.0升级到10.1,这是一个非常快速和容易的升级。
我从https://www.enterprisedb.com/download-postgresql-binaries下载了二进制文件,并将它们解压缩到C:\postgres
,然后将目录重命名为pgsql
,pgsql-10.1
这样我就可以保留较旧的版本,直到认为没有必要为止。
我复制的dll文件msvcp120.dll
,并msvcr120.dll
到C:\postgres\pgsql-10.1\bin
,因为我更喜欢在“安装程序”这可能增加了比需要更多的膨胀是简单的安装。
然后,我使用了过去编写的简单批处理脚本:
set MAJOR_VERSION=10
set MINOR_VERSION=1
set SERVICE_NAME=pgsql-%MAJOR_VERSION%.%MINOR_VERSION%
set PGHOME=C:\postgres\%SERVICE_NAME%
set PGDATA=C:\postgres\pgdata%MAJOR_VERSION%
%PGHOME%\bin\pg_ctl.exe register -N %SERVICE_NAME% -U LocalSystem -S auto --pgdata=%PGDATA%
::: to unregister old service:
::%PGHOME%\bin\pg_ctl.exe unregister -N %SERVICE_NAME%
我SELECT version();
在psql中运行以确认旧版本:
postgres=# select version(); -[ RECORD 1 ]------------------------------------------------------- version | PostgreSQL 10.0, compiled by Visual C++ build 1800, 64-bit
然后,我运行了批处理脚本,在该脚本上安装了名为的服务postgres-10.1
。
我停止了旧服务并将其设置Startup Type
为Disabled
,然后启动了新服务。
SELECT version();
在psql中再次运行可确认升级(由于停止旧服务器时连接被中止,因此必须运行两次):
postgres=# select version(); server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. The connection to the server was lost. Attempting reset: Succeeded. postgres=# select version(); -[ RECORD 1 ]------------------------------------------------------- version | PostgreSQL 10.1, compiled by Visual C++ build 1800, 64-bit
请记住,升级主要版本需要使用pg_upgrade
或其他方法来更新数据目录,但是对于次要升级而言,此方法就像一个魅力。
10.1
到10.2
,效果很好。