@xxx44yyy

Сколько нужно создавать слотов для 10 реплик при потоковой репликации?

Правильно ли понимаю, что 1 слот = 1 репликация? Т.е. если мне нужно будет иметь 10 репликаций, то и слотов нужно сделать 10. Так?
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Зависит от схемы расположения реплик.

Каждое соединение репликации использует один из допустимых max_wal_senders хоста к которому подключается. Если вы настраиваете слоты репликации - то вдобавок вам нужно соответствующее число max_replication_slots на этом хосте.
pg_basebackup в свою очередь использует до двух коннектов max_wal_senders и до одного max_replication_slots (зависит от параметров запуска и версии)

Так если вы будете копировать все 10 реплик одновременно с помощью basebackup с одной мастер-базы - вам понадобится 20 max_wal_senders и 10 max_replication_slots. После запуска реплик будет использовано 10 max_wal_senders и от 0 до 10 max_replication_slots - смотря как настроите. Для каждой реплики отдельный слот репликации если вы хотите использовать слоты репликации.
Но это если настраивать репликацию без каскада.
Коннекты репликации считаются не по кластеру, а подключённые к конкретному инстансу. В случае каскада у вас легко может быть схема, например:
с мастера репликацию читают 3 реплики, с каждой из них репликацию получают ещё по 3 реплики - вот уже 9 реплик, а использовали только по 3 walsender на хост.

И при таком числе реплик весьма рекомендую делать каскад. И сеть на мастере поберечь и в случае переключения мастера придётся меньше баз рестартовать (primary_conninfo всё ещё меняется только рестартом всей базы, шанс у моего патча быть принятым в pg13 весьма призрачный)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы