Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: replication, postgresql, database, master, slave

Как работает репликация в PostgreSQL (мастер-слейв, мастер-мастер)?

Этот вопрос проверяет знание механизмов репликации в PostgreSQL, их типов и особенностей настройки.

Короткий ответ

В PostgreSQL мастер-слейв репликация копирует данные с главного сервера (мастера) на подчиненные (реплики), которые используются для чтения. Мастер-мастер репликация позволяет всем серверам принимать записи, но требует сложной настройки. PostgreSQL поддерживает мастер-слейв через потоковую репликацию, а мастер-мастер — через сторонние инструменты.

Длинный ответ

Репликация в PostgreSQL позволяет создавать копии данных для повышения надежности и распределения нагрузки. PostgreSQL поддерживает два основных типа репликации: мастер-слейв и мастер-мастер.

1. Мастер-слейв репликация

В этом режиме главный сервер (мастер) принимает все операции записи, а подчиненные серверы (реплики) синхронизируют данные и обслуживают запросы на чтение.

  • Как работает:

    • Мастер записывает изменения в журнал WAL (Write-Ahead Log).

    • Реплики получают эти изменения через потоковую репликацию (streaming replication) или файлы WAL.

    • Реплики могут быть синхронными (ждут подтверждения записи) или асинхронными (возможна задержка).

  • Применение:
    Используется для масштабирования чтения и обеспечения отказоустойчивости. Например, веб-приложение направляет запросы на чтение к репликам, а записи — к мастеру.

  • Пример настройки:
    На мастере:

    ALTER SYSTEM SET wal_level = 'replica'; ALTER SYSTEM SET max_wal_senders = 10;

    На реплике:

    SELECT pg_start_backup('label', true); pg_basebackup -h master_host -D /path/to/data --wal-method=stream

  • Проблемы:

    • Задержка в асинхронной репликации.

    • Реплики только для чтения, что ограничивает запись.

2. Мастер-мастер репликация

В этом режиме несколько серверов могут принимать записи, синхронизируя данные между собой.

  • Как работает:
    PostgreSQL не поддерживает мастер-мастер репликацию из коробки. Для этого используют сторонние инструменты, такие как BDR (Bi-Directional Replication) или Bucardo.
    Серверы обмениваются изменениями, а конфликты разрешаются с помощью правил (например, "последний записавший побеждает").

  • Применение:
    Подходит для систем, где запись должна быть доступна на нескольких узлах, например, в распределенных приложениях.

  • Проблемы:

    • Сложность настройки и управления конфликтами.

    • Возможны проблемы с производительностью из-за синхронизации.

Когда использовать:

  • Мастер-слейв: Для приложений с большим количеством операций чтения и редкими записями.

  • Мастер-мастер: Для систем, где важна возможность записи на нескольких узлах, но требует сложной настройки.

Вывод:
Мастер-слейв репликация в PostgreSQL проста в настройке и подходит для большинства приложений. Мастер-мастер сложнее, но полезна для распределенных систем с высокой нагрузкой на запись.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

Ключевые слова

#replication

#postgresql

#database

#master

#slave

Подпишись на Python Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.