PostgreSQL データベースクラスターを適切に管理するために、PostgreSQL Recovery Kit では postmaster プロセスをポートの引数 “-p port” で実行する必要があります。このポートは、PostgreSQL リソース階層を作成し、作成された階層を監視するために必要です。postmaster プロセスの現在の引数一覧を表示するには、PostgreSQL データベースクラスターのデータディレクトリにある postmaster.opts ファイルを参照してください。このファイルの内容の例を以下に示します。
C:/Program Files/PostgreSQL/9.6/bin/postgres.exe "-D" "E:\PGSQL1" "-p" "5432"
この例では、ポートの引数を指定して postmaster プロセスを実行しています。 postmaster プロセスがポートの引数で実行されていない場合は、以下の 2つの方法のいずれかを使用して追加する必要があります。
- 既存の Windows サービスインスタンスにポートの引数を追加する
- Windows 以外のサービスインスタンスにポートの引数を追加する
既存の Windows サービスインスタンスにポートの引数を追加する
PostgreSQL Recovery Kit によって保護される PostgreSQL データベースクラスターが、PostgreSQL ソフトウェア v9.6 の初期インストールで作成された postgresql-x64-9.6 サービスなどの Windows サービスを介して実行されている場合、サービスのスタートアップコマンドラインを変更する必要があります。これは、以下の手順で実施できます。
既存の PostgreSQL データベースクラスターインスタンスを停止します。これは、以下のいずれかの方法で実施します。
Windows サービスインターフェース (services.msc) を使用して、サービスの停止を選択する
コマンドラインユーティリティ "sc" を使用する(例: sc stop service_name)
コマンド "net" を使用する(例: net stop service_name)
サービスのスタートアップコマンドラインを変更します。これは、"sc" ユーティリティを使用するコマンドラインまたはレジストリのスタートアップコマンドラインを編集することで実行できます。 注記: PostgreSQL サービスのスタートアップコマンドラインは、pg_ctl.exe ユーティリティを使用します。pg_ctl ユーティリティから postmaster プロセスに引数を渡すには、"-o" 引数を使用する必要があります。"-o" 引数には、以下に示す変更で使用される "-p port" のような postmaster スタートアップオプションの引用符付きリストがあります。 "sc" コマンドラインユーティリティを使用してスタートアップコマンドラインを編集するには、以下の手順に従ってください。この例では、postgresql-x64-9.6 サービスを使用しています。
サービスの binPath (スタートアップコマンドライン)を取得します。例えば、"sc qc postgresql-x64-9.6" は次のようになります(この例では、スタートアップコマンドラインの出力行のみが表示されます)。
BINARY_PATH_NAME : “C:\Program Files\PostgreSQL\9.6\bin\pg_ctl.exe” runservice -N “postgresql-x64-9.6” -D “E:\PGSQL1” –w
binPath を更新してください。 注記: binPath 引数では "="の後ろには 1つのスペースがあり、値は二重引用符で囲まなければなりません。したがって、埋め込みの二重引用符をエスケープする必要があります。
sc config postgresql-x64-9.6 binPath= “\“C:\Program Files\PostgreSQL\9.6\bin\pg_ctl.exe\” runservice -N \“postgresql-x64-9.6\” -D \“E:\PGSQL1\” –w –o \”-p 5432\” “
レジストリ内のスタートアップコマンドラインを編集するには、regedit などのレジストリ編集ツールを使用する必要があります。
a. regedit を使用して、サービス ImagePath のレジストリ値を見つけます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\postgresql-x86-9.6\ImagePath
b. 既存のコマンドラインの最後にポートの引数を追加して、ImagePath の値を変更します。
-o “-p 5432”
- 既存の PostgreSQL データベースクラスターのインスタンスを再起動します。これは、以下のいずれかの方法で実施できます。
Windows サービスインターフェース (services.msc) を使用して、サービスの開始を選択する
コマンドラインユーティリティ "sc" を使用する(例: sc start service_name)
コマンド “net” を使用する (例: net start service_name)
- postmaster.opts ファイルをチェックして、postmaster プロセスがポートの引数で実行されていることを確認します。
Windows 以外のサービスインスタンスにポートの引数を追加する
PostgreSQL データベースクラスター用の Windows サービスが存在しない場合は、PostgreSQL ユーティリティ pg_ctl.exe を使用して、PostgreSQL データベースクラスターの停止と再起動を実行する必要があります。これは、以下の手順で行うことができます。
- PostgreSQL データベースクラスターを停止する
pg_ctl stop –D F:\PGSQL2
- PostgreSQL データベースクラスターを起動する
pg_ctl start –D F:\PGSQL2 –w –o “-p 5433”
- 先述のように postmaster.opts ファイルをチェックして、postmaster プロセスがポートの引数で実行されていることを確認します。
このトピックへフィードバック