Postgresql
PostgreSQL 停止連續恢復而沒有錯誤
我在 Windows Server 上執行了一些處於連續恢復模式的 Postgresql 10 實例。偶爾他們只是停止恢復而沒有給出任何錯誤,就像在這個範例日誌文件中一樣(在 CSV 格式中,為了清楚起見,我刪除了一些欄位):
2022-08-23 19:42:02.391,"restored log file ""000000010000029F0000001A"" from archive" 2022-08-23 19:42:07.638,"restored log file ""000000010000029F0000001B"" from archive" 2022-08-23 19:42:13.276,"restored log file ""000000010000029F0000001C"" from archive" 2022-08-23 19:42:18.464,"restored log file ""000000010000029F0000001D"" from archive" 2022-08-23 19:42:18.699,"redo done at 29F/1CFFF7F8" 2022-08-23 19:42:18.708,"last completed transaction was at log time 2022-07-20 12:49:38.247406-03" 2022-08-23 19:42:24.304,"restored log file ""000000010000029F0000001C"" from archive" 2022-08-23 19:42:48.625,"selected new timeline ID: 2" 2022-08-23 19:43:13.718,"archive recovery complete" 2022-08-23 19:43:27.746,"database system is ready to accept connections"
即使歸檔目錄中存在序列中要恢復的下一個 wal 文件(000000010000029F0000001D,000000010000029F0000001E),也會發生這種情況。我正在使用的恢復命令是這樣的:
restore_command = '"C:/program files/postgresql/10/bin/pg_standby.exe" -s 2 D:/archive/127 %f %p %r 2>>D:/archive/127/pg_standby.log'
我的問題是,有什麼方法可以找出導致實例停止恢復的原因嗎?
如果恢復停止並且伺服器在您沒有明確告訴它這樣做的情況下進行升級,則您可能處於存檔恢復模式而不是待機模式。
從 PostgreSQL v12 開始,您可以通過創建文件
standby.signal
而不是recovery.signal
在 PostgreSQL 數據目錄中來啟動待機模式。在 PostgreSQL v12 之前,您必須設置
standby_mode = on
以recovery.conf
實現相同的目標。