Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

MySQL Cluster - это технология, обеспечивающая кластеризацию без совместного использования ресурсов и автоматическое сегментирование для системы управления базами данных MySQL . Он разработан для обеспечения высокой доступности и высокой пропускной способности с низкой задержкой, обеспечивая при этом почти линейную масштабируемость. [3] MySQL Cluster осуществляется через ОПРС механизм хранения или для MySQL NDB кластера ( «ОПРС» обозначает N etwork Д ату б ASE).

Архитектура [ править ]

MySQL Cluster разработан на основе распределенной архитектуры, совместимой с ACID , с несколькими главными серверами, без единой точки отказа . MySQL Cluster использует автоматическую шардинга (секционирования) масштабировать операции чтения и записи на аппаратном обеспечении и могут быть доступны через SQL и Non-SQL (NoSQL) API ,

Репликация [ править ]

Внутри MySQL Cluster использует синхронную репликацию через механизм двухфазной фиксации , чтобы гарантировать, что данные будут записаны на несколько узлов после фиксации данных. (Это контрастирует с тем, что обычно называют «репликацией MySQL», которая является асинхронной .) Для гарантии доступности требуются две копии (известные как реплики ) данных. MySQL Cluster автоматически создает «группы узлов» из числа реплик и узлов данных, указанного пользователем. Обновления синхронно реплицируются между членами группы узлов для защиты от потери данных и поддержки быстрого переключения между узлами.

Также возможна асинхронная репликация между кластерами; это иногда называют «репликацией кластера MySQL» или «географической репликацией». Обычно это используется для репликации кластеров между центрами обработки данных для аварийного восстановления или для уменьшения эффекта задержки сети за счет размещения данных физически ближе к группе пользователей. В отличие от стандартной репликации MySQL, географическая репликация MySQL Cluster использует оптимистичный контроль параллелизма и концепцию эпох, чтобы обеспечить механизм для обнаружения и разрешения конфликтов, [4] позволяя активную / активную кластеризацию между центрами обработки данных.

Начиная с MySQL Cluster 7.2, поддержка синхронной репликации между центрами обработки данных поддерживалась функцией многосайтовой кластеризации. [5]

Горизонтальное разделение данных (автоматическое разделение) [ править ]

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

Данные в таблицах MySQL Cluster (NDB) автоматически распределяются по всем узлам данных в системе. Это делается на основе алгоритма хеширования на основе первичного ключа на столе , и является прозрачным для конечного применения . Клиенты могут подключаться к любому узлу в кластере, и запросы автоматически получают доступ к правильным сегментам, необходимым для выполнения запроса или фиксации транзакции. MySQL Cluster может поддерживать кросс-сегментные запросы и транзакции.

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

Гибридное хранилище [ править ]

MySQL Cluster позволяет хранить наборы данных, превышающие емкость одной машины, и получать к ним доступ на нескольких машинах.

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

MySQL Cluster записывает журналы повтора на диск для всех изменений данных, а также регулярно проверяет данные, указывающие на диск. Это позволяет кластеру последовательно восстанавливать данные с диска после полного сбоя кластера. Поскольку журналы повторного выполнения записываются асинхронно относительно фиксации транзакции, некоторое небольшое количество транзакций может быть потеряно в случае отказа всего кластера, однако это можно уменьшить, используя географическую репликацию или многосайтовый кластер, описанный выше. Текущая задержка асинхронной записи по умолчанию составляет 2 секунды, и ее можно настроить. Обычные сценарии единой точки отказа не приводят к потере данных из-за синхронной репликации данных в кластере.

Когда таблица MySQL Cluster поддерживается в памяти, кластер будет обращаться к дисковой памяти только для записи Redo-записей и контрольных точек. Поскольку эти записи являются последовательными и задействованы ограниченные шаблоны произвольного доступа, MySQL Cluster может достичь более высокой пропускной способности записи с ограниченным дисковым оборудованием по сравнению с традиционной дисковой кэширующей СУБД. Эта контрольная точка на диске с данными таблицы в памяти может быть отключена (для каждой таблицы), если постоянство на диске не требуется.

Ничего не поделился [ править ]

MySQL Cluster не имеет единой точки отказа . При условии, что кластер настроен правильно, любой отдельный узел, система или часть оборудования может выйти из строя без отказа всего кластера. Общий диск ( SAN ) не требуется. Соединения между узлами могут быть стандартными соединениями Ethernet , Gigabit Ethernet , InfiniBand или SCI .

API SQL и NoSQL [ править ]

