#streaming-replication
Как работает потоковая репликация? Что передаётся между узлами?
Что отвечать
Потоковая (физическая) репликация передаёт поток WAL. На мастере процесс walsender отдаёт записи журнала по мере их появления, на реплике процесс walreceiver их принимает и применяет, проигрывая те же изменения страниц. Реплика это побайтовая копия кластера: те же файлы, те же LSN. Standby может быть hot standby - принимать запросы только на чтение, продолжая накатывать WAL. Применение идёт по тем же правилам redo, что и восстановление после сбоя, поэтому реплика всегда «доигрывает» журнал до позиции, которую успела получить. Расхождение между позицией мастера и реплики и есть лаг.
Что хотят услышать
Senior должен: - назвать передаваемое: поток WAL, и процессы walsender/walreceiver - сказать, что физическая реплика это бинарная копия всего кластера на уровне страниц - связать применение на реплике с механизмом redo и LSN - различить роли: hot standby принимает чтения, обычный standby только догоняет
Подводные камни
- ✗ Думать, что физическая реплика копирует таблицы выборочно - это весь кластер целиком на уровне WAL
- ✗ Считать, что на физической реплике можно писать - она только для чтения
- ✗ Путать поток WAL с логическими изменениями строк - физическая репликация работает страницами
Follow-up
- ? Чем walsender отличается от walreceiver?
- ? Почему на физической реплике нельзя выполнить INSERT?
- ? Как реплика понимает, до какой позиции она применила журнал?
Глубина в базе знаний