# postgresql.conf
wal_level = hot_standby
archive_mode = on
archive_timeout = 10
archive_command = 'test ! -f /archive/%f && cp %p /archive/%f'
備用服務器
hot_standby = on
我在主服務器處於待機複製/archive/*
至$PGDATA/pg_xlog
,並沒有發生。當我重新啓動備用服務器,我從服務器日誌錯誤消息:
2016-11-21 17:56:09 CST [17762-3] LOG: invalid primary checkpoint record
2016-11-21 17:56:09 CST [17762-4] LOG: record with zero length at 0/6000100
2016-11-21 17:56:09 CST [17762-5] LOG: invalid secondary checkpoint record
2016-11-21 17:56:09 CST [17762-6] PANIC: could not locate a valid checkpoint record
2016-11-21 17:56:09 CST [17761-1] LOG: startup process (PID 17762) was terminated by signal 6: Aborted
2016-11-21 17:56:09 CST [17761-2] LOG: aborting startup due to startup process failure
問題:
是否足以在主服務器在簡單地複製
/archive/*
到$PGDATA/pg_xlog
數據同步到備用服務器待機?如何以及何時在熱備用服務器中恢復WAL文件?備用服務器是否定期檢查其
$PGDATA/pg_xlog
目錄中的新WAL文件?或者我必須手動觸發它?我說的是熱備份而不是流式複製;所以我假設我不必配置
conninfo
。我對嗎?配置
hot_standby = on
並重新啓動服務器後,我仍然可以做一個INSERT
沒有錯誤。如何配置才能使其成爲只讀?
接下來創建備用數據庫的步驟如下:1.'psql postgres -c「select pg_start_backup('backup')」'。 2.將$ PGDATA目錄複製到備用文件系統。 3.'psql postgres -c「選擇pg_stop_backup()」'。 4.在'postgresql.conf'中設置'hot_standby = on'。 5.重新啓動postgresql服務器。 –
看起來不錯(如果你有'fsync = on')。可能您沒有複製足夠的WAL存檔,並且包含'backup_label'中的檢查點的那個不在那裏。你有一個'backup_label'文件,對吧?閱讀條目'START WAL LOCATION'並確保相應的WAL文件在那裏。 –