Oracle Data Guard
Oracle Data Guard — это технология резервирования и аварийного восстановления базы данных Oracle, обеспечивающая создание, поддержку и мониторинг одной или нескольких синхронизированных копий (standby-баз) производственной базы данных (primary-базы). Data Guard входит в состав редакции Oracle Database Enterprise Edition и позволяет автоматизировать переключение (failover) на резервную базу в случае сбоя основной, минимизируя время простоя и потерю данных. Технология основана на передаче и применении журналов повторного выполнения (redo logs) от primary-базы к standby-базам.
История
Разработка Data Guard началась в конце 1990-х годов как часть Oracle 8i. Первая версия, выпущенная в 2001 году, предоставляла базовые возможности физического резервирования (Physical Standby) и ручного переключения. В Oracle 9i (2002) была добавлена поддержка логического резервирования (Logical Standby), позволяющая использовать standby-базу для чтения и частичной записи. Версия Oracle 10g (2004) представила автоматическое переключение (Fast-Start Failover) и улучшенный мониторинг через Data Guard Broker. Oracle 11g (2007) ввела Active Data Guard — опцию, разрешающую открывать физическую standby-базу в режиме только для чтения во время применения журналов. В Oracle 12c (2013) появилась поддержка многопотокового применения (Real-Time Apply) и интеграция с Oracle Multitenant. Современные версии (Oracle 19c и 23c) включают такие функции, как автоматическая коррекция повреждений блоков (Automatic Block Repair), синхронизация с облачными средами (Oracle Cloud Infrastructure) и улучшенное управление через Data Guard Broker.
Архитектура
Компоненты
Data Guard состоит из следующих ключевых элементов:
- Primary-база — основная база данных, работающая в режиме чтения-записи. Все изменения данных сначала фиксируются в журналах повторного выполнения (redo logs) на primary-базе.
- Standby-база — одна или несколько копий primary-базы, поддерживаемых в синхронном или асинхронном режиме. Существует два типа standby-баз:
- Physical Standby — точная блочная копия primary-базы, поддерживаемая в состоянии восстановления. Может быть открыта в режиме только для чтения (при использовании Active Data Guard).
- Logical Standby — база данных, содержащая те же логические данные, но с возможностью структурных изменений (например, добавления индексов). Использует SQL-применение журналов.
- Data Guard Broker — автоматизированная система управления конфигурацией Data Guard, предоставляющая интерфейсы командной строки (DGMGRL) и графические (Enterprise Manager). Broker управляет переключениями, мониторингом и обновлением конфигурации.
- Redo Transport Services — службы передачи журналов повторного выполнения от primary-базы к standby-базам. Поддерживают три режима синхронизации:
- SYNC (синхронный) — primary-база ожидает подтверждения от standby-базы перед фиксацией транзакции. Гарантирует нулевую потерю данных (RPO=0) при сбое primary.
- ASYNC (асинхронный) — primary-база не ждёт подтверждения, передача журналов происходит в фоновом режиме. Допускает потерю данных, но снижает задержки на primary.
- FASTSYNC (быстрый синхронный) — гибридный режим, используемый в некоторых конфигурациях для баланса производительности и защиты.
- Apply Services — службы применения журналов на standby-базе. Для Physical Standby применяется Redo Apply (восстановление на уровне блоков), для Logical Standby — SQL Apply (преобразование redo в SQL-операторы).
Режимы работы
Data Guard поддерживает три основных режима защиты данных:
- Maximum Protection — гарантирует нулевую потерю данных. Используется только синхронная передача. При недоступности standby-базы primary-база останавливается. Требует как минимум одной standby-базы с синхронным режимом.
- Maximum Availability — аналогичен Maximum Protection, но при недоступности standby-базы primary-база продолжает работу в асинхронном режиме. После восстановления связи автоматически возвращается к синхронному.
- Maximum Performance — используется асинхронная передача. Обеспечивает максимальную производительность primary-базы, но допускает потерю данных при сбое.
Функциональные возможности
Переключение (Switchover и Failover)
Data Guard поддерживает два типа переключения:
- Switchover — плановое переключение ролей между primary-базой и standby-базой без потери данных. Используется для технического обслуживания, обновлений или тестирования. Выполняется без остановки работы приложения (при правильной настройке).
- Failover — аварийное переключение на standby-базу при сбое primary-базы. Может быть автоматическим (Fast-Start Failover) или ручным. Fast-Start Failover требует настройки наблюдателя (Observer) — отдельного процесса, контролирующего доступность primary-базы.
Active Data Guard
Опция Active Data Guard (доступна в редакции Oracle Database Enterprise Edition с дополнительной лицензией) позволяет открывать физическую standby-базу в режиме только для чтения во время применения журналов. Это даёт возможность использовать standby-базу для выполнения отчётов, запросов и резервного копирования без ущерба для репликации. В Oracle 19c и 23c Active Data Guard также поддерживает:
- Автоматическое исправление повреждённых блоков (Automatic Block Repair) — при обнаружении повреждения на primary-базе блок восстанавливается из standby-базы.
- Удалённое восстановление (Remote Recovery) — возможность восстановления повреждённых блоков на primary-базе из standby-базы.
- Поддержка DML (Data Manipulation Language) на standby-базе через глобальные временные таблицы.
Data Guard Broker
Broker предоставляет централизованное управление конфигурацией Data Guard через командную строку (DGMGRL) или графический интерфейс (Oracle Enterprise Manager). Основные функции:
- Создание и настройка конфигурации Data Guard.
- Мониторинг состояния primary-базы и standby-баз (задержки, ошибки, статус).
- Автоматическое переключение (Fast-Start Failover) с настройкой наблюдателя.
- Управление обновлениями (rolling upgrades) — последовательное обновление primary-базы и standby-баз без остановки работы.
Применение
Oracle Data Guard используется в следующих сценариях:
- Аварийное восстановление (Disaster Recovery) — обеспечение работы базы данных при сбое основного центра обработки данных (ЦОД). Standby-база может располагаться в удалённом географическом регионе.
- Плановое обслуживание — переключение на standby-базу для выполнения обновлений, патчей или аппаратного обслуживания primary-базы без остановки работы приложения.
- Распределение нагрузки на чтение — использование standby-баз (с Active Data Guard) для выполнения запросов и отчётов, снижая нагрузку на primary-базу.
- Миграция и тестирование — создание копий базы данных для тестирования обновлений, изменений схемы или новых приложений без влияния на продуктивную среду.
Ограничения и критика
- Лицензирование — Data Guard входит в состав Oracle Database Enterprise Edition, но Active Data Guard требует дополнительной лицензии. Для некоторых организаций стоимость может быть значительной.
- Задержки репликации — в асинхронном режиме возможна потеря данных (RPO > 0). В синхронном режиме увеличивается время отклика primary-базы из-за ожидания подтверждения.
- Сложность настройки — для крупных конфигураций с несколькими standby-базами и автоматическим переключением требуется тщательное проектирование сети, хранения и мониторинга.
- Зависимость от сети — синхронная репликация требует низкой задержки и высокой пропускной способности канала связи между primary-базой и standby-базой. При высоких задержках производительность primary-базы может снижаться.
- Ограничения логического резервирования — Logical Standby не поддерживает все типы данных и операции (например, некоторые DDL-операции или использование специфических типов Oracle). Требуется дополнительная настройка для исключения неподдерживаемых объектов.
Конкурирующие технологии
На рынке решений для резервирования баз данных Oracle Data Guard конкурирует с:
- Oracle GoldenGate — технология логической репликации, поддерживающая двунаправленную синхронизацию и репликацию между различными версиями Oracle и другими СУБД. GoldenGate обеспечивает более гибкую репликацию, но требует отдельной лицензии и сложнее в настройке.
- Сторонние решения — такие как DBvisit (специализированное решение для Oracle), Quest SharePlex (логическая репликация) и Dell EMC RecoverPoint (аппаратная репликация на уровне блоков). Эти решения часто предлагают более низкую стоимость или дополнительные функции, но не интегрированы так глубоко, как Data Guard.
- Облачные решения — Oracle Cloud Infrastructure (OCI) предоставляет автоматизированное резервирование через Data Guard в облачных средах, а также собственные сервисы аварийного восстановления (OCI Disaster Recovery). Аналогичные решения есть у Amazon RDS for Oracle (Multi-AZ, Read Replicas) и Microsoft Azure SQL Database (Active Geo-Replication).
Интересные факты
- Data Guard поддерживает до 30 standby-баз для одной primary-базы (в Oracle 19c и выше). Из них до 9 могут быть синхронными.
- В Oracle 23c появилась возможность использования Data Guard для репликации между базами данных в разных контейнерах (PDB) в архитектуре Multitenant.
- Data Guard может работать в сочетании с Oracle RAC (Real Application Clusters) — кластерная конфигурация primary-базы или standby-базы поддерживается.
- Технология используется в крупнейших финансовых и телекоммуникационных системах, где требования к времени восстановления (RTO) и потерям данных (RPO) минимальны.
Источники
- Oracle Database Data Guard Concepts and Administration Guide (Oracle Corporation, 2023)
- Oracle Database Licensing Information User Manual (Oracle Corporation, 2023)
- «Oracle Data Guard: The Complete Guide» by Robert G. Freeman (Oracle Press, 2011)
- «Oracle Database 19c New Features» by Sam R. Alapati (Apress, 2020)
- Документация Oracle по Data Guard Broker (Oracle Help Center, 2024)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →