web-dev-qa-db-ja.com

pg_archivecleanupがインストールされているのにPostgres9.1が見つかりませんか?

2台のPostgres9.1サーバーでストリーミングレプリケーションを設定しています。 archivecleanup以外はすべて問題ありません。ログには次のように書かれています。

sh: 1: pg_archivecleanup: not found
2013-11-19 09:17:37 GMT WARNING:  archive_cleanup_command "pg_archivecleanup /var/lib   /postgresql/9.1/wals/ %r": return code 32512

Pg_archivecleanupが/usr/lib/postgresql/9.1/binにあることがわかります。なぜPostgresはこれを見ることができないのですか?

3
user199835

Postgres 9.1を使用している場合 ストリーミングレプリケーション なぜ必要アーカイブのクリーンアップ?

私はあなたの全体の状況に次の代替案を提案します:

  1. ログセグメントの保持を適切なものに設定します。
    「賢明な」ための良い出発点は、以前にマスターのアーカイブに保持していたのとほぼ同じ数のログセグメントを保持するようにwal_keep_segmentsを設定することです。
    必要に応じてそこから調整できます。

  2. サーバーのarchive_modeをオフにします。
    レプリケーションのストリーミングにより、これが不要になります。上記の(1)は、必要に応じて復元するログセグメントが十分にあることを意味します。

  3. スレーブのpg_archivecleanupにあるrecovery.confコマンドを削除します。
    (ストリーミングレプリケーションでは必要ないためです。)


環境によっては、(2)を除外することもできます(レプリケーション以外のWALアーカイブが本当に必要な場合)が、ほとんどの場合、そのアーカイブしか持っていなかったため、とにかくレプリケーション/ログ配布を行うことができました。ディスクI/Oを自分で保存します。

2
voretaq7

/usr/lib/postgresql/9.1/binはおそらくあなたの道にありません。構成ファイルにフルパスを入れることをお勧めします。

1