21.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, используя 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 7.5.0 Тип или единицы измерения boolean Значение по умолчанию true Диапазон true, false Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Этот параметр является булевым (
Y/N) параметром, который по умолчанию отключен. Когда он включен, контрольные суммы для всех сообщений вычисляются перед размещением в буфере отправки.Эта функция предотвращает повреждение сообщений во время ожидания в буфере отправки. Она также служит проверкой на повреждение данных во время передачи.
-
GroupВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения unsigned Значение по умолчанию 35 Диапазон 0 - 200 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Определяет близость группы; меньшее значение интерпретируется как более близкое. Значения по умолчанию достаточно для большинства условий.
-
HostName1Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения name or IP address Значение по умолчанию [...] Диапазон ... Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Параметры
HostName1иHostName2могут использоваться для указания конкретных сетевых интерфейсов, которые будут использоваться для данного соединения SHM между двумя узлами. В качестве значений для этих параметров могут использоваться имена хостов или IP-адреса. -
HostName2Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения name or IP address Значение по умолчанию [...] Диапазон ... Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Параметры
HostName1иHostName2могут использоваться для указания конкретных сетевых интерфейсов, которые будут использоваться для данного соединения SHM между двумя узлами. В качестве значений для этих параметров могут использоваться имена хостов или IP-адреса. -
NodeId1Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения numeric Значение по умолчанию [none] Диапазон 1 - 255 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Для идентификации соединения между двумя узлами необходимо указать идентификаторы узлов для каждого из них, как
NodeId1иNodeId2. -
NodeId2Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения numeric Значение по умолчанию [none] Диапазон 1 - 255 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Для идентификации соединения между двумя узлами необходимо указать идентификаторы узлов для каждого из них, как
NodeId1иNodeId2. -
NodeIdServerВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения numeric Значение по умолчанию [none] Диапазон 1 - 63 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Идентифицирует серверный конец соединения общей памяти. По умолчанию это идентификатор узла узла данных.
-
OverloadLimitВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения bytes Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Когда в буфере отправки находится больше этого количества неотправленных байтов, соединение считается перегруженным.
Этот параметр можно использовать для определения объема неотправленных данных, который должен присутствовать в буфере отправки, прежде чем соединение будет считаться перегруженным. См. Раздел 21.4.3.13, «Настройка параметров буфера отправки кластера NDB», и Раздел 21.6.15.44, «Таблица ndbinfo transporters» для получения дополнительной информации.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения unsigned Значение по умолчанию [...] Диапазон 0 - 64K Удалено NDB 7.5.1 Тип перезапуска Перезапуск системы: Требуется полное завершение работы и перезапуск кластера. (NDB 7.5.0)
Установите порт, который будет использоваться транспортером SHM.
-
Версия (или более поздняя) NDB 7.6.6 Тип или единицы измерения boolean Значение по умолчанию false Диапазон true, false Добавлено NDB 7.6.6 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Если этот параметр и
Checksumвключены, выполните предварительные проверки контрольных сумм и проверьте все сигналы SHM между узлами на наличие ошибок. Не оказывает влияния, еслиChecksumтакже не включен.
-
Версия (или более поздняя) NDB 7.6.6 Тип или единицы измерения целое число Значение по умолчанию 2М Диапазон значений 256К - 4294967039 (0xFFFFFEFF) Добавлена в NDB 7.6.6 Тип перезапуска Перезапуск узла: Требует поэтапной перезагрузки кластера. (NDB 7.5.0)
Размер (в байтах) буфера shared memory для сигналов, отправляемых с данного узла с использованием подключения shared memory.
-
SendSignalIdВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения булево Значение по умолчанию false Диапазон значений true, false Тип перезапуска Перезапуск узла: Требует поэтапной перезагрузки кластера. (NDB 7.5.0)
Для отслеживания пути распределенного сообщения необходимо предоставить каждому сообщению уникальный идентификатор. Установка этого параметра в значение
Yприводит к тому, что эти идентификаторы сообщений также передаются по сети. Эта функция по умолчанию отключена в производственных сборках и включена в-debugсборках. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения беззнаковое Значение по умолчанию 0 Диапазон значений 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапной перезагрузки кластера. (NDB 7.5.0)
При настройке сегментов shared memory используется идентификатор узла, выраженный как целое число, для уникальной идентификации сегмента shared memory, используемого для коммуникации. Значение по умолчанию отсутствует. Если включен
UseShm, ключ shared memory вычисляется автоматическиNDB. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 1М Диапазон значений 64К - 4294967039 (0xFFFFFEFF) Версия (или более поздняя) NDB 7.6.6 Тип или единицы измерения байты Значение по умолчанию 4М Диапазон значений 64К - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапной перезагрузки кластера. (NDB 7.5.0)
Каждое подключение SHM имеет сегмент shared memory, где сообщения между узлами помещаются отправителем и читаются получателем. Размер этого сегмента определен параметром
ShmSize. Значение по умолчанию в NDB 7.6 составляет 4 МБ. -
Версия (или более поздняя) NDB 7.6.6 Тип или единицы измерения целое число Значение по умолчанию 0 Диапазон значений 0 - 2000 Добавлена в NDB 7.6.6 Тип перезапуска Перезапуск узла: Требует поэтапной перезагрузки кластера. (NDB 7.5.0)
Время ожидания при получении, в микросекундах.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения беззнаковое Значение по умолчанию [...] Диапазон значений 0 - 4294967039 (0xFFFFFEFF) Устаревший NDB 7.6.6 Тип перезапуска Перезапуск узла: Требует поэтапной перезагрузки кластера. (NDB 7.5.0)
Этот параметр больше не используется в NDB 7.6, и любое его значение игнорируется.
Следующее применимо только к NDB 7.5 (и более ранним версиям):
При использовании транспортного средства shared memory процесс отправляет операционную систему сигнал другому процессу, когда в shared memory доступны новые данные. Если этот сигнал конфликтует с существующим сигналом, этот параметр может использоваться для его изменения. Такая возможность возникает при использовании SHM из-за того, что различные операционные системы используют разные номера сигналов.
Значение по умолчанию для
SigNumравно 0; поэтому его необходимо установить, чтобы избежать ошибок в журнале кластера при использовании транспортного средства shared memory. Обычно этот параметр устанавливается в значение 10 в разделе[shm default]файлаconfig.ini.
Типы перезапуска. Информация о типах перезапуска, используемых в описаниях параметров в этом разделе, показана в следующей таблице:
Таблица 21.20 Типы перезапуска кластера NDB
| Символ | Тип перезапуска | Описание |
|---|---|---|
| N | Узел | Параметр можно обновить с помощью поэтапной перезагрузки (см. раздел 21.6.5, «Выполнение поэтапной перезагрузки кластера NDB») |
| S | Система | Все узлы кластера должны быть полностью остановлены, а затем перезапущены, чтобы внести изменения в этот параметр |
| I | Инициализация | Узлы данных должны быть перезапущены с помощью параметра --initial |
© 2025 Oracle
Licensed under the GPLv2 License.