Открыть сервис

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 используется в организациях, где требуется непрерывная работа критически важных информационных систем:

Критика и ограничения

Несмотря на свои преимущества, 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 →