PostgreSQL 14から15への移行

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

コメント

タイトルとURLをコピーしました