Мы используем postgresql 10 и используем pg_basebackup --pgdata=- -X fetch --format=tar
для резервного копирования.
В зависимости от размера нашей базы данных резервное копирование может занять много часов.
Итак, мы проверяем, сколько времени заняло резервное копирование и каково эквивалентное сохранение WAL нашего wal_keep_segments
параметра, запустив SELECT max(modification)-min(modification) FROM pg_ls_waldir()
.
Однако эквивалентное время хранения WAL для одного и того же wal_keep_segments
сильно различается, в то время как срок хранения WAL падает слишком низко, наша резервная копия не удалась из-за удаления сегментов WAL.
pg_basebackup: could not get write-ahead log end position from server:
ERROR: requested WAL segment 000000010001DDE200000034 has already been removed
Есть ли способ настроить сохранение WAL напрямую вместо количества сегментов WAL? И что может вызвать эту проблему?
Вот график сохранения WAL наших баз данных. Некоторое увеличение шага произошло из-за увеличения wall_keep_segments, но волнообразный паттерн - нет.
![enter image description here](https://i.stack.imgur.com/PJDGh.png)