Spec-Zone.ru › MySQL 9.2

25.2.2 Узлы кластера NDB, группы узлов, фрагментные копии и разделы

В этом разделе рассматривается способ, которым кластер NDB делит и дублирует данные для хранения.

В следующих абзацах обсуждаются ряд концепций, центральных для понимания этой темы.

Узел данных. Процесс ndbd или ndbmtd, который хранит одну или несколько фрагментных копий — то есть, копий разделов (обсуждаемых позже в этом разделе), назначенных группе узлов, членом которой является узел.

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

Часто термины «узел» и «узел данных» используются взаимозаменяемо применительно к процессу ndbd или ndbmtd; в обсуждении, где это упоминается, управляющие узлы (ndb_mgmd процессы) и узлы SQL (mysqld процессы) указываются как таковые.

Группа узлов. Группа узлов состоит из одного или нескольких узлов и хранит разделы или наборы фрагментных копий (см. следующий пункт).

Количество групп узлов в кластере NDB не настраивается напрямую; оно зависит от количества узлов данных и количества фрагментных копий (NoOfReplicas параметр конфигурации), как показано здесь:

[# of node groups] = [# of data nodes] / NoOfReplicas

Таким образом, кластер NDB с 4 узлами данных имеет 4 группы узлов, если NoOfReplicas установлен в 1 в файле config.ini, 2 группы узлов, если NoOfReplicas установлен в 2, и 1 группу узлов, если NoOfReplicas установлен в 4. Фрагментные копии обсуждаются позже в этом разделе; для получения дополнительной информации о NoOfReplicas, см. Раздел 25.4.3.6 «Определение узлов данных кластера NDB».

Примечание

Все группы узлов в кластере NDB должны иметь одинаковое количество узлов данных.

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

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

Количество разделов, используемых по умолчанию кластером NDB, зависит от количества узлов данных и количества потоков LDM, используемых узлами данных, как показано здесь:

[# of partitions] = [# of data nodes] * [# of LDM threads]

При использовании узлов данных, работающих с ndbmtd, количество потоков LDM контролируется значением MaxNoOfExecutionThreads. При использовании ndbd имеется один поток LDM, что означает, что количество разделов кластера равно количеству узлов, участвующих в кластере. Это также относится к случаю использования ndbmtd со значением MaxNoOfExecutionThreads 3 или меньше. (Вы должны учитывать, что количество потоков LDM увеличивается со значением этого параметра, но не строго линейно, и существуют дополнительные ограничения на его установку; для получения дополнительной информации см. описание MaxNoOfExecutionThreads.)

NDB и пользовательское разбиение. Кластер NDB обычно разбивает таблицы NDBCLUSTER автоматически. Однако также возможно использовать пользовательское разбиение с таблицами NDBCLUSTER. Это ограничено следующими условиями:

  1. В производстве поддерживаются только схемы разбиения KEY и LINEAR KEY с таблицами NDB.

  2. Максимальное количество разделов, которые можно явно определить для любой таблицы NDB, равно 8 * [number of LDM threads] * [number of node groups], количество групп узлов в кластере NDB определяется, как обсуждалось ранее в этом разделе. При запуске ndbd для процессов узлов данных, установка количества потоков LDM не имеет эффекта (поскольку ThreadConfig применяется только к ndbmtd); в таких случаях это значение можно считать равным 1 для целей выполнения этого расчета.

    Для получения дополнительной информации см. Раздел 25.5.3 «ndbmtd — Демон узла данных кластера NDB (многопоточный)».

Для получения дополнительной информации о кластере NDB и пользовательском разбиении см. Раздел 25.2.7 «Известные ограничения кластера NDB» и Раздел 26.6.2 «Ограничения разбиения, относящиеся к хранилищам данных».

Фрагментная копия. Это копия раздела кластера. Каждый узел в группе узлов хранит фрагментную копию. Также иногда называется копией раздела.

Фрагментная копия полностью принадлежит одному узлу; узел может (и обычно делает) хранить несколько фрагментных копий.

На следующей диаграмме показан кластер NDB с четырьмя узлами данных, работающими с ndbd, расположенными в двух группах узлов по два узла в каждой; узлы 1 и 2 принадлежат группе узлов 0, а узлы 3 и 4 принадлежат группе узлов 1.

Примечание

Здесь показаны только узлы данных; для функционирования кластера NDB требуется процесс ndb_mgmd для управления кластером и по крайней мере один узел SQL для доступа к данным, хранящимся в кластере; они были опущены для ясности.

Рисунок 25.2 Кластер NDB с двумя группами узлов

Content is described in the surrounding text.

Данные, хранящиеся в кластере, разделены на четыре раздела с номерами 0, 1, 2 и 3. Каждый раздел хранится (в нескольких копиях) в одной и той же группе узлов. Разделы хранятся в альтернативных группах узлов следующим образом:

  • Раздел 0 хранится в группе узлов 0; первичная фрагментная копия (первичная копия) хранится на узле 1, а резервная фрагментная копия (резервная копия раздела) хранится на узле 2.

  • Раздел 1 хранится в другой группе узлов (группа узлов 1); первичная фрагментная копия этого раздела находится на узле 3, а резервная — на узле 4.

  • Раздел 2 хранится в группе узлов 0. Однако расположение его двух фрагментных копий обратное расположению фрагментных копий раздела 0; для раздела 2 первичная фрагментная копия хранится на узле 2, а резервная — на узле 1.

  • Раздел 3 хранится в группе узлов 1, и расположение его двух фрагментных копий обратное расположению копий раздела 1. То есть, его первичная фрагментная копия расположена на узле 4, а резервная — на узле 3.

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

Рисунок 25.3 Узлы, необходимые для кластера NDB 2x2

Content is described in the surrounding text.

В данном примере кластер состоит из двух групп узлов, каждая из которых состоит из двух узлов данных. Каждый узел данных выполняет экземпляр ndbd. Любая комбинация, включающая как минимум один узел из группы узлов 0 и как минимум один узел из группы узлов 1, достаточна для поддержания кластера в “рабочем состоянии”. Однако, если оба узла из одной группы узлов выйдут из строя, комбинация, состоящая из оставшихся двух узлов в другой группе узлов, недостаточна. В этой ситуации кластер потерял целую партию и больше не может обеспечить доступ ко всему набору данных NDB Cluster.

Максимальное количество групп узлов, поддерживаемых для одного экземпляра NDB Cluster, равно 48.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/mysql-cluster-nodes-groups.html

Spec-Zone.ru

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