Description
Имеется нагруженный инстанс в плане высокой скорости модификации данных (и соответственно большой cкорости переключения сегментов WAL). Периодически возникает очередь архивации WAL до нескольких тысяч сегментов (archiver не успевает быстро отрабатывать из-за большого потока WAL).
Бэкапы с режимом --stream отпадают из очень большого объема WAL, остаётся только archive.
Но в пики высокой скорости генерации WAL бэкапы DELTA/PAGE не завершаются только из-за ошибки вида "WAL segment %s could not be archived in %d seconds".
Как я понимаю, для успешного завершения инкрементного бэкапа должен выполниться archive_command для WAL с lsn на момент pg_stop_backup().
Из-за большой очереди архивации понятное дело что можно ждать очень долго этого события.
НО! В конечном счёте данный WAL всё же попадет в архив, пусть и спустя время.
Логично было бы иметь возможно запустить validate на такой ошибочный бэкап спустя время (когда WAL с lsn на момент pg_stop_backup() уже будет в архиве), чтобы он проверил, что все необходимые WAL имеются в архиве и поменял статус бэкапа с ERROR на OK.
Очень жалко, когда бэкап DELTA/PAGE объемом по 300 ГБ и выполнявший по несколько часов в итоге становится ошибочным только из-за того, что WAL вовремя не смог попасть в архив.