Разработчики) | Oracle |
---|---|
Первый выпуск | Ноябрь 2004 г. |
Стабильный выпуск | 8.0 / 11 мая 2021 г. ; 4 месяца назад ( 2021-05-11) |
Операционная система | Кроссплатформенность |
Доступно в | английский |
Тип | СУБД |
Лицензия | Стандартная общественная лицензия GNU (версия 2, за исключением ссылки ) или коммерческое лицензионное соглашение |
Веб-сайт |
MySQL Cluster - это технология, обеспечивающая кластеризацию без совместного использования ресурсов и автоматическое сегментирование для системы управления базами данных MySQL. Он разработан для обеспечения высокой доступности и высокой пропускной способности с низкой задержкой, обеспечивая при этом почти линейную масштабируемость. MySQL Cluster осуществляется через ОПРС механизм хранения или для MySQL NDB кластера ( «ОПРС» обозначает N etwork D ату б ASE).
MySQL Cluster разработан на основе распределенной архитектуры, совместимой с ACID с несколькими главными серверами, без единой точки отказа. MySQL Cluster использует автоматическую шардинга (секционирования) масштабировать операции чтения и записи на аппаратном обеспечении и могут быть доступны через SQL и Non-SQL (NoSQL) API,
Внутри MySQL Cluster использует синхронную репликацию через механизм двухфазной фиксации, чтобы гарантировать, что данные будут записаны на несколько узлов после фиксации данных. (Это контрастирует с тем, что обычно называют «репликацией MySQL», которая является асинхронной. ) Для гарантии доступности требуются две копии (известные как реплики) данных. MySQL Cluster автоматически создает «группы узлов» из числа реплик и узлов данных, указанного пользователем. Обновления синхронно реплицируются между членами группы узлов для защиты от потери данных и поддержки быстрого переключения между узлами.
Также возможна асинхронная репликация между кластерами; это иногда называют «репликацией кластера MySQL» или «географической репликацией». Обычно это используется для репликации кластеров между центрами обработки данных для аварийного восстановления или для уменьшения эффекта задержки в сети путем размещения данных физически ближе к группе пользователей. В отличие от стандартной репликации MySQL, географическая репликация MySQL Cluster использует оптимистичное управление параллелизмом и концепцию эпох, чтобы обеспечить механизм для обнаружения и разрешения конфликтов, обеспечивая активную / активную кластеризацию между центрами обработки данных.
Начиная с MySQL Cluster 7.2, поддержка синхронной репликации между центрами обработки данных поддерживалась функцией многосайтовой кластеризации.
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.
Поскольку MySQL Cluster хранит таблицы в узлах данных, а не на сервере MySQL, для доступа к базе данных доступно несколько интерфейсов:
Являясь частью коммерческого MySQL Cluster CGE, MySQL Cluster Manager - это инструмент, предназначенный для упрощения создания и администрирования базы данных MySQL Cluster CGE за счет автоматизации общих задач управления, включая масштабирование в реальном времени, обновления, резервное копирование / восстановление и реконфигурацию. MySQL Cluster Manager также отслеживает и автоматически восстанавливает узлы приложений MySQL Server и узлы управления, а также узлы данных MySQL Cluster.
MySQL Cluster использует три разных типа узлов (процессов):
Обычно ожидается, что каждый узел будет работать на отдельном физическом хосте, виртуальной машине или облачном экземпляре (хотя очень часто узлы управления размещаются вместе с серверами MySQL). Для наилучшей практики рекомендуется не размещать узлы в одной группе узлов на одном физическом хосте (так как это будет представлять собой единую точку отказа).
Начиная с версии 8.0 MySQL Cluster основан непосредственно на соответствующих версиях 8.0 сервера MySQL. Ранее номера версий MySQL Cluster были отделены от номеров MySQL Server - например, MySQL Cluster 7.6 был основан на / содержал серверный компонент из MySQL 5.7.
Более высокие версии MySQL Cluster включают все функции более низких версий, а также некоторые новые функции.
Старые версии (больше не в разработке):
Доступные на данный момент версии:
В целях оценки можно запустить MySQL Cluster на одном физическом сервере. Для производственных развертываний минимальные системные требования составляют 3 экземпляра / хоста:
или
Конфигурации следующие:
Советы и рекомендации по развертыванию высокопроизводительных кластеров производственного уровня можно найти в Руководстве по оценке кластеров MySQL и Руководстве по оптимизации производительности базы данных кластеров MySQL.
MySQL AB приобрела технологию за MySQL Cluster от Alzato, небольшой венчурной компании начатой Ericsson. Изначально NDB был разработан для рынка телекоммуникаций с его высокой доступностью и высокими требованиями к производительности.
Кластер 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.