- 締切済み
PostgreSQLのリプリケーション アーカイブ
実行環境 OS:win7 64bit プライマリーとスタンバイをローカルLANで接続 PosgreSQLのバージョン:9.4 以下のように設定しました。 A.プライマリのpostgres.confを修正 1.wal_level=hot_standby 2.max_wal_sender=3 3.archive_mode=off 4・wal_keep_segment=8 B.basebackupを行う C.スタンバイの設定 1.recovery.conf standby_mode='on' primary_conninfo='host=192.168.1.100 port=5432 user=repli possword=xxx' 2.postgres.conf hot_stndby=on 以上のように設定すると、リプリケーションが可能ですが、 これをアーカイブモードにすると、COPYコマンドでエラーが発生します。 プライマリサーバーにアーカイブ場所を設定すればエラーは出ないのですが、 スタンバイ側に設定するとエラーになります。 アーカイブのコマンドは プライマリのpostgres.confに archive_mode=on archive_command='copy "c:\\postgresql\\data\\%p" "\\standbyPC\\srch\\%f""' と設定しています。 この設定でサービスを起動すると、以下のようなLOGが出力されます。 指定されたパスが見つかりません。 2015-08-16 07:48:25 JST LOG: アーカイブコマンドがリターンコード 1で失敗しました 2015-08-16 07:48:25 JST 詳細: 失敗したアーカイブコマンドは次のとおりです: copy "c:\PostgreSQL\data\pg_xlog\000000010000000000000019" "\standbyPC\PostgreSQL\arch\000000010000000000000019" コマンドプロンプトから実行すると、正常にコピーされます。 どこが間違っているのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
試したことが無いので想像ですが、アーカイブ先に書き込み権限がないのでは。 PostgreSQL の実行ユーザは、サービス起動ならば "NETWORK SERVICE" ですよね。
- root139
- ベストアンサー率60% (488/809)
コピー先のパスのコンピュータ名の前のバックスラッシュが足りない気がしますが、下記の様に4つにしたらどうですか? "\\\\standbyPC\\srch\\%f" 元々2つあるバックスラッシュがエスケープされて合計4つになるかなと。