Spec-Zone.ru › MariaDB

О репликации Galera

В MariaDB Cluster сервер реплицирует транзакцию в момент фиксации, транслируя набор записей, связанных с транзакцией, на каждый узел в кластере. Клиент подключается напрямую к СУБД, и в большинстве случаев поведение похоже на поведение собственной MariaDB. API wsrep (API репликации наборов записей) определяет интерфейс между Galera replication и MariaDB.

Синхронная и асинхронная репликация

Основное различие между синхронной и асинхронной репликацией заключается в том, что синхронная репликация гарантирует, что если изменение произошло на одном узле в кластере, то это изменение произойдет на других узлах в кластере «синхронно», или в одно и то же время. Асинхронная репликация не гарантирует задержку между применением изменений на узле «мастер» и распространением изменений на узлы «слейв». Задержка при асинхронной репликации может быть короткой или длинной. Это также подразумевает, что если мастер-узел аварийно завершит работу в топологии асинхронной репликации, то некоторые из последних изменений могут быть потеряны.

Теоретически, синхронная репликация имеет ряд преимуществ перед асинхронной репликацией:

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

Однако на практике синхронная репликация баз данных традиционно реализовывалась с помощью так называемого «двухфазного подтверждения» или распределённой блокировки, что оказалось очень медленным. Низкая производительность и сложность реализации синхронной репликации привели к тому, что асинхронная репликация остаётся доминирующим средством масштабирования производительности и доступности баз данных. Распространённые открытые СУБД, такие как MySQL или PostgreSQL, предлагают только асинхронные или полусинхронные решения репликации.

Репликация Galera не является полностью синхронной. Иногда её называют виртуальной синхронной репликацией.

Метод репликации на основе сертификации

Альтернативный подход к синхронной репликации, использующий методы групповой коммуникации и упорядочивания транзакций, был предложен рядом исследователей. Например:

  • Подход к машине состояний базы данных
  • Не будьте ленивыми, будьте последовательными

Прототипы показали многообещающие результаты. Мы объединили наш опыт в области синхронной репликации баз данных и последние исследования в этой области, чтобы создать библиотеку Galera Replication и API wsrep.

Galera replication — это высокопрозрачное, масштабируемое и виртуальное синхронное решение для репликации баз данных в кластерах для достижения высокой доступности и повышения производительности. Кластеры на основе Galera:

  • Высокодоступные
  • Высокопрозрачные
  • Высокомасштабируемые (масштабирование близко к линейному, в зависимости от приложения)

Библиотека универсальной репликации

Функциональность Galera replication реализована как общая библиотека и может быть связана с любой системой обработки транзакций, которая реализует плагины API wsrep.

Библиотека Galera replication представляет собой протокольный стек, обеспечивающий функциональность подготовки, репликации и применения наборов записей транзакций. Она состоит из:

  • API wsrep определяет интерфейс — обязанности СУБД и поставщика репликации
  • Плагины wsrep — интеграция wsrep в движок СУБД.
  • Поставщик Galera реализует API wsrep для библиотеки Galera
  • Уровень сертификации занимается подготовкой наборов записей и выполнением сертификации
  • Репликация управляет протоколом репликации и обеспечивает возможности полного упорядочивания
  • Фреймворк GCS предоставляет архитектуру плагинов для систем групповой коммуникации
  • многие реализации GCS могут быть адаптированы, мы экспериментировали с spread и нашими собственными реализациями: vsbes и gemini

Многие компоненты библиотеки Galera replication были переработаны и улучшены с появлением MariaDB 10.4, которая включает Galera 4.

Потоки Galera Slave

Хотя поставщик Galera проверяет набор записей, связанных с транзакцией, в момент фиксации на каждом узле в кластере, этот набор записей не обязательно применяется на этом узле кластера немедленно. Вместо этого набор записей помещается в очередь приема узла кластера, и он в конечном итоге применяется одним из потоков Galera slave узла кластера.

Количество потоков Galera slave может быть настроено с помощью переменной системы wsrep_slave_threads.

Потоки Galera slave могут определять, какие наборы записей можно применять параллельно. Однако, если узлы вашего кластера, похоже, часто сталкиваются с проблемами согласованности, то установка значения в 1, вероятно, решит проблему.

Когда состояние узла кластера, как видно из wsrep_local_state_comment, находится в состоянии JOINED, увеличение количества потоков slave может помочь узлу кластера быстрее догнать кластер. В этом случае может быть полезно установить количество потоков в два раза больше, чем количество ЦП в системе.

Потоковая репликация

MariaDB начиная с 10.4

Потоковая репликация была введена в Galera 4, поэтому она доступна только начиная с MariaDB 10.4.

В более старых версиях MariaDB Cluster существовал предел в 2 ГБ на размер транзакции, которую можно было запустить. Узел ожидает завершения транзакции перед выполнением репликации и сертификации. При больших транзакциях, длительных операциях записи и изменениях огромных наборов данных возрастала вероятность конфликта, требующего отката дорогостоящей операции.

Используя потоковую репликацию, узел разбивает огромные транзакции на меньшие и более управляемые фрагменты, а затем реплицирует эти фрагменты в кластер по мере выполнения, вместо ожидания фиксации. После проверки фрагмент больше не может быть прерван конфликтующими транзакциями. Поскольку это может повлиять на производительность как во время выполнения, так и в случае отката, рекомендуется использовать его только с большими транзакциями, которые, скорее всего, не столкнутся с конфликтами.

Для получения дополнительной информации о потоковой репликации см. документацию Galera.

Групповые фиксации

MariaDB начиная с 10.4

Поддержка групповых фиксаций для MariaDB Cluster была введена в Galera 4, поэтому она доступна только начиная с MariaDB 10.4.

В MariaDB групповая фиксация объединяет группы транзакций для сохранения на диске, чтобы повысить производительность. До MariaDB 10.4 эта функция не была доступна в MariaDB Cluster, так как она вмешивалась в глобальное упорядочивание транзакций для репликации. Начиная с 10.4, MariaDB Cluster может воспользоваться преимуществами групповой фиксации.

Для получения дополнительной информации о групповых фиксациях см. документацию Galera.

См. также

  • Galera Cluster: Galera Replication
  • Что такое MariaDB Galera Cluster?
  • Случаи использования Galera
  • Начало работы с MariaDB/Galera Cluster
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется заранее компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/about-galera-replication/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API