PostgreSQL を Windows にインストールすると、データディレクトリは通常 C:\Program Files\PostgreSQL\xx\data のような場所に配置されます。
しかし、次のような理由で場所を変更したくなることがあります。
- Cドライブの容量が不足している。
- バックアップしやすい場所に置きたい。
本記事では、Windowsの「サービス」に登録されている PostgreSQL の起動設定を変更することで、データディレクトリを移動する方法を解説します。
本記事では、以下の環境を前提としています。
- Windows 11 Home 24H2
- PostgreSQL 17.2
データディレクトリの指定はどこでされているか?
Windows版 PostgreSQL は、Windowsサービスとして起動します。
そのとき PostgreSQL 本体 (postgres.exe) は、次のような形式で起動されています。
postgres.exe -D "C:\Program Files\PostgreSQL\17\data"
この -D オプションが データディレクトリの場所を指定しています。
このコマンドは Windows の「サービス」に保存されており、PostgreSQL は OS 起動時にこの設定で自動起動します。
現在のデータディレクトリの確認方法
-
Win + R→services.mscと入力して「サービス」を開く -
postgresqlから始まるサービスを探す
例:postgresql-x64-17 - 右クリック → プロパティ
- 「実行ファイルのパス」を確認
データディレクトリを変更する手順(レジストリ編集)
- PostgreSQLを停止させる。
- レジストリエディターを開く。
- 次のキーに移動する。
PostgreSQL のサービス名と同じキーを探してください。HKEY_LOCAL_MACHINE └ SYSTEM └ ControlSet001 └ Services └ postgresql-x64-17 - ImagePath を編集する
右側のImagePathをダブルクリックすると、PostgreSQL の起動コマンドが表示されます。
例:"C:\Program Files\PostgreSQL\17\bin\pg_ctl.exe" runservice -N "postgresql-x64-17" -D "C:\Program Files\PostgreSQL\17\data"
この-Dの後ろを、新しいデータディレクトリに変更します。
例:"C:\Program Files\PostgreSQL\17\bin\pg_ctl.exe" runservice -N "postgresql-x64-17" -D "D:\PostgreSQL\data"
注意事項
- データディレクトリは 事前にコピーしておく。
- PostgreSQL は 必ず停止した状態で作業する。
- パスにスペースが含まれる場合は ダブルクォート必須。
- レジストリの誤編集は Windows が起動不能になる可能性がある。
変更が反映されたか確認する
- サービス画面で PostgreSQL を開始
- 再度「プロパティ」→「実行ファイルのパス」を確認
-
-Dのパスが新しい場所になっていれば成功
反映されていない場合は、サービス画面の「操作 → 最新の情報に更新」を実行してください。
参考