1

PostgreSQL 9.2 の公式ドキュメントに従って、postgres.conf ファイルに継続的なアーカイブを設定しました。

wal_level = archive
archive_mode = on
archive_command = 'test ! -f /.../archive/%f && cp %p /.../archive/%f'

バックアップとリカバリが成功した後、PostgreSQL が最後に再生された WAL ファイルをアーカイブしようとしており、明らかに既にアーカイブされているため、データベースの起動時にアーカイブ コマンドが失敗します。私の recovery.conf ファイルは次のとおりです。

restore_command = 'cp /.../archive/%f "%p"'
recovery_target_time = '2013-07-02 15:20:12'

これは、データベースを起動しようとしたときに発生するエラーです。

LOG:  database system was interrupted; last known up at 2013-07-02 14:53:37 CEST
LOG:  creating missing WAL directory "pg_xlog/archive_status"
LOG:  starting point-in-time recovery to 2013-07-02 15:20:12+02
LOG:  restored log file "000000010000000000000002" from archive
LOG:  redo starts at 0/2000020
LOG:  consistent recovery state reached at 0/20023D0
LOG:  restored log file "000000010000000000000003" from archive
LOG:  recovery stopping before commit of transaction 4063, time 2013-07-02 15:20:12.211559+02
LOG:  redo done at 0/306D8B8
LOG:  last completed transaction was at log time 2013-07-02 15:20:11.189978+02
cp: cannot stat `/.../archive/00000002.history': No such file or directory
LOG:  selected new timeline ID: 2
cp: cannot stat `/.../archive/00000001.history': No such file or directory
LOG:  archive recovery complete
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections
LOG:  archive command failed with exit code 1
DETAIL:  The failed archive command was: test ! -f /.../archive/000000010000000000000003 && cp pg_xlog/000000010000000000000003 /.../archive/000000010000000000000003
LOG:  archive command failed with exit code 1
DETAIL:  The failed archive command was: test ! -f /.../archive/000000010000000000000003 && cp pg_xlog/000000010000000000000003 /.../archive/000000010000000000000003
LOG:  archive command failed with exit code 1
DETAIL:  The failed archive command was: test ! -f /.../archive/000000010000000000000003 && cp pg_xlog/000000010000000000000003 /.../archive/000000010000000000000003
WARNING:  transaction log file "000000010000000000000003" could not be archived: too many failures

これは予想される動作ですか?リカバリ後に最後に再生された WAL ファイルをアーカイブする必要がありますか? その場合、ファイルが既にアーカイブされている場合でも、アーカイブ コマンドが失敗することはありません (ドキュメントに記載されています)。

4

1 に答える 1

0

明らかに、アーカイブは 1 回だけにして、アーカイブのコピーから復元する必要があります。

リカバリ中はアーカイブをオフにし、後でオンにします。

于 2013-11-01T08:40:10.090 に答える