> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Реплики для чтения

> Масштабируйте рабочие нагрузки с преобладанием чтения с помощью реплик для чтения в ClickHouse Managed Postgres

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

export const galaxyOnClick = eventName => () => {
  try {
    if (typeof window !== "undefined" && window.galaxy && eventName) {
      window.galaxy.track(eventName, {
        interaction: "click"
      });
    }
  } catch (e) {}
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <Icon />
                <span>Бета</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                Возможность в статусе бета. 
                <u>
                    <a href="/docs/beta-and-experimental-features#beta-features">
                        Подробнее.
                    </a>
                </u>
            </span>
        </div>;
};

Реплики для чтения позволяют создать одну или несколько копий вашей основной базы данных Managed Postgres. Эти реплики постоянно синхронизируются с основной базой данных с помощью встроенной репликации PostgreSQL, чтобы отражать все изменения.

Чтобы управлять репликами для чтения, нажмите значок редактирования в вашем хранилище:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/warehouse-view.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=c571663f8b5313e58a1e2f19f26a92bd" alt="Представление хранилища со значком редактирования" size="md" border width="2490" height="750" data-path="images/managed-postgres/warehouse-view.png" />

Откроется диалоговое окно хранилища, где можно просмотреть существующие сервисы и создать новые реплики для чтения:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/read-replica-dialog.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=b114b4a8d0fa125ec94c1f9cad9813ad" alt="Диалоговое окно управления репликами для чтения" size="md" border width="1370" height="870" data-path="images/managed-postgres/read-replica-dialog.png" />

<div id="managing-read-replicas">
  ## Управление репликами для чтения
</div>

Страница **Реплики для чтения** предлагает два представления, между которыми можно переключаться с помощью элементов управления **Flow** и **Table** в правом верхнем углу.

Представление **Flow** показывает топологию репликации: вверху находится основной экземпляр, а от него вниз к каждой подключенной реплике идут стрелки, так что вы сразу видите уровень, регион и статус:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/read-replicas-flow.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=7c6e9a3207778839757b475af8f63dac" alt="Представление Flow для реплик для чтения с топологией основного экземпляра и реплик" size="lg" border width="1556" height="682" data-path="images/managed-postgres/read-replicas-flow.png" />

Представление **Table** показывает список всех реплик с указанием Service name, облачного провайдера и региона, статуса сервиса, времени создания и действием **Detach service**:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/read-replicas-table.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=f5a016d90b176767ba92a8217603d61e" alt="Представление Table для реплик для чтения" size="lg" border width="1556" height="392" data-path="images/managed-postgres/read-replicas-table.png" />

Чтобы создать новую реплику, нажмите **Create read replica** в правом верхнем углу любого из представлений.

<div id="why-use-read-replicas">
  ## Зачем нужны реплики для чтения
</div>

<div id="scalability">
  ### Масштабируемость
</div>

Реплики для чтения позволяют горизонтально масштабировать базу данных, распределяя рабочие нагрузки с интенсивным чтением между несколькими выделенными инстансами. Это особенно полезно для отчетных запросов, аналитических задач и панелей мониторинга в реальном времени, которые в противном случае конкурировали бы за ресурсы с продакшн-трафиком.

<div id="isolation">
  ### Изоляция
</div>

Направляя аналитические запросы и запросы бизнес-аналитики на реплики для чтения, вы разгружаете основной экземпляр, чтобы он оставался производительным и отзывчивым для операций записи и критически важных транзакционных рабочих нагрузок. Такое разделение повышает общую производительность и предсказуемость системы. Это также означает, что вам не нужно предоставлять аналитическим инструментам или средствам отчетности доступ на запись — они могут безопасно работать с репликой без риска случайного изменения данных.

<div id="business-continuity">
  ### Непрерывность бизнеса
</div>

Реплики для чтения могут играть важную роль в аварийном восстановлении. Если ваша основная база данных выйдет из строя, реплику для чтения можно перевести в роль основной, сведя к минимуму время простоя и потерю данных. Это обеспечивает дополнительный уровень отказоустойчивости помимо резервных узлов Высокой доступности.

<div id="how-read-replicas-work">
  ## Как работают реплики для чтения
</div>

В Managed Postgres реплики для чтения используют архитектуру WAL shipping, а не потоковую репликацию. Такое решение позволяет свести к минимуму влияние на основную базу данных.

<div id="wal-shipping-from-object-storage">
  ### WAL shipping из объектного хранилища
</div>

Когда ваша основная база данных обрабатывает транзакции, она генерирует записи журнала Write-Ahead Log (WAL). Эти сегменты WAL непрерывно архивируются в объектное хранилище (S3). Реплики для чтения получают и воспроизводят эти сегменты WAL из объектного хранилища, чтобы оставаться синхронизированными с основной базой.

Эта архитектура отличается от [резервных узлов высокой доступности](/ru/products/managed-postgres/high-availability), которые используют потоковую репликацию с прямым подключением к основной базе.

<div id="why-we-chose-this-approach">
  ### Почему мы выбрали этот подход
</div>

Мы намеренно спроектировали реплики для чтения так, чтобы они получали WAL из объектного хранилища, а не подключались напрямую к основному узлу как потоковые standby-реплики. Такой подход обеспечивает полную изоляцию между репликами для чтения и основной базой данных:

* **Нулевые накладные расходы на репликацию для основного узла**: Реплики для чтения не поддерживают потоковые соединения с основным узлом, поэтому не создают никакой дополнительной нагрузки на CPU, память или сеть для ваших критически важных рабочих нагрузок.
* **Независимое масштабирование**: Вы можете добавлять или удалять реплики для чтения без какого-либо влияния на производительность основного узла.
* **Сетевая изоляция**: Реплики для чтения работают в собственной сетевой среде с отдельными конечными точками подключения.

<div id="replication-lag-characteristics">
  ### Характеристики задержки репликации
</div>

Компромисс такого архитектурного решения — задержка репликации. Сегменты WAL архивируются с основного узла через равные промежутки времени (обычно каждые 60 секунд или при заполнении сегмента — в зависимости от того, что произойдёт раньше). Это означает, что в обычных условиях реплики для чтения могут отставать от основного узла на несколько десятков секунд.

Для большинства сценариев масштабирования чтения — отчётности, аналитики, панелей мониторинга — такая задержка приемлема. Если вашему приложению требуется чтение почти в реальном времени, подумайте, можно ли направлять запросы на основной узел или устроит ли вас согласованность в конечном счёте в пределах этого окна.