Поскольку MySQL Cluster хранит таблицы в узлах данных, а не на сервере MySQL, для доступа к базе данных доступно несколько интерфейсов:

  • Доступ к SQL через сервер MySQL
  • API-интерфейсы NoSQL, в которых библиотеки MySQL Cluster могут быть встроены в приложение для обеспечения прямого доступа к узлам данных без прохождения через уровень SQL. Они включают:
    • Memcached
    • Node.js / JavaScript
    • Java и JPA
    • HTTP / ОТДЫХ
    • NDB API (C ++)

MySQL Cluster Manager [ править ]

Являясь частью коммерческого MySQL Cluster CGE, MySQL Cluster Manager - это инструмент, предназначенный для упрощения создания и администрирования базы данных MySQL Cluster CGE за счет автоматизации общих задач управления, включая масштабирование в реальном времени, обновления, резервное копирование / восстановление и реконфигурацию. MySQL Cluster Manager также отслеживает и автоматически восстанавливает узлы приложений MySQL Server и узлы управления, а также узлы данных MySQL Cluster.

Реализация [ править ]

MySQL Cluster использует три разных типа узлов (процессов):

  • Узел данных (процесс ndbd / ndbmtd) : эти узлы хранят данные. Таблицы автоматически сегментируются по узлам данных, которые также прозрачно обрабатывают балансировку нагрузки, репликацию, аварийное переключение и самовосстановление.
  • Узел управления (процесс ndb_mgmd) : используется для настройки и мониторинга кластера. Они требуются только для запуска или перезапуска узла кластера. Их также можно настроить как арбитров, но это не обязательно (вместо этого серверы MySQL могут быть настроены как арбитры). [6]
  • Узел приложения или узел SQL (процесс mysqld) : сервер MySQL (mysqld), который подключается ко всем узлам данных для хранения и извлечения данных. Этот тип узла не является обязательным; можно запрашивать узлы данных напрямую через NDB API, либо изначально используя C ++ API, либо один из дополнительных API NoSQL, описанных выше.

Обычно ожидается, что каждый узел будет работать на отдельном физическом хосте, виртуальной машине или облачном экземпляре (хотя очень часто узлы управления размещаются вместе с серверами MySQL). В целях наилучшей практики рекомендуется не размещать узлы в одной группе узлов на одном физическом узле (поскольку это будет представлять собой единую точку отказа).

Версии [ править ]

Номера версий MySQL Cluster больше не привязаны к MySQL Server - например, самой последней версией является MySQL Cluster 7.5, хотя она основана на / содержит серверный компонент из MySQL 5.7.

Более высокие версии MySQL Cluster включают все функции более низких версий, а также некоторые новые функции.

Старые версии (больше не в разработке):

  • Ndb включен в дерево исходных текстов MySQL 5.1.X
  • MySQL Cluster 6.2 на основе MySQL 5.1.A
Первый выпуск для телефонных компаний или операторов связи. Поддерживает 255 узлов, онлайн-изменение таблицы, увеличение задержки репликации, увеличение пропускной способности и т. Д.
  • MySQL Cluster 6.3 на основе MySQL 5.1.B
Включает сжатое резервное копирование + LCP, поддержку круговой репликации, обнаружение / разрешение конфликтов, оптимизацию таблиц и т. Д.
  • MySQL Cluster 7.0 на основе MySQL 5.1.C
Включает многопоточные узлы данных (ndbmtd), транзакционный DDL, поддержку Windows.
  • MySQL Cluster 7.1 на основе MySQL 5.1.D
Включает разъемы ClusterJ и ClusterJPA

Доступные на данный момент версии:

  • MySQL Cluster 7.2 на основе MySQL 5.5
Включает адаптивную локализацию запросов (подталкивает операции JOIN к узлам данных), Memcached API, упрощенную репликацию Active / Active Geographic, многосайтовую кластеризацию, улучшения масштабируемости узлов данных, консолидированные права пользователей. [7]
  • MySQL Cluster 7.3 на основе MySQL 5.6
Включает поддержку ограничений внешнего ключа , API Node.js / JavaScript и автоматический установщик. [8]
  • MySQL Cluster 7.4 на основе MySQL 5.6
Включает улучшенное обнаружение и разрешение конфликтов, улучшенное время перезапуска узла, новый API событий. [9]
  • MySQL Cluster 7.5 на основе MySQL 5.7
Включает поддержку больших наборов данных (более 128 ТБ на узел), улучшенную масштабируемость чтения с помощью оптимизированных для чтения таблиц, улучшенную поддержку SQL. [10]
  • MySQL Cluster 8.0 на основе MySQL 8.0 [11]

