Pojawienie się dwunastej wersji serwera PostgreSQL spowodowało konieczność wprowadzenia poprawek do stosowanych przez nas procedur odtwarzania bazy danych po awarii! Przypomnijmy, że w wersjach PostgreSQL 8, 9, 10, i 11 odtwarzanie bazy danych w oparciu o archiwalne pliki WAL realizowaliśmy poprzez utworzenie w katalogu Data Directory pliku o nazwie recovery.conf
, a w nim – umieszczenie parametru restore_command
. Parametr ten wskazywał sposób przywracania archiwalnych plików WAL z lokalizacji, w której pierwotnie były one zapisane. W chwili uruchamiania serwera, plik recovery.conf
był automatycznie wykrywany i powodował przejście serwera w tryb aplikowania historycznych transakcji z archiwalnych plików WAL. Po zakończeniu procesu odtwarzania, plik recovery.conf
zmieniał nazwę na recovery.done
.
Począwszy od wersji PostgreSQL 12, parametr restore_command
umieszczamy w głównym pliku parametrów (zwykle postgresql.conf
w katalogu Data Directory), a do wyzwolenia trybu aplikowania historycznych transakcji z archiwalnych plików WAL służy teraz plik-marker o nazwie recovery.signal
, który umieszczamy w katalogu Data Directory. Zawartość tego pliku jest nieistotna (zwykle tworzymy pusty plik), liczy się tylko jego obecność w chwili uruchamiania serwera. Po zakończeniu procesu odtwarzania, plik recovery.signal
jest usuwany automatycznie.
Warto nadmienić, że w podobny sposób zmodyfikowano mechanizmy replikacji opartej o pliki WAL – tam również parametry konfiguracyjne (m.in. hot_standby
, primary_conninfo
, promote_trigger_file
) umieszczamy teraz w głównym pliku konfiguracyjnym, a w celu aktywacji trybu replikacji umieszczamy w katalogu Data Directory plik-marker o nazwie standby.signal
. Plik ten zniknie w chwili promocji serwera Standby do roli Master.
Wzmianki na ten temat znajdują się w oficjalnej dokumentacji: PostgreSQL Documentation