こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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" 

コマンドプロンプトから実行すると、正常にコピーされます。
どこが間違っているのでしょうか?

投稿日時 - 2015-08-18 10:18:37

QNo.9032271

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

試したことが無いので想像ですが、アーカイブ先に書き込み権限がないのでは。
PostgreSQL の実行ユーザは、サービス起動ならば "NETWORK SERVICE" ですよね。

投稿日時 - 2015-08-19 00:00:38

ANo.1

コピー先のパスのコンピュータ名の前のバックスラッシュが足りない気がしますが、下記の様に4つにしたらどうですか?
"\\\\standbyPC\\srch\\%f"

元々2つあるバックスラッシュがエスケープされて合計4つになるかなと。

投稿日時 - 2015-08-18 23:49:25