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はこれを見ることができないのですか?
Postgres 9.1を使用している場合 ストリーミングレプリケーション なぜ必要アーカイブのクリーンアップ?
私はあなたの全体の状況に次の代替案を提案します:
ログセグメントの保持を適切なものに設定します。
「賢明な」ための良い出発点は、以前にマスターのアーカイブに保持していたのとほぼ同じ数のログセグメントを保持するようにwal_keep_segments
を設定することです。
必要に応じてそこから調整できます。
サーバーのarchive_mode
をオフにします。
レプリケーションのストリーミングにより、これが不要になります。上記の(1)は、必要に応じて復元するログセグメントが十分にあることを意味します。
スレーブのpg_archivecleanup
にあるrecovery.conf
コマンドを削除します。
(ストリーミングレプリケーションでは必要ないためです。)
環境によっては、(2)を除外することもできます(レプリケーション以外のWALアーカイブが本当に必要な場合)が、ほとんどの場合、そのアーカイブしか持っていなかったため、とにかくレプリケーション/ログ配布を行うことができました。ディスクI/Oを自分で保存します。
/usr/lib/postgresql/9.1/bin
はおそらくあなたの道にありません。構成ファイルにフルパスを入れることをお勧めします。