WindowsでPostgreSQL9.2から9.5へ雑にメジャーバージョンアップする方法
開発用にPostgreSQLをバージョンアップするのに思いの外ハマったのでメモ。
インストール
www.enterprisedb.com
からexeをダウンロードして、9.2のとき同様にポチポチインストール。
これで9.2と9.5が同居している状態。
データ移行
9.5をインストールすると過去にインストールした9.2と同居している状態となる。
9.2のデータを9.5へデータ移行してあげることが必要。
サービス停止
コントロールパネル > 管理ツール > サービス
9.2と9.5の両方のサービスを停止する
9.2はもう使わないなら「スタートアップの種類」を「手動」または「停止」にする
PostgreSQLフォルダをフルコントロールに変更
データ移行を自動で行うために、「C:\Program Files\PostgreSQL」フォルダをユーザでフルコントロールに変更
ローカル接続を信頼するように変更
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は利用できない・
ショートカット等を
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」をつける
あたりで大いにハマりました。。。。。