Windows10上のPostgreSQL14を15へupgradeした際のメモです。
PostgreSQL15のインストール
インストール時に気を付けることとして、ポート番号が重複しようにします。今回は既存がデフォルト:5432だったので、5433を指定してインストールしました。
旧バージョンの停止
net stop postgresql-x64-14
pg_hba.confの編集
pg_upgradeを実行するためには、認証方式をtrustにしておく必要があるようです。新旧両方のpg_hba.confを編集します。一応、local / IPv4 / IPv6すべて変更しておきました。なお、手元の環境ではpg_hba.confはC:\Windows\Program Files\PostgreSQL\xx\dataにありました。
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 trust
# IPv6 local connections:
host all all ::1/128 trust
pg_upgradeを実行
pg_upgradeを実行します。最新バージョン側のexeを実行する必要があるようで、この時点ではパスを変更していなかったので、フルパスで指定しています。
'C:\Program Files\PostgreSQL\15\bin\pg_upgrade.exe' `
-d "C:\Program Files\PostgreSQL\14\data\" `
-D "C:\Program Files\PostgreSQL\15\data\" `
-b "C:\Program Files\PostgreSQL\14\bin\" `
-B "C:\Program Files\PostgreSQL\15\bin\" `
-p 5432 -P 5433 -U postgres
整合性チェックを実行しています。
-----------------------------
Checking cluster versions ok
Checking database user is the install user ok
Checking database connection settings ok
Checking for prepared transactions ok
Checking for system-defined composite types in user tables ok
Checking for reg* data types in user tables ok
Checking for contrib/isn with bigint-passing mismatch ok
Creating dump of global objects ok
Creating dump of database schemas
ok
Checking for presence of required libraries ok
Checking database user is the install user ok
Checking for prepared transactions ok
Checking for new cluster tablespace directories ok
この後pg_upgradeが失敗した場合は、続ける前に新しいクラスタを
initdbで再作成する必要があります。
アップグレードを実行しています。
------------------
Analyzing all rows in the new cluster ok
Freezing all rows in the new cluster ok
Deleting files from new pg_xact ok
Copying old pg_xact to new server ok
Setting oldest XID for new cluster ok
Setting next transaction ID and epoch for new cluster ok
Deleting files from new pg_multixact/offsets ok
Copying old pg_multixact/offsets to new server ok
Deleting files from new pg_multixact/members ok
Copying old pg_multixact/members to new server ok
Setting next multixact ID and offset for new cluster ok
Resetting WAL archives ok
Setting frozenxid and minmxid counters in new cluster ok
Restoring global objects in the new cluster ok
Restoring database schemas in the new cluster
ok
Copying user relation files
ok
Setting next OID for new cluster ok
Sync data directory to disk ok
Creating script to delete old cluster ok
Checking for extension updates ok
アップグレードが完了しました
----------------
オプティマイザーの統計は、pg_upgrade では転送されません。そのため
新サーバーを起動した後、以下を行うことを検討してください。
C:/Program Files/PostgreSQL/15/bin/vacuumdb -U postgres --all --analyze-in-stages
このスクリプトを実行すると、旧クラスタのデータファイル delete_old_cluster.batが削除されます:
統計情報は移行されないようなので、商用環境では対応が必要そうです。
pg_hba.confを元に戻す
必要に応じてtrustから元の設定に戻します。
postgresql.confを編集
インストール時にポート番号を5433にしていたので、5432に変更します。旧バージョンについても変更して動かす場合は変更が必要です。なお、postgresql_confもpg_hba.confと同じ場所(C:\Windows\Program Files\PostgreSQL\xx\data)にあります。
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
port = 5433 # (change requires restart)
環境変数を編集
PATHに旧バージョンのフォルダが設定されていたため削除し、新バージョンのフォルダを設定します。
新バージョンを起動
net start postgresql-15
psql -V
psql (PostgreSQL) 15.1
コメント