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 компьютера, указанные здесь по имени хоста, на которых размещены указанные типы узлов:
10.0.0.0: Сервер управления10.0.0.1: Узел данных и узел SQL10.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» для получения дополнительной информации.
-
Версия (или более поздняя) NDB 8.4.0 Тип или единицы boolean Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.0)
Если этот параметр и
Checksumвключены, выполнить предварительные проверки контрольных сумм и проверить все сигналы SHM между узлами на наличие ошибок. Не оказывает влияния, еслиChecksumтакже не включен. -
Версия (или более поздняя) 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сборках. -
Версия (или более поздняя) NDB 8.4.0 Тип или единицы измерения unsigned Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.0)
При настройке сегментов общей памяти используется идентификатор узла, выраженный как целое число, для уникальной идентификации сегмента общей памяти, используемого для связи. Значения по умолчанию нет. Если
UseShmвключен, ключ общей памяти вычисляется автоматическиNDB. -
Версия (или более поздняя) NDB 8.4.0 Тип или единицы измерения байты Значение по умолчанию 4М Диапазон 64К - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.0)
Каждый SHM-соединение имеет сегмент общей памяти, в котором сообщения между узлами помещаются отправителем и считываются получателем. Размер этого сегмента определяется параметром
ShmSize. Значение по умолчанию составляет 4 МБ. -
Версия (или более поздняя) NDB 8.4.0 Тип или единицы измерения целое число Значение по умолчанию 0 Диапазон 0 - 2000 Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.0)
Время ожидания при получении в микросекундах.
-
Версия (или более поздняя) NDB 8.4.0 Тип или единицы измерения unsigned Значение по умолчанию [...] Диапазон 0 - 4294967039 (0xFFFFFEFF) Устаревший Да (в NDB 7.6) Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.0)
Этот параметр ранее использовался для переопределения номеров сигналов операционной системы; в NDB 8.4 он больше не используется, и любое его значение игнорируется.
Типы перезапуска. Информация о типах перезапуска, используемых в описаниях параметров в этом разделе, показана в следующей таблице:
Таблица 25.21 Типы перезапуска NDB кластера
| Символ | Тип перезапуска | Описание |
|---|---|---|
| N | Узел | Параметр можно обновить с помощью постепенного перезапуска (см. Раздел 25.6.5, «Постепенный перезапуск NDB кластера») |
| S | Система | Для изменения этого параметра необходимо полностью остановить все узлы кластера и затем перезапустить их |
| I | Инициализация | Узлы данных необходимо перезапустить с помощью параметра --initial |
© 2025 Oracle
Licensed under the GPLv2 License.