Spec-Zone.ru › MySQL 8.4

25.4.3.12 Соединения NDB Cluster в общей памяти

Общение между узлами кластера NDB обычно осуществляется с использованием TCP/IP. Транспортный механизм общей памяти (SHM) отличается тем, что сигналы передаются путем записи в память, а не в сокет. Транспортный механизм общей памяти (SHM) может повысить производительность, снизив до 20% накладных расходов, необходимых для подключения TCP при совместной работе узла API (обычно узла SQL) и узла данных на одном хосте. Вы можете включить подключение через общую память одним из двух способов:

  • Установив параметр конфигурации узла данных UseShm в значение 1, и установив HostName для узла данных и HostName для узла API в одинаковое значение.

  • Используя секции [shm] в файле конфигурации кластера, каждая из которых содержит настройки для NodeId1 и NodeId2. Этот метод более подробно описан далее в этом разделе.

Предположим, в кластере работает узел данных с идентификатором узла 1 и узел SQL с идентификатором узла 51 на одном компьютере с хостом 10.0.0.1. Для включения соединения SHM между этими двумя узлами необходимо убедиться, что в файле конфигурации кластера включены следующие записи:

[ndbd]
NodeId=1
HostName=10.0.0.1
UseShm=1

[mysqld]
NodeId=51
HostName=10.0.0.1
Важно

Эти две записи дополняют любые другие записи и параметры настроек, необходимые для кластера. Более подробный пример показан далее в этом разделе.

Перед запуском узлов данных, использующих подключения SHM, также необходимо убедиться, что операционная система на каждом компьютере, на котором размещен такой узел данных, выделяет достаточно памяти для сегментов общей памяти. Сведения об этом см. в документации к вашей операционной системе. В конфигурациях, где на нескольких хостах работает по одному узлу данных и одному узлу API, можно включить общую память на всех таких хостах, установив UseShm в секции [ndbd default] файла конфигурации. Это показано в примере далее в этом разделе.

Хотя это и не строго обязательно, настройку всех подключений SHM в кластере можно выполнить, установив один или несколько следующих параметров в секции [shm default] файла конфигурации кластера (config.ini):

  • ShmSize: Размер общей памяти

  • ShmSpinTime: Время в мкс ожидания вращения перед переходом в режим сна

  • SendBufferMemory: Размер буфера для сигналов, отправленных с данного узла, в байтах.

  • SendSignalId: Указывает, что идентификатор сигнала включен в каждый сигнал, отправленный через транспортный механизм.

  • Checksum: Указывает, что контрольная сумма включена в каждый сигнал, отправленный через транспортный механизм.

  • PreSendChecksum: Проверка контрольной суммы выполняется до отправки сигнала; Контрольная сумма также должна быть включена для работы этой функции

В этом примере показана простая настройка с подключениями SHM, определенными на нескольких хостах в NDB Cluster, используя 3 компьютера, указанные здесь по имени хоста, на которых размещены указанные типы узлов:

  1. 10.0.0.0: Сервер управления

  2. 10.0.0.1: Узел данных и узел SQL

  3. 10.0.0.2: Узел данных и узел SQL

В этом сценарии каждый узел данных общается с сервером управления и другим узлом данных с помощью транспортных механизмов TCP; каждый узел SQL использует транспортный механизм общей памяти для общения с локальными узлами данных и транспортный механизм TCP для общения с удаленным узлом данных. Базовая конфигурация, отражающая эту установку, активируется файлом config.ini, содержимое которого показано здесь:

[ndbd default]
DataDir=/path/to/datadir
UseShm=1

[shm default]
ShmSize=8M
ShmSpintime=200
SendBufferMemory=4M

[tcp default]
SendBufferMemory=8M

[ndb_mgmd]
NodeId=49
Hostname=10.0.0.0
DataDir=/path/to/datadir

[ndbd]
NodeId=1
Hostname=10.0.0.1
DataDir=/path/to/datadir

[ndbd]
NodeId=2
Hostname=10.0.0.2
DataDir=/path/to/datadir

[mysqld]
NodeId=51
Hostname=10.0.0.1

[mysqld]
NodeId=52
Hostname=10.0.0.2

[api]
[api]

Параметры, влияющие на все транспортные механизмы общей памяти, задаются в секции [shm default]; эти параметры могут быть переопределены на уровне каждого соединения в одной или нескольких секциях [shm]. Каждая такая секция должна быть связана с определенным подключением SHM с использованием NodeId1 и NodeId2; необходимые значения для этих параметров — идентификаторы узлов двух узлов, соединенных транспортным механизмом. Вы также можете идентифицировать узлы по имени хоста, используя HostName1 и HostName2, но эти параметры не являются обязательными.

Узлы API, для которых не заданы имена хостов, используют транспортный механизм TCP для общения с узлами данных независимо от хостов, на которых они запущены; параметры и значения, заданные в секции [tcp default] файла конфигурации, применяются ко всем транспортным механизмам TCP в кластере.

Для оптимальной производительности можно определить время ожидания для транспортного механизма SHM (ShmSpinTime); это влияет как на поток приема узла данных, так и на поток опроса (потока приема или пользовательского потока) в NDB.

  • Checksum

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы boolean
    Значение по умолчанию true
    Диапазон true, false
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

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

    Эта функция предотвращает повреждение сообщений во время ожидания в буфере отправки. Она также служит проверкой на повреждение данных во время передачи.

  • Group

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы unsigned
    Значение по умолчанию 35
    Диапазон 0 - 200
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

    Определяет близость группы; меньшее значение интерпретируется как более близкое. Значение по умолчанию достаточно для большинства условий.

  • HostName1

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы name or IP address
    Значение по умолчанию [...]
    Диапазон ...
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

    Параметры HostName1 и HostName2 могут использоваться для указания конкретных сетевых интерфейсов, которые будут использоваться для данного соединения SHM между двумя узлами. Значения, используемые для этих параметров, могут быть именами узлов или IP-адресами.

  • HostName2

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы name or IP address
    Значение по умолчанию [...]
    Диапазон ...
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

    Параметры HostName1 и HostName2 могут использоваться для указания конкретных сетевых интерфейсов, которые будут использоваться для данного соединения SHM между двумя узлами. Значения, используемые для этих параметров, могут быть именами узлов или IP-адресами.

  • NodeId1

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы numeric
    Значение по умолчанию [none]
    Диапазон 1 - 255
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

    Для идентификации соединения между двумя узлами необходимо указать идентификаторы узлов для каждого из них, как NodeId1 и NodeId2.

  • NodeId2

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы numeric
    Значение по умолчанию [none]
    Диапазон 1 - 255
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

    Для идентификации соединения между двумя узлами необходимо указать идентификаторы узлов для каждого из них, как NodeId1 и NodeId2.

  • NodeIdServer

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы numeric
    Значение по умолчанию [none]
    Диапазон 1 - 63
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

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

  • OverloadLimit

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы bytes
    Значение по умолчанию 0
    Диапазон 0 - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

    Когда в буфере отправки находится больше, чем указанное количество неотправленных байтов, соединение считается перегруженным. См. Раздел 25.4.3.14, «Настройка параметров буфера отправки кластера NDB», и Раздел 25.6.17.66, «Таблица ndbinfo transporters» для получения дополнительной информации.

  • PreSendChecksum

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы boolean
    Значение по умолчанию false
    Диапазон true, false
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

    Если этот параметр и Checksum включены, выполнить предварительные проверки контрольных сумм и проверить все сигналы SHM между узлами на наличие ошибок. Не оказывает влияния, если Checksum также не включен.

  • SendBufferMemory

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы integer
    Значение по умолчанию 2M
    Диапазон 256K - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)

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

  • SendSignalId

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы измерения boolean
    Значение по умолчанию false
    Диапазон true, false
    Тип перезапуска

    Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.0)

    Для отслеживания пути распределенного сообщения необходимо предоставить каждому сообщению уникальный идентификатор. Установка этого параметра в значение Y приводит к тому, что идентификаторы этих сообщений также передаются по сети. Эта функция по умолчанию отключена в производственных сборках и включена в -debug сборках.

  • ShmKey

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы измерения unsigned
    Значение по умолчанию 0
    Диапазон 0 - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

    Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.0)

    При настройке сегментов общей памяти используется идентификатор узла, выраженный как целое число, для уникальной идентификации сегмента общей памяти, используемого для связи. Значения по умолчанию нет. Если UseShm включен, ключ общей памяти вычисляется автоматически NDB.

  • ShmSize

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы измерения байты
    Значение по умолчанию 4М
    Диапазон 64К - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

    Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.0)

    Каждый SHM-соединение имеет сегмент общей памяти, в котором сообщения между узлами помещаются отправителем и считываются получателем. Размер этого сегмента определяется параметром ShmSize. Значение по умолчанию составляет 4 МБ.

  • ShmSpinTime

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы измерения целое число
    Значение по умолчанию 0
    Диапазон 0 - 2000
    Тип перезапуска

    Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.0)

    Время ожидания при получении в микросекундах.

  • SigNum

    Версия (или более поздняя) NDB 8.4.0
    Тип или единицы измерения unsigned
    Значение по умолчанию [...]
    Диапазон 0 - 4294967039 (0xFFFFFEFF)
    Устаревший Да (в NDB 7.6)
    Тип перезапуска

    Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.0)

    Этот параметр ранее использовался для переопределения номеров сигналов операционной системы; в NDB 8.4 он больше не используется, и любое его значение игнорируется.

Типы перезапуска. Информация о типах перезапуска, используемых в описаниях параметров в этом разделе, показана в следующей таблице:

Таблица 25.21 Типы перезапуска NDB кластера

Таблица 25.21 Типы перезапуска NDB кластера
Символ Тип перезапуска Описание
N Узел Параметр можно обновить с помощью постепенного перезапуска (см. Раздел 25.6.5, «Постепенный перезапуск NDB кластера»)
S Система Для изменения этого параметра необходимо полностью остановить все узлы кластера и затем перезапустить их
I Инициализация Узлы данных необходимо перезапустить с помощью параметра --initial

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysql-cluster-shm-definition.html

Spec-Zone.ru

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