15
Порядковый номер, +1 при каждом восстановлении
номер N линии времени входит в имя сегмента WAL
история сохраняется в файле pg_wal/N.history и архивируется
Линии времени
1
2
целевая
точка
1
2
recovery_target_timeline = 'latest'
восстановление по последней линии
(по умолчанию)
recovery_target_timeline = 'current'
восстановление по текущей линии
recovery_target_timeline = '1'
восстановление по указанной линии
После восстановления на момент в прошлом сервер начинает
генерировать новые сегменты WAL, которые будут пересекаться с
сегментами «из прошлой жизни». Чтобы не потерять сегменты и,
вместе с ними, возможность восстановления на другой момент,
PostgreSQL вводит понятие линии времени. После каждого
восстановления с использованием recovery.signal номер линии времени
увеличивается, и этот номер является частью номера сегментов WAL.
Линии времени образуют древовидную структуру, на рисунках приведен
пример. Первая линия имеет номер 1. Произошло восстановление на
момент времени в прошлом, и началась линия 2.
Если выполнить восстановление с указанием параметра
recovery_t arget_timeline = 'latest' (по умолчанию с версии 12), то, дойдя
то точки ветвления, применение записей WAL продолжится по второй
(более поздней) линии.
Если же указать параметр recovery_target_timeline = '1', то
восстановление продолжится по первой (указанной) линии, а если
указать recovery_target_timeline = 'current', то по текущей (в нашем
случае тоже по линии 1, это поведение по умолчанию до версии 11).
Информацию о точках ветвления PostgreSQL берет из файлов истории
pg_wal/N.history. Поэтому их никогда не следует удалять из архива.