Требования [ править ]

В целях оценки можно запустить MySQL Cluster на одном физическом сервере. Для производственных развертываний минимальные системные требования составляют 3 экземпляра / хоста:

  • 2 × узла данных
  • 1 × приложение / узел управления

или же

  • 2 × узел данных + приложение
  • 1 × узел управления

Конфигурации следующие:

  • ОС: Linux , Solaris , Windows . macOS (только для разработки)
  • Процессор: Intel / AMD x86 / x86-64, UltraSPARC
  • Память: 1 ГБ
  • Жесткий диск: 3 ГБ
  • Сеть: 1+ узлов (стандартный Ethernet - TCP / IP)

Советы и рекомендации по развертыванию высокопроизводительных кластеров производственного уровня можно найти в Руководстве по оценке кластеров MySQL и Руководстве по оптимизации производительности базы данных кластеров MySQL .

История [ править ]

MySQL AB приобрела технологию за MySQL Cluster от Alzato , небольшой венчурной компании начатой Ericsson . Изначально NDB был разработан для телекоммуникационного рынка с его высокой доступностью и высокими требованиями к производительности. [12]

Кластер MySQL, основанный на механизме хранения NDB, был с тех пор интегрирован в продукт MySQL , и его первая версия была выпущена в MySQL 4.1.

Поддержка [ править ]

MySQL Cluster находится под лицензией GPLv 2. Коммерческая поддержка доступна как часть MySQL Cluster CGE, которая также включает дополнения с открытым исходным кодом, такие как MySQL Cluster Manager, MySQL Enterprise Monitor, в дополнение к MySQL Enterprise Security и MySQL Enterprise Audit.

См. Также [ править ]

  • Galera Cluster , универсальная синхронная библиотека репликации с несколькими мастерами для транзакционных баз данных для MySQL и MariaDB. [1]
  • Percona XtraDB Cluster, также представляет собой комбинацию библиотеки репликации Galera и MySQL с поддержкой нескольких мастеров.

Ссылки [ править ]

  1. ^ Оклин, Бернд. «Ndb Cluster 8.0 общедоступен» . mysqlhighavailability.com .
  2. ^ Кластер CGE . MySQL. Проверено 18 сентября 2013.
  3. ^ Корпорация Oracle. «MySQL Cluster Benchmarks: Oracle и Intel достигают 1 миллиарда операций записи в минуту» . mysql.com . Проверено 24 июня 2013 года .
  4. ^ MySQL :: Справочное руководство MySQL 5.6 :: 17.6.11 Разрешение конфликтов репликации кластера MySQL . Dev.mysql.com. Проверено 18 сентября 2013.
  5. ^ Синхронная репликация баз данных в центрах обработки данных - вы с ума сошли? (Блог Oracle MySQL) . Blogs.oracle.com (03.10.2011). Проверено 18 сентября 2013.
  6. ^ Джон Стивенс, Майк Kruckenberg, Роланд Боуман (2007): "MySQL Cluster 5.1 DBA сертификации Учебное пособие" ., Стр 86
  7. ^ Новые возможности MySQL Cluster 7.2 , MySQL Developer Zone
  8. ^ MySQL Cluster 7.3 теперь общедоступен - обзор , MySQL Cluster 7.3 Summary
  9. ^ MySQL Cluster 7.4 GA: 200 миллионов запросов в секунду, активно-активная географическая репликация и многое другое , MySQL Cluster 7.4 Summary
  10. ^ MySQL Cluster 7.5 теперь GA! , Блог Oracle MySQL, 18 октября 2016 г.
  11. ^ "MySQL :: MySQL 8.0: Справочное руководство :: 22.1.4 Что нового в кластере NDB" . dev.mysql.com .
  12. Тодд Р. Вайс (14 октября 2003 г.). "Поставщик системы управления данными MySQL, Alzato" . Computerworld.com . Проверено 5 ноября 2012 года .

Внешние ссылки [ править ]

MySQL [ править ]

  • Официальная документация MySQL Cluster
  • Руководство разработчика MySQL Cluster API
  • Демонстрация кластера MySQL
  • Таблица данных MySQL Cluster
  • MySQL Cluster FAQ
  • Учебное пособие по автоматической установке MySQL Cluster
  • Блог кластера MySQL
  • Начало работы с MySQL Cluster
  • Технические документы и руководства MySQL Cluster
  • Форум сообщества кластеров MySQL

Другое [ править ]

  • Проектирование и моделирование параллельного сервера данных для телекоммуникационных приложений (1997) Мотивация проектирования оригинального кластера MySQL.