pg_probackup icon indicating copy to clipboard operation
pg_probackup copied to clipboard

Существующий слот репликации вызывает ошибку

Open ykurenkov opened this issue 3 years ago • 2 comments

Выполняем бэкап с параметрами --stream --temp-slot --slot=pg_probackup

INFO: command: /usr/bin/pg_probackup-11 backup -B /var/lib/pgsql/11/backups --instance sokb --backup-mode=full --skip-block-validation --delete-expired --delete-wal --progress --stream --temp-slot --slot=pg_probackup

На этот момент не завершился предыдущий процесс бэкапа с такими же параметрами слотов. В результате получаем ошибку

2022-01-16 12:00:01 +05 [32219]: LOG: Looking for segment: 0000000300000C1D000000F5
2022-01-16 12:00:01 +05 [32219]: ERROR: Couldn't create physical replication slot pg_probackup
2022-01-16 12:00:02 +05 [32219]: ERROR: Interrupted during waiting for WAL streaming

Вижу два варианта решения проблемы с моей стороны:

  1. Использование flock для запуска pg_probackup.
  2. Использование уникального имени слота при каждом запуске.

У обоих вариантов есть свои особенности. В первом не нравится то, что могут быть "пропуски событий" при запуске. Во втором случае в случае аварий можно оставить слот репликации и получить свалку в pg_wal.

Есть еще какие варианты, рекомендации для минимизации вот таких ошибок?

ykurenkov avatar Jan 20 '22 08:01 ykurenkov

Есть еще третий варант - использовать оба метода, при этом лок-файлы и слоты репликации с разными именами для полного бэкапа и для инкремента.

ykurenkov avatar Jan 20 '22 09:01 ykurenkov

Добрый день!

Использование уникального имени слота при каждом запуске.

Во втором случае в случае аварий можно оставить слот репликации и получить свалку в pg_wal.

Слоты временные, поэтому аварии они не переживут. Единственная опасность - это троттлящийся probackup, который будет держать постоянно распухающий слот, но такая опасность существует и сейчас. Чисто теоретически можно, наверное, в имя слота добавлять ID бэкапа.

gsmolk avatar Feb 18 '22 12:02 gsmolk