WindowsでPostgreSQL9.2から9.5へ雑にメジャーバージョンアップする方法

開発用にPostgreSQLをバージョンアップするのに思いの外ハマったのでメモ。

インストール

www.enterprisedb.com
からexeをダウンロードして、9.2のとき同様にポチポチインストール。
これで9.2と9.5が同居している状態。

データ移行

9.5をインストールすると過去にインストールした9.2と同居している状態となる。
9.2のデータを9.5へデータ移行してあげることが必要。

サービス停止

f:id:MSitter29:20160706180600j:plain
コントロールパネル > 管理ツール > サービス
9.2と9.5の両方のサービスを停止する
9.2はもう使わないなら「スタートアップの種類」を「手動」または「停止」にする
f:id:MSitter29:20160706180617j:plain

PostgreSQLフォルダをフルコントロールに変更

データ移行を自動で行うために、「C:\Program Files\PostgreSQL」フォルダをユーザでフルコントロールに変更
f:id:MSitter29:20160706180656j:plain

ローカル接続を信頼するように変更

9.2<->9.5間での通信できるように両方のpg_hba.conf
C:\Program Files\PostgreSQL\9.2\data\pg_hba.conf
C:\Program Files\PostgreSQL\9.5\data\pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

このようにMETHODの部分をmd5からtrustに変更


9.5のポートを変更

C:\Program Files\PostgreSQL\9.5\data\postgresql.conf

port = 5433				# (change requires restart)

と9.2と重複しないように5432から5433へ変更

データ移行

管理者権限でコマンドプロンプトを起動

cd C:\Program Files\PostgreSQL\9.5\bin

pg_upgrade.exe --old-datadir "C:/Program Files/PostgreSQL/9.2/data" --new-datadir "C:/Program Files/PostgreSQL/9.4/data" --old-bindir "C:/Program Files/PostgreSQL/9.2/bin" --new-bindir "C:/Program Files/PostgreSQL/9.4/bin" -U postgres

を実行してデータを移行する

元に戻す

9.5のポート

C:\Program Files\PostgreSQL\9.5\data\postgresql.conf

port = 5432				# (change requires restart)
サービス起動

コントロールパネル > 管理ツール > サービス
9.5のサービスを起動する

その他

気になる人はpg_hba.confやPostgreSQLフォルダのアクセス権限も戻してあげてください。

pgAdmin

今まで利用していたpgAdminだと9.5は利用できない・
f:id:MSitter29:20160706180840j:plain
ショートカット等を
C:\Program Files\PostgreSQL\9.2\bin\pgAdmin3.exe
から
C:\Program Files\PostgreSQL\9.5\bin\pgAdmin3.exe

へ変更する。

完了

これで9.2から9.5に移行することができました。

  • PostgreSQLをフルコントロールにする
  • 9.5のポートを一時的に変更する
  • pg_upgradeに「-U postgres」をつける

あたりで大いにハマりました。。。。。