Oracle RAC
Oracle RAC (Real Application Clusters, с англ. — «кластеры реальных приложений») — это программное обеспечение для кластеризации баз данных, разработанное корпорацией Oracle. Оно позволяет нескольким экземплярам СУБД Oracle, работающим на разных серверах (узлах), одновременно обращаться к единой общей базе данных, хранящейся на системе хранения данных (СХД) с общим доступом. Основная цель RAC — обеспечение высокой доступности (High Availability, HA) и горизонтальной масштабируемости (Scalability) для критически важных приложений.
Архитектура и принцип работы
В основе Oracle RAC лежит архитектура «shared-disk» (общий диск). В отличие от архитектуры «shared-nothing», где каждый узел владеет своей частью данных, в RAC все узлы кластера имеют равный доступ ко всем файлам базы данных, управляющим файлам и файлам журналов повтора (redo logs), расположенным на общем хранилище.
Компоненты кластера
Кластер Oracle RAC состоит из следующих ключевых компонентов:
- Узлы (Nodes): Физические или виртуальные серверы, на которых запущены экземпляры Oracle. Каждый узел имеет собственную оперативную память и процессоры.
- Экземпляры (Instances): Каждый узел запускает свой собственный экземпляр СУБД Oracle (набор фоновых процессов и память SGA). Все экземпляры работают с одной и той же базой данных.
- Общая система хранения (Shared Storage): Хранилище данных (SAN, NAS, кластерная файловая система), доступное всем узлам одновременно. Критически важным является использование кластерной файловой системы (OCFS2, ASM, или файловой системы на базе NFS с поддержкой кластеризации).
- Программное обеспечение кластеризации (Clusterware): Собственный стек Oracle Clusterware, который управляет членством узлов в кластере, отслеживает их состояние (heartbeat), управляет ресурсами (VIP-адреса, службы базы данных) и обеспечивает механизмы блокировок и координации.
- Межузловое соединение (Interconnect): Высокоскоростная частная сеть (например, InfiniBand, 10/25/40 Gigabit Ethernet) для передачи данных между узлами. По этому каналу передаются блоки данных (cache fusion) и служебная информация.
Cache Fusion (Слияние кэшей)
Ключевая технология, отличающая Oracle RAC от простого кластера баз данных. Cache Fusion позволяет узлам обмениваться блоками данных, которые они кэшировали в своей SGA, через высокоскоростной Interconnect, без необходимости повторного чтения с диска.
Когда один узел запрашивает блок данных, который уже находится в кэше другого узла, этот блок передаётся по сети. Если блок был изменён (dirty block), он передаётся вместе с информацией о транзакции. Это значительно ускоряет работу приложений, особенно в OLTP-системах, где часто происходит чтение и запись одних и тех же данных.
Global Resource Directory (GRD)
Распределённый каталог, который отслеживает, какие блоки данных кэшированы на каком узле и в каком режиме (чтение, запись, эксклюзив). GRD позволяет эффективно управлять блокировками и координировать доступ к данным. Каждый узел хранит часть GRD, и при необходимости информация запрашивается у других узлов.
Высокая доступность (High Availability)
Oracle RAC обеспечивает несколько уровней отказоустойчивости:
- Отказ узла (Node Failure): Если один из серверов выходит из строя, его экземпляр автоматически отключается. Все подключения к этому узлу перераспределяются на другие работающие узлы кластера. Транзакции, выполнявшиеся на упавшем узле, откатываются. Пользователи могут заметить только кратковременную паузу (обычно секунды или минуты) при переподключении.
- Отказ экземпляра (Instance Failure): Аналогично отказу узла, но без аппаратного сбоя. Oracle Clusterware автоматически перезапускает упавший экземпляр или перенаправляет нагрузку.
- Отказ сети (Network Failure): Используются виртуальные IP-адреса (VIP). При отказе сетевого интерфейса на одном узле, VIP автоматически перемещается на другой узел, и клиенты переподключаются к новому адресу.
- Плановое обслуживание: RAC позволяет проводить плановые работы (обновление ОС, замена оборудования, установка патчей) без остановки базы данных. Можно последовательно выводить узлы из эксплуатации, обслуживать их и возвращать в кластер.
Масштабируемость (Scalability)
RAC позволяет увеличивать производительность системы путём добавления новых узлов в кластер. Это называется горизонтальным масштабированием (scale-out). Приложения, которые хорошо распараллеливаются (например, OLTP-системы с множеством независимых транзакций или системы поддержки принятия решений), могут получить почти линейный прирост производительности при добавлении узлов.
Однако для приложений с интенсивным обменом данными между узлами (например, при частых модификациях одних и тех же блоков разными узлами) масштабирование может быть менее эффективным из-за накладных расходов на Cache Fusion.
Применение
Oracle RAC используется в организациях, где требуется непрерывная работа критически важных информационных систем:
- Финансовый сектор: Банковские системы, обработка транзакций, биржевые системы.
- Телекоммуникации: Системы биллинга, управления сетями, хранения данных абонентов.
- Электронная коммерция: Интернет-магазины с высокой нагрузкой, системы бронирования.
- Государственные информационные системы: Системы налоговой службы, пенсионного фонда, реестры.
- Крупные корпоративные ERP-системы: SAP, Oracle E-Business Suite, PeopleSoft.
Критика и ограничения
Несмотря на свои преимущества, Oracle RAC имеет ряд недостатков:
- Сложность внедрения и администрирования: Настройка кластера, управление межсоединениями, оптимизация Cache Fusion требуют высокой квалификации администраторов.
- Высокая стоимость: Лицензирование Oracle Database Enterprise Edition с опцией RAC является дорогостоящим. Также требуются затраты на высокопроизводительное сетевое оборудование и СХД.
- Требования к приложениям: Не все приложения выигрывают от RAC. Приложения, которые интенсивно конкурируют за одни и те же ресурсы (блоки данных), могут работать медленнее, чем на одном экземпляре, из-за накладных расходов на синхронизацию.
- Зависимость от сети: Производительность кластера критически зависит от скорости и надёжности межузлового соединения.
- Единая точка отказа на уровне СХД: Хотя узлы отказоустойчивы, отказ общей системы хранения (SAN-коммутатора, контроллера СХД) приводит к недоступности всей базы данных. Для защиты от этого требуется дополнительное резервирование на уровне СХД (например, использование технологии Oracle ASM с зеркалированием).
Альтернативы
Существуют и другие подходы к обеспечению высокой доступности и масштабирования баз данных:
- Oracle Data Guard: Технология физической или логической репликации на резервный сервер. Обеспечивает защиту от катастроф (disaster recovery), но не даёт возможности активного использования резервного узла для обработки запросов (в режиме физической репликации).
- Active Data Guard: Расширение Data Guard, позволяющее использовать резервную базу данных для чтения, что частично решает проблему масштабирования.
- Шардинг (Sharding): Разделение данных по нескольким независимым базам данных (шардам). Каждый шард управляется отдельным экземпляром. Это даёт максимальную масштабируемость, но усложняет разработку приложений и управление данными.
- Кластерные СУБД других вендоров: Microsoft SQL Server Always On Availability Groups, IBM Db2 pureScale, PostgreSQL с расширениями (Patroni, pgpool-II).
Интересные факты
- Первая версия Oracle RAC появилась в 2001 году (Oracle 9i RAC), заменив собой более раннюю и менее совершенную технологию Oracle Parallel Server (OPS).
- Oracle RAC может работать на кластерах, состоящих из сотен узлов, и обслуживать базы данных объёмом в десятки терабайт.
- Для управления кластером Oracle использует собственный продукт — Oracle Clusterware, который не зависит от сторонних решений кластеризации (например, Veritas Cluster Server или Microsoft Failover Cluster).
Источники
- Oracle Database Concepts Guide (11g, 12c, 19c, 21c)
- Oracle Real Application Clusters Administration and Deployment Guide
- Oracle Clusterware Administration and Deployment Guide
- Документация корпорации Oracle (docs.oracle.com)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →