Аварийное восстановление Postgres Logical Replication - PullRequest
0 голосов
/ 18 февраля 2019

Мы собираемся использовать Postgres Logical Replication для перемещения изменений с вышестоящего сервера («исходного» сервера) на нижестоящий сервер («приемный» сервер).

Мы сталкиваемся с проблемами при моделировании сценария аварийного восстановления.Чтобы смоделировать это, мы удаляем исходную базу данных, пока репликация еще активна.Затем мы вызываем новую исходную базу данных и пытаемся: а) переместить данные из приемника в источник и б) настроить репликацию.На этом этапе мы получаем одну из двух ошибок, в зависимости от того, когда мы настроили репликацию (до или после перемещения данных).

Ошибки, которые мы получаем после тестирования выше, являются следующими:

Слот репликации уже используется, сложность в повторном включении слота без удаления

LOG:  logical replication apply worker for subscription "test_sub" has started
ERROR:  could not start WAL streaming: ERROR:  replication slot "test_sub" does not exist
LOG:  worker process: logical replication worker for subscription 16467 (PID 205) exited with exit code 1

Tried amending using:
ALTER SUBSCRIPTION "test_sub" disable;
ALTER SUBSCRIPTION "test_sub" SET (slot_name = NONE);
DROP SUBSCRIPTION "test_sub";

Невозможносоздать подписку из-за конфликтов PK

ERROR:  duplicate key value violates unique constraint "test_pkey"
DETAIL:  Key (id)=(701) already exists.
CONTEXT:  COPY test, line 1

Некоторые возможные разрешения:

  • Настройте логическую репликацию после заданного номера записи WAL.Это может избежать проблем с PK, с которыми мы сталкиваемся
  • Найти способ воссоздания слота репликации в исходной базе данных
  • Резервное копирование сервера Postgres, включая слот репликации, и повторный импорт

Хорошо ли это подходит для использования в Postgres Logical Replication?Это типичный сценарий аварийного восстановления, поэтому хотелось бы знать, как его лучше реализовать.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...