Кластер MySQL

редактировать

Кластер MySQL
Разработчики) Oracle
Первый выпуск Ноябрь 2004 г.
Стабильный выпуск 8.0 / 11 мая 2021 г. ; 4 месяца назад ( 2021-05-11)
Операционная система Кроссплатформенность
Доступно в английский
Тип СУБД
Лицензия Стандартная общественная лицензия GNU (версия 2, за исключением ссылки ) или коммерческое лицензионное соглашение
Веб-сайт

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

СОДЕРЖАНИЕ
  • 1 Архитектура
    • 1.1 Репликация
    • 1.2 Горизонтальное разделение данных (автоматическое разделение)
    • 1.3 Гибридное хранилище
    • 1.4 Ничего не поделился
    • 1.5 SQL и NoSQL API
    • 1.6 Менеджер кластеров MySQL
  • 2 Реализация
  • 3 версии
  • 4 Требования
  • 5 История
  • 6 Поддержка
  • 7 См. Также
  • 8 ссылки
  • 9 Внешние ссылки
    • 9.1 MySQL
    • 9.2 Другое
Архитектура

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.

API SQL и NoSQL

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

  • Доступ к SQL через сервер MySQL
  • API-интерфейсы NoSQL, в которых библиотеки MySQL Cluster могут быть встроены в приложение для обеспечения прямого доступа к узлам данных без прохождения через уровень SQL. Это включает:

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 могут быть настроены как арбитры).
  • Узел приложения или узел SQL (процесс mysqld): сервер MySQL (mysqld), который подключается ко всем узлам данных для хранения и извлечения данных. Этот тип узла не является обязательным; можно запрашивать узлы данных напрямую через NDB API, либо изначально используя C ++ API, либо один из дополнительных API NoSQL, описанных выше.

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

Версии

Начиная с версии 8.0 MySQL Cluster основан непосредственно на соответствующих версиях 8.0 сервера MySQL. Ранее номера версий MySQL Cluster были отделены от номеров MySQL Server - например, MySQL Cluster 7.6 был основан на / содержал серверный компонент из 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, многосайтовую кластеризацию, улучшения масштабируемости узлов данных, консолидированные права пользователей.
  • MySQL Cluster 7.3 на основе MySQL 5.6
Включает поддержку ограничений внешнего ключа, API Node.js / JavaScript и автоматический установщик.
  • MySQL Cluster 7.4 на основе MySQL 5.6
Включает улучшенное обнаружение и разрешение конфликтов, улучшенное время перезапуска узла, новый API событий.
  • MySQL Cluster 7.5 на основе MySQL 5.7
Включает поддержку больших наборов данных (более 128 ТБ на узел), улучшенную масштабируемость чтения с помощью оптимизированных для чтения таблиц, улучшенную поддержку SQL.
  • MySQL Cluster 7.6 на основе MySQL 5.7
Уменьшение времени перезапуска и восстановления, сокращение использования дискового пространства, улучшенная производительность присоединения, новый инструмент импорта, обмен данными с общей памятью, улучшенная осведомленность о топологии облака.
  • MySQL Cluster 8.0 на базе MySQL 8.0
Увеличение максимального размера строки до 30 КБ, поддержка до 144 узлов данных, улучшенная распределенная фильтрация и объединение, поддержка параллельных внешних объединений и полусоединений, улучшенная схема и обработка списков контроля доступа, переименование столбцов в режиме онлайн, упрощенная конфигурация, многопоточное параллельное резервное копирование и восстановление, Улучшения производительности дисковых данных, Расширенная поддержка конфигураций с 3 и 4 репликами, Поддержка многосетевых сетей, Поддержка преобразований восстановления, Улучшенная производительность записи BLOB-объектов, Шифрование резервных копий, Поддержка IPv6, Автоконфигурация потоков, Повышенная производительность восстановления, Улучшенная многопоточность запросов.
Требования

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

Кластер 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. ^ «Примечания к выпуску MySQL NDB Cluster 8.0». mysql.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 Cluster 7.6 теперь общедоступен, блог Oracle MySQL, 1 июня 2018 г.
  12. ^ "MySQL:: MySQL 8.0: Справочное руководство:: 22.1.4 Что нового в кластере NDB". dev.mysql.com.
  13. ↑ Тодд Р. Вайс (14 октября 2003 г.). "Поставщик системы управления данными MySQL, Alzato". Computerworld.com. Проверено 5 ноября 2012 года.
внешние ссылки

MySQL

Другой

Последняя правка сделана 2023-04-21 04:15:57
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте