web-dev-qa-db-ja.com

WindowsでPostgreSQLのマイナーアップグレードを行う方法。 9.3.0から9.3.1?

PostgreSQLからマイナーアップグレードを実行するための推奨される方法は何ですか。 Enterprise DBビルドのWindowsインストーラーを使用して9.3.0から9.3.1?最初にアンインストールする必要がありますか、それとも既存のインストールに上書きしてインストールしますか?

現在のインストールはpostgresql-9.3.0-1-windows-x64.exeを使用して実行されました。次に、postgresql-9.3.1-1-windows-x64.exeを使用してアップグレードします。

10
buzz3791

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インストーラー情報の最良の情報源は、Enterprise DBフォーラムでした。これが質問に対処した私が見つけた投稿です...

アップグレード情報はリリース間で移動することに注意してください。例えば、

2017年6月の時点で、EnterpriseDBは、この回答のリンクに影響を与えるコミュニティディスカッションフォーラムを置き換えました( https://web.archive.org/web/20171021012954/https://www.enterprisedb .com/news/enterprisedb-announces-new-postgres-rocks-online-user-forum )。 Wayback Machineの元の投稿の一部を探すことができました。修復できなかった1つのデッドリンクは、「2010年1月-8.4.1から8.4.2へのアップグレード」、 http://forums.enterprisedb.com/posts/list/2115です。 .page#7888

8
buzz3791

念のため、Enterprise DB(デフォルトは Postgresサイトからリンクされている )からWindowsのインストーラーを実行すると、少なくとも現在のバージョンのPostgres 9.4以降、postgresqlサービス。インストーラがそれを行います。接続がある場合は、それでも接続を再確立する必要があります(ほとんどのクライアントがこれを自動的に行います)。

currentマニュアルを参照してください(Postgresのcurrentバージョンを使用):

http://www.postgresql.org/docs/current/interactive/upgrading.html

4

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%
_

古いバージョンを確認するために、psqlでSELECT version();を実行しました。

_postgres=# select version();
-[ RECORD 1 ]-------------------------------------------------------
version | PostgreSQL 10.0, compiled by Visual C++ build 1800, 64-bit
_

次に、上記で_postgres-10.1_という名前のサービスをインストールするバッチスクリプトを実行しました。

古いサービスを停止し、その_Startup Type_をDisabledに設定して、新しいサービスを開始しました。

PsqlでSELECT version();を再度実行すると、アップグレードが確認されました(古いサーバーを停止すると接続が中止されたため、2回実行する必要がありました)。

_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_またはその他の方法で更新する必要がありますが、マイナーアップグレードの場合、この方法は魅力的でした。

3
isapir