← Назад к вопросам

В скольких зонах можно включить репликацию в Amazon RDS

2.0 Middle🔥 181 комментариев
#Базы данных#Облачные технологии

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Развернутый ответ по зонам доступности и репликации в Amazon RDS

В Amazon RDS репликация между разными зонами доступности (Availability Zones, AZ) — это ключевой механизм обеспечения отказоустойчивости и высокой доступности. Количество зон, в которых можно настроить такую репликацию, напрямую зависит от выбранного варианта развертывания базы данных.

Основные варианты репликации и количество зон

  1. Много-AZ развертывание (Multi-AZ Deployment) — это основной встроенный механизм высокой доступности для большинства движков RDS (PostgreSQL, MySQL, MariaDB, Oracle, SQL Server).
    *   **Количество зон:** Ровно **в двух зонах доступности** в пределах одного региона AWS.
    *   **Как работает:** RDS автоматически создает **синхронную физическую реплику** (standby) в другой AZ. Все операции записи фиксируются на основной и standby-реплике одновременно, прежде чем транзакция будет считаться завершенной. При сбое в основной AZ происходит автоматический failover на standby-реплику без ручного вмешательства.
    *   **Цель:** Обеспечение **отказоустойчивости на уровне AZ** и автоматического восстановления после сбоев, а не для масштабирования чтения.

  1. Реплики для чтения (Read Replicas) — это механизм горизонтального масштабирования для операций чтения.
    *   **Количество зон:** Можно создать **до 15 реплик для чтения** (в зависимости от движка) в рамках **одного региона AWS**. Эти реплики могут находиться **в той же AZ, что и источник, или в любой другой AZ этого региона**. Кроме того, для MySQL и MariaDB поддерживаются **межрегиональные (Cross-Region) реплики для чтения**, что позволяет размещать их в зонах доступности другого региона AWS.
    *   **Как работает:** Создается **асинхронная логическая реплика** данных с исходного экземпляра. Трафик операций чтения можно перенаправлять на эти реплики, разгружая основной инстанс.
    *   **Цель:** **Масштабирование производительности чтения** и создание копий данных для аналитики или аварийного восстановления в другом регионе.

Комбинирование подходов

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

  • Можно создать экземпляр RDS с Multi-AZ, а затем добавить к нему Read Replicas (которые сами могут быть развернуты в Multi-AZ).
  • Для Amazon Aurora (движок, совместимый с MySQL и PostgreSQL) модель отличается. Кластер Aurora состоит из одной первичной инстанс-ноды для записи и до 15 реплик для чтения. Все они используют единое виртуальное кластерное volume storage, реплицированное в 3 AZ региона по умолчанию. Таким образом, отказоустойчивость данных и возможность масштабирования чтения заложены в саму архитектуру.

Практический пример кода (CloudFormation)

Ниже пример фрагмента шаблона CloudFormation, создающего экземпляр RDS для PostgreSQL с включенным Multi-AZ развертыванием (репликация в 2 AZ) и одной репликой для чтения в отдельной AZ.

Resources:
  # Основной инстанс RDS PostgreSQL с Multi-AZ
  MyDBInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      DBInstanceIdentifier: "primary-db-instance"
      Engine: postgres
      DBInstanceClass: db.m5.large
      AllocatedStorage: 100
      MasterUsername: !Ref DBUsername
      MasterUserPassword: !Ref DBPassword
      MultiAZ: true  # Включаем синхронную репликацию в другую AZ
      AvailabilityZone: "us-east-1a" # Опционально, можно не указывать, RDS выберет AZ автоматически
      BackupRetentionPeriod: 7
      DBSubnetGroupName: !Ref MyDBSubnetGroup

  # Реплика для чтения на основе созданного выше инстанса
  MyDBReadReplica:
    Type: AWS::RDS::DBInstance
    Properties:
      DBInstanceIdentifier: "read-replica-instance"
      SourceDBInstanceIdentifier: !Ref MyDBInstance # Указываем источник для репликации
      DBInstanceClass: db.m5.large
      AvailabilityZone: "us-east-1b" # Размещаем реплику для чтения в конкретной AZ, отличной от основной
      PubliclyAccessible: false

Ключевые выводы

  • Стандартная синхронная репликация для высокой доступности (Multi-AZ) работает строго в двух зонах доступности.
  • Асинхронная репликация для масштабирования чтения (Read Replicas) может охватывать множество зон (до 15) в рамках одного региона, а для некоторых движков — даже зоны в разных регионах.
  • Выбор стратегии зависит от целей: отказоустойчивость (Multi-AZ), масштабирование (Read Replicas) или их комбинация.
  • Amazon Aurora предлагает собственную, более продвинутую модель репликации данных и вычислений, где данные по умолчанию реплицируются в 3 AZ.
В скольких зонах можно включить репликацию в Amazon RDS | PrepBro