Ошибка восстановления PostgreSQL: слот репликации не существует
Окружающая среда:
Postgresql 13.x
(докеризованный)
Я пытался протестировать настройку аварийного восстановления для узлов PostgreSQL. Архив pg_basebackup и wal_files был взят из режима ожидания.
Выполнено восстановление на новом узле путем копирования и настройки
postgresql.conf
использовать
restore_command
указывая на архив walfiles.
#----------------------- RECOVERY CONFIGS -----------------------
restore_command = 'cp /db-restore/mydb/walfiles/%f "%p"'
recovery_target_timeline = 'latest'
recovery_target_action = promote
- восстановление вроде нормальное. Некоторые случайные
select
запросы, возвращающие правильные результаты. - Но файл журнала часто выдает ошибку ниже.
2022-04-19 10:19:53 UTC [291] rep_usr@[unknown] ERROR: replication slot "slot_name" does not exist
2022-04-19 10:19:58 UTC [296] rep_usr@[unknown] ERROR: replication slot "slot_name" does not exist
Поскольку я сделал резервную копию из режима ожидания, делает ли это восстановление новый узел в качестве резервного и ищет ли он, который использовался в предыдущем поколении?
Как я могу сделать новый узел мастером (удалить информацию о replication_slot)
Каковы правильные шаги для восстановления, если резервная копия была сделана из режима ожидания.
У меня есть 1 главный и 2 резервных узла. И планирую сделать резервную копию из резерва. Итак, требуются ли какие-либо конкретные изменения для
archive_mode
а такжеarchive_command
при использовании этого на резервном узле? Текущие команды:
archive_mode = always
archive_level = logical
archive_command = 'test ! -f /db-archives/walfiles/%f && cp %p /db-archives/walfiles/%f'"
Может ли кто-нибудь помочь с этим? Любые указатели?
Я уверен, что db-backup будет иметь информацию о replication_slot и connection_info как
pg_basebackup
сама является клоном всей БД. Чтобы вернуть конфиги, я вручную удаляю
postgresql.auto.conf
в
main
каталог, который содержит вышеуказанные параметры.
- Итак, как я могу удалить любые другие ссылки на
replication_slot
есть ли такие в бэкапе БД?
1 ответ
Эти сообщения об ошибках, похоже, не выдаются восстановлением, а каким-то другим инструментом, который подключается как пользователь базы данных.
rep_usr
.
Создайте слот репликации, если это необходимо вашему приложению!