Spec-Zone.ru › MySQL 5.7

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 компьютера, перечисленные здесь по имени хоста, на которых размещены указанные типы узлов:

  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.

END_OF_DOCUMENT_MARKER
  • 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» для получения дополнительной информации.

  • PortNumber

    Версия (или более поздняя) NDB 7.5.0
    Тип или единицы измерения unsigned
    Значение по умолчанию [...]
    Диапазон 0 - 64K
    Удалено NDB 7.5.1
    Тип перезапуска

    Перезапуск системы: Требуется полное завершение работы и перезапуск кластера. (NDB 7.5.0)

    Установите порт, который будет использоваться транспортером SHM.

  • PreSendChecksum

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

    Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)

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

  • SendBufferMemory

    Версия (или более поздняя) 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 сборках.

  • ShmKey

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

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

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

  • ShmSize

    Версия (или более поздняя) 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 МБ.

  • ShmSpinTime

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

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

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

  • SigNum

    Версия (или более поздняя) 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

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

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

Spec-Zone.ru

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