Spec-Zone.ru › MySQL 9.2

25.4.3.6 Определение узлов данных кластера NDB

Разделы [ndbd] и [ndbd default] используются для настройки поведения узлов данных кластера.

[ndbd] и [ndbd default] всегда используются в качестве имён разделов, независимо от того, используете ли вы бинарные файлы ndbd или ndbmtd для процессов узлов данных.

Существует множество параметров, которые контролируют размеры буферов, размеры пулов, таймауты и т. д. Единственный обязательный параметр — ExecuteOnComputer; он должен быть определён в локальном разделе [ndbd].

Параметр NoOfReplicas следует определять в разделе [ndbd default], поскольку он общий для всех узлов данных кластера. Нестрого необходимо задавать NoOfReplicas, но рекомендуется задавать его явно.

Большинство параметров узлов данных устанавливаются в разделе [ndbd default]. Изменить параметры в разделе [ndbd] разрешается только тем параметрам, которые явно указаны как допускающие установку локальных значений. Если они присутствуют, HostName и NodeId обязательно должны быть определены в локальном разделе [ndbd], а не в любом другом разделе config.ini. Другими словами, настройки этих параметров специфичны для одного узла данных.

Для параметров, влияющих на использование памяти или размеры буферов, можно использовать K, M или G в качестве суффикса для указания единиц 1024, 1024×1024 или 1024×1024×1024 соответственно. (Например, 100K означает 100 × 1024 = 102400.)

Имена и значения параметров нечувствительны к регистру, за исключением случаев использования в файле сервера MySQL my.cnf или my.ini, где регистр важен.

Информация о параметрах конфигурации, специфичных для таблиц данных NDB Cluster Disk, приведена далее в этом разделе (см. Параметры конфигурации таблиц данных на диске).

Все эти параметры также применяются к ndbmtd (многопоточной версии ndbd). Три дополнительных параметра конфигурации узлов данных — MaxNoOfExecutionThreads, ThreadConfig и NoOfFragmentLogParts — применяются только к ndbmtd; при использовании с ndbd они не имеют эффекта. Дополнительную информацию см. в разделе Параметры конфигурации многопоточности (ndbmtd). См. также Раздел 25.5.3, «ndbmtd — Демон узла данных кластера NDB (многопоточная версия)».

Идентификация узлов данных. Значение NodeId или Id (то есть идентификатор узла данных) можно задать в командной строке при запуске узла или в файле конфигурации.

  • NodeId

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы unsigned
    По умолчанию [...]
    Диапазон 1 - 144
    Тип перезапуска

    Первоначальный перезапуск системы: Требуется полная остановка кластера, очистка и восстановление файловой системы кластера из резервной копии, а затем перезапуск кластера. (NDB 9.2.0)

    Уникальный идентификатор узла используется в качестве адреса узла для всех внутренних сообщений кластера. Для узлов данных это целое число в диапазоне от 1 до 144 включительно. Каждый узел в кластере должен иметь уникальный идентификатор.

    NodeId — единственное поддерживаемое имя параметра для идентификации узлов данных.

  • ExecuteOnComputer

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы имя
    По умолчанию [...]
    Диапазон ...
    Устаревший Да (в NDB 7.5)
    Тип перезапуска

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

    Это относится к набору Id для одного из компьютеров, определённых в разделе [computer].

    Важно

    Этот параметр устарел и может быть удалён в будущих версиях. Используйте параметр HostName вместо него.

  • Идентификатор узла для этого узла может быть предоставлен только подключениям, которые его явно запросили. Сервер управления, запрашивающий “любой” идентификатор узла, не может использовать этот. Этот параметр может быть использован при запуске нескольких серверов управления на одном хосте, и HostName недостаточно для различения процессов.

  • HostName

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы имя или IP-адрес
    По умолчанию localhost
    Диапазон ...
    Тип перезапуска

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Указание этого параметра определяет имя хоста компьютера, на котором должен находиться узел данных. Используйте HostName для указания имени хоста, отличного от localhost.

  • ServerPort

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

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

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

    Однако, если вам нужно открыть определённые порты в брандмауэре для обеспечения связи между узлами данных и узлами API (включая узлы SQL), вы можете установить этот параметр в нужное число порта в разделе [ndbd] или (если вам нужно сделать это для нескольких узлов данных) в разделе [ndbd default] файла config.ini, а затем открыть этот порт для входящих подключений от узлов SQL, узлов API или обоих типов.

    Примечание

    Подключения от узлов данных к узлам управления осуществляются через порт управления ndb_mgmd (порт сервера управления PortNumber), поэтому выходящие подключения к этому порту со стороны узлов данных всегда должны быть разрешены.

  • TcpBind_INADDR_ANY

    Установка этого параметра в TRUE или 1 связывает IP_ADDR_ANY таким образом, что подключения могут осуществляться от любого места (для автоматически генерируемых подключений). По умолчанию — FALSE (0).

  • NodeGroup

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы unsigned
    По умолчанию [...]
    Диапазон 0 - 65536
    Тип перезапуска

    Первоначальный перезапуск системы: Требуется полная остановка кластера, очистка и восстановление файловой системы кластера из резервной копии, а затем перезапуск кластера. (NDB 9.2.0)

    Этот параметр может использоваться для назначения узла данных конкретной группе узлов. Он читается только при первом запуске кластера и не может использоваться для переназначения узла данных в другую группу узлов онлайн. Обычно не рекомендуется использовать этот параметр в разделе [ndbd default] файла config.ini, и необходимо следить, чтобы узлы не были назначены группам узлов таким образом, что любое количеству узлов не будет соответствовать назначенной группе узлов.

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

  • LocationDomainId

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

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

    Назначает узел данных конкретной домене доступности (также известной как зона доступности) в облаке. Предоставление информации NDB о том, какие узлы находятся в каких доменах доступности, может улучшить производительность в облачной среде следующим образом:

    • Если запрашиваемые данные не найдены на том же узле, чтение может быть направлено на другой узел в том же домене доступности.

    • Связь между узлами в разных доменах доступности гарантированно будет использовать WAN-поддержку транспортеров NDB без дополнительного ручного вмешательства.

    • Номер группы транспортера может основываться на используемом домене доступности, так что также узлы SQL и другие узлы API будут взаимодействовать с локальными узлами данных в том же домене доступности, когда это возможно.

    • Арбитр может быть выбран из домена доступности, в котором нет узлов данных, или, если такой домен найти не удаётся, из третьего домена доступности.

    LocationDomainId принимает целочисленное значение от 0 до 16 включительно, причём 0 — значение по умолчанию; использование 0 равносильно отсутствию параметра.

  • NoOfReplicas

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

    Первоначальный перезапуск системы: Требует полного выключения кластера, очистки и восстановления файловой системы кластера из бэкапа, а затем перезапуска кластера. (NDB 9.2.0)

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

    Группы узлов формируются неявно. Первая группа узлов формируется набором узлов данных с наименьшими идентификаторами узлов, следующая группа узлов — набором следующих наименьших идентификаторов узлов и так далее. Например, предположим, что у нас есть 4 узла данных и что NoOfReplicas установлено в 2. Четыре узла данных имеют идентификаторы узлов 2, 3, 4 и 5. Тогда первая группа узлов формируется из узлов 2 и 3, а вторая группа узлов — из узлов 4 и 5. Важно настроить кластер таким образом, чтобы узлы в одной группе узлов не размещались на одном компьютере, поскольку отказ одного аппаратного обеспечения приведет к отказу всего кластера.

    Если идентификаторы узлов не указаны, порядок узлов данных является определяющим для группы узлов. Независимо от того, выполняются ли явные назначения, их можно просмотреть в выводе команды управления клиентом SHOW.

    Значение по умолчанию для NoOfReplicas равно 2. Это рекомендуемое значение для большинства производственных сред. Также поддерживается установка этого параметра в 3 или 4.

    Предупреждение

    Установка NoOfReplicas в 1 означает, что существует только одна копия всех данных кластера; в этом случае потеря одного узла данных приводит к отказу кластера, поскольку дополнительных копий данных, хранящихся на этом узле, нет.

    Количество узлов данных в кластере должно быть четно делимо на значение этого параметра. Например, если есть два узла данных, то NoOfReplicas должно быть равно 1 или 2, поскольку 2/3 и 2/4 дают дробные значения; если есть четыре узла данных, то NoOfReplicas должно быть равно 1, 2 или 4.

  • DataDir

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения путь
    Значение по умолчанию .
    Диапазон ...
    Тип перезапуска

    Первоначальный перезапуск узла: Требует постепенного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

    Этот параметр указывает каталог, в котором размещаются файлы трассировки, журналы, файлы pid и журналы ошибок.

    Значение по умолчанию — рабочая директория процесса узла данных.

  • FileSystemPath

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения путь
    Значение по умолчанию DataDir
    Диапазон ...
    Тип перезапуска

    Первоначальный перезапуск узла: Требует постепенного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

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

    Примечание

    Этот каталог должен существовать до запуска процесса ndbd.

    Рекомендуемая иерархия каталогов для NDB Cluster включает /var/lib/mysql-cluster, в котором создаётся каталог для файловой системы узла. Имя этого подкаталога содержит идентификатор узла. Например, если идентификатор узла равен 2, этот подкаталог называется ndb_2_fs.

  • BackupDataDir

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения путь
    Значение по умолчанию FileSystemPath
    Диапазон ...
    Тип перезапуска

    Первоначальный перезапуск узла: Требует постепенного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

    Этот параметр указывает каталог, в котором размещаются резервные копии.

    Важно

    Строка '/BACKUP' всегда добавляется к этому значению. Например, если вы установите значение BackupDataDir в /var/lib/cluster-data, то все резервные копии хранятся в /var/lib/cluster-data/BACKUP. Это также означает, что эффективное расположение резервной копии — каталог с именем BACKUP в расположении, указанном параметром FileSystemPath.

Память данных, память индексов и строковая память

DataMemory и IndexMemory — это [ndbd] параметры, определяющие размер сегментов памяти, используемых для хранения фактических записей и их индексов. При установке значений важно понять, как используется DataMemory, так как его обычно необходимо обновлять, чтобы отразить фактическое использование кластером.

Примечание

IndexMemory устарел и может быть удален в будущей версии NDB Cluster. Дополнительную информацию см. в последующих описаниях.

  • DataMemory

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения байты
    Значение по умолчанию 98М
    Диапазон 1М - 16Т
    Тип перезапуска

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

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

    Память, выделенная параметром DataMemory, используется для хранения как фактических записей, так и индексов. На каждую запись накладывается накладные расходы в 16 байт; дополнительное количество для каждой записи возникает из-за того, что она хранится в 32КБ-странице с накладными расходами в 128 байт (см. ниже). Также небольшое количество памяти теряется на страницу из-за того, что каждая запись хранится только на одной странице.

    Для атрибутов таблиц с переменной длиной данные хранятся на отдельных страницах данных, выделенных из DataMemory. Записи переменной длины используют фиксированную часть с дополнительными накладными расходами в 4 байта для ссылки на переменную часть. Переменная часть имеет накладные расходы в 2 байта плюс 2 байта на атрибут.

    Максимальный размер записи составляет 30000 байт.

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

    Пространство памяти, выделенное параметром DataMemory, состоит из 32КБ-страниц, которые выделены для фрагментов таблиц. Каждая таблица обычно разделена на такое же количество фрагментов, как и узлов данных в кластере. Таким образом, для каждого узла количество фрагментов такое же, как установлено в NoOfReplicas.

    После выделения страницы ее нельзя вернуть в пул свободных страниц, кроме как удалив таблицу. (Это также означает, что страницы DataMemory, после выделения для данной таблицы, нельзя использовать другими таблицами.) Восстановление узла данных также сжимает раздел, потому что все записи вставляются в пустые разделы с других активных узлов.

    Пространство памяти DataMemory также содержит информацию UNDO: Для каждой операции обновления копия неизменённой записи выделяется в DataMemory. Также есть ссылка на каждую копию в упорядоченных индексах таблицы. Уникальные индексы хеширования обновляются только при обновлении столбцов уникального индекса, в этом случае в таблицу индекса вставляется новая запись, а старая запись удаляется при подтверждении. По этой причине также необходимо выделить достаточно памяти для обработки самых больших транзакций, выполняемых приложениями, использующими кластер. В любом случае, выполнение нескольких больших транзакций не имеет преимуществ по сравнению с использованием многих меньших, по следующим причинам:

    • Крупные транзакции не быстрее, чем небольшие

    • Крупные транзакции увеличивают количество потерянных операций, которые необходимо повторить в случае сбоя транзакции

    • Крупные транзакции используют больше памяти

    Значение по умолчанию для DataMemory составляет 98МБ. Минимальное значение — 1МБ. Максимального размера нет, но на практике максимальный размер должен быть адаптирован таким образом, чтобы процесс не начинал подкачку, когда предел будет достигнут. Этот предел определяется количеством доступной физической оперативной памяти на машине и объёмом памяти, который операционная система может зарезервировать для одного процесса. 32-разрядные операционные системы, как правило, ограничены 2−4 ГБ на процесс; 64-разрядные операционные системы могут использовать больше. Для больших баз данных для этой причины может быть предпочтительнее использовать 64-разрядную операционную систему.

  • IndexMemory

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения байты
    Значение по умолчанию 0
    Диапазон 1М - 1Т
    Устаревший Да (в NDB 7.6)
    Тип перезапуска

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

    Параметр IndexMemory устарел (и может быть удалён в будущем); любая память, выделенная IndexMemory, вместо этого выделяется в тот же пул, что и DataMemory, который несет полную ответственность за все ресурсы, необходимые для хранения данных и индексов в памяти. В NDB 9.2 использование IndexMemory в файле конфигурации кластера приводит к предупреждению от сервера управления.

    Вы можете оценить размер индекса хеширования по этой формуле:

      size  = ( (fragments * 32K) + (rows * 18) )
              * fragment_replicas
    

    fragments — количество фрагментов, fragment_replicas — количество реплик фрагментов (обычно 2), а rows — количество строк. Если таблица имеет один миллион строк, восемь фрагментов и две реплики фрагментов, ожидаемое использование памяти индекса рассчитывается следующим образом:

      ((8 * 32K) + (1000000 * 18)) * 2 = ((8 * 32768) + (1000000 * 18)) * 2
      = (262144 + 18000000) * 2
      = 18262144 * 2 = 36524288 bytes = ~35MB
    

    Статистика индекса для упорядоченных индексов (если они включены) хранится в таблице mysql.ndb_index_stat_sample. Поскольку эта таблица имеет индекс хеширования, это увеличивает использование памяти индекса. Верхнюю границу количества строк для данного упорядоченного индекса можно рассчитать следующим образом:

      sample_size= key_size + ((key_attributes + 1) * 4)
    
      sample_rows = IndexStatSaveSize
                    * ((0.01 * IndexStatSaveScale * log2(rows * sample_size)) + 1)
                    / sample_size
    

    В приведенной формуле key_size — размер ключа упорядоченного индекса в байтах, key_attributes — количество атрибутов в ключе упорядоченного индекса, а rows — количество строк в основной таблице.

    Предположим, что таблица t1 имеет 1 миллион строк и упорядоченный индекс, названный ix1, на двух 4-байтовых целых числах. Предположим также, что IndexStatSaveSize и IndexStatSaveScale установлены в свои значения по умолчанию (32К и 100 соответственно). Используя предыдущие 2 формулы, мы можем рассчитать следующим образом:

      sample_size = 8  + ((1 + 2) * 4) = 20 bytes
    
      sample_rows = 32K
                    * ((0.01 * 100 * log2(1000000*20)) + 1)
                    / 20
                    = 32768 * ( (1 * ~16.811) +1) / 20
                    = 32768 * ~17.811 / 20
                    = ~29182 rows
    

    Таким образом, ожидаемое использование памяти индекса составляет 2 * 18 * 29182 = ~1050550 байт.

    Минимальное и значение по умолчанию для этого параметра — 0 (ноль).

  • StringMemory

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

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

    Этот параметр определяет, сколько памяти выделяется для строк, таких как имена таблиц, и указывается в разделе [ndbd] или [ndbd default] файла config.ini. Значение от 0 до 100 включительно интерпретируется как процент от максимального значения по умолчанию, которое рассчитывается на основе нескольких факторов, включая количество таблиц, максимальный размер имени таблицы, максимальный размер файлов .FRM, MaxNoOfTriggers, максимальный размер имени столбца и максимальное значение столбца по умолчанию.

    Значение больше 100 интерпретируется как количество байтов.

    Значение по умолчанию — 25, то есть 25 процентов от максимального значения по умолчанию.

    В большинстве случаев значения по умолчанию должны быть достаточными, но когда у вас очень много таблиц NDB (1000 или более), возможно получение ошибки 773 Не хватает памяти для строк, пожалуйста, измените параметр StringMemory: Постоянная ошибка: Ошибка схемы, в этом случае необходимо увеличить это значение. 25 (25 процентов) не избыточно и должно предотвратить эту ошибку во всех, кроме самых экстремальных случаев.

Следующий пример иллюстрирует, как используется память для таблицы. Рассмотрим такое определение таблицы:

CREATE TABLE example (
  a INT NOT NULL,
  b INT NOT NULL,
  c INT NOT NULL,
  PRIMARY KEY(a),
  UNIQUE(b)
) ENGINE=NDBCLUSTER;

Для каждой записи есть 12 байтов данных плюс 12 байтов накладных расходов. Отсутствие столбцов с NULL-значениями экономит 4 байта накладных расходов. Кроме того, у нас есть два упорядоченных индекса по столбцам a и b, потребляющих примерно по 10 байтов на запись. Есть хеш-индекс первичного ключа по основной таблице, использующий примерно 29 байтов на запись. Уникальное ограничение реализуется отдельной таблицей с b в качестве первичного ключа и a в качестве столбца. Эта другая таблица потребляет дополнительные 29 байтов памяти индекса на каждую запись в таблице example, а также 8 байтов данных записи плюс 12 байтов накладных расходов.

Таким образом, для одного миллиона записей нам требуется 58 МБ памяти для индексов для обработки хеш-индексов для первичного ключа и уникального ограничения. Нам также потребуется 64 МБ для записей базовой таблицы и таблицы уникального индекса, плюс две упорядоченные таблицы индексов.

Вы можете видеть, что хеш-индексы занимают значительное количество места в памяти; однако они обеспечивают очень быстрый доступ к данным в ответ. Они также используются в NDB Cluster для обработки уникальных ограничений.

В настоящее время единственный алгоритм разбиения — хеширование, а упорядоченные индексы локальны для каждого узла. Таким образом, упорядоченные индексы не могут использоваться для обработки уникальных ограничений в общем случае.

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

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

DataMemory можно изменить, но уменьшение его может быть рискованным; это может легко привести к тому, что узел или даже весь NDB Cluster не сможет перезапуститься из-за недостаточного места в памяти. Увеличение этих значений должно быть приемлемым, но рекомендуется, чтобы такие обновления выполнялись таким же образом, как обновление программного обеспечения, начиная с обновления файла конфигурации, а затем перезапуска сервера управления и, в свою очередь, каждого узла данных.

MinFreePct. Пропорция (по умолчанию 5%) ресурсов узла данных, включая DataMemory, сохраняется в резерве, чтобы гарантировать, что узел данных не исчерпает память при выполнении перезапуска. Это можно настроить с помощью параметра конфигурации узла данных MinFreePct (по умолчанию 5).

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

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

Обновления не увеличивают объем используемой памяти индексов. Вставки вступают в силу немедленно; однако строки фактически не удаляются до тех пор, пока транзакция не будет подтверждена.

Параметры транзакций. Следующие несколько [ndbd] параметров, которые мы обсуждаем, важны, потому что они влияют на количество параллельных транзакций и размеры транзакций, которые может обрабатывать система. MaxNoOfConcurrentTransactions устанавливает количество возможных параллельных транзакций в узле. MaxNoOfConcurrentOperations устанавливает количество записей, которые могут быть на стадии обновления или заблокированы одновременно.

Оба эти параметра (особенно MaxNoOfConcurrentOperations) скорее всего будут настраиваться пользователями для установки определенных значений, а не для использования значения по умолчанию. Значение по умолчанию установлено для систем, использующих небольшие транзакции, чтобы гарантировать, что они не используют чрезмерно много памяти.

MaxDMLOperationsPerTransaction устанавливает максимальное количество операций DML, которые могут быть выполнены в данной транзакции.

  • MaxNoOfConcurrentTransactions

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

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

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

    Записи транзакций распределяются по отдельным серверам MySQL. Каждый подключение к серверу MySQL требует как минимум одной записи транзакции, плюс дополнительный объект транзакции на каждую таблицу, к которой обращается это подключение. Это означает, что разумный минимум для общего количества транзакций в кластере можно выразить как

    TotalNoOfConcurrentTransactions =
        (maximum number of tables accessed in any single transaction + 1)
        * number of SQL nodes
    

    Предположим, что 10 узлов SQL используют кластер. Единственное объединение, включающее 10 таблиц, требует 11 записей транзакции; если в транзакции имеется 10 таких объединений, то требуется 10 * 11 = 110 записей транзакции на один сервер MySQL или 110 * 10 = 1100 записей транзакции в целом. Каждый узел данных может быть готов обработать TotalNoOfConcurrentTransactions / количество узлов данных. Для кластера NDB с 4 узлами это означало бы установку MaxNoOfConcurrentTransactions на каждом узле данных до 1100 / 4 = 275. Кроме того, следует предусмотреть восстановление после сбоев, гарантируя, что одна группа узлов может вместить все одновременные транзакции; другими словами, MaxNoOfConcurrentTransactions каждого узла данных должно быть достаточно, чтобы охватить количество транзакций, равное TotalNoOfConcurrentTransactions / количество групп узлов. Если в этом кластере имеется одна группа узлов, то MaxNoOfConcurrentTransactions должно быть установлено в 1100 (то же самое, что и общее количество одновременных транзакций для всего кластера).

    Кроме того, каждая транзакция включает как минимум одну операцию; по этой причине значение, установленное для MaxNoOfConcurrentTransactions, должно всегда быть не более значения MaxNoOfConcurrentOperations.

    Этот параметр должен быть установлен в одинаковое значение для всех узлов данных кластера. Это связано с тем, что при сбое узла данных самый старый узел, который выжил, повторно создает состояние транзакции всех транзакций, которые выполнялись в вышедшем из строя узле.

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

    Значение по умолчанию — 4096.

  • MaxNoOfConcurrentOperations

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

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

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

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

    Этот параметр должен быть установлен как минимум на количество записей, которые необходимо одновременно обновлять в транзакциях, деленное на количество узлов данных кластера. Например, в кластере с четырьмя узлами данных, который, как ожидается, будет обрабатывать один миллион одновременных обновлений с использованием транзакций, вы должны установить это значение до 1000000 / 4 = 250000. Для повышения устойчивости к сбоям рекомендуется установить этот параметр на значение, достаточно высокое для того, чтобы отдельный узел данных мог обрабатывать нагрузку для своей группы узлов. Другими словами, вы должны установить значение, равное total number of concurrent operations / number of node groups. (В случае наличия одной группы узлов это равно общему количеству одновременных операций для всего кластера.)

    Поскольку каждая транзакция всегда включает как минимум одну операцию, значение MaxNoOfConcurrentOperations должно всегда быть больше или равно значению MaxNoOfConcurrentTransactions.

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

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

    Значение по умолчанию — 32768.

    Этот параметр фактически обрабатывает два значения, которые можно настроить отдельно. Первое из них определяет, сколько записей операций следует разместить в координаторе транзакций. Вторая часть определяет, сколько записей операций следует разместить локально в базе данных.

    Очень большая транзакция, выполненная в восьмиузловом кластере, требует столько же записей операций в координаторе транзакций, сколько чтений, обновлений и удалений участвуют в транзакции. Однако записи операций распределяются по всем восьми узлам. Таким образом, если необходимо настроить систему для одной очень большой транзакции, разумно настроить две части по отдельности. MaxNoOfConcurrentOperations всегда используется для расчета количества записей операций в части координатора транзакций узла.

    Также важно иметь представление о требованиях к памяти для записей операций. Они потребляют примерно 1 КБ на запись.

  • MaxNoOfLocalOperations

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

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

    По умолчанию этот параметр рассчитывается как 1,1 × MaxNoOfConcurrentOperations. Это подходит для систем с множеством одновременных транзакций, ни одна из которых не является очень большой. Если необходимо обработать одну очень большую транзакцию за раз и имеется много узлов, рекомендуется переопределить значение по умолчанию, явно указав этот параметр.

    Этот параметр устарел и может быть удален в будущих выпусках кластера NDB. Кроме того, этот параметр несовместим с параметром TransactionMemory; если вы попытаетесь установить значения для обоих параметров в файле конфигурации кластера (config.ini), сервер управления откажется от запуска.

  • MaxDMLOperationsPerTransaction

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

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

    Этот параметр ограничивает размер транзакции. Транзакция прерывается, если для нее требуется более этого количества операций DML.

    Значение этого параметра не может превышать значения, установленного для MaxNoOfConcurrentOperations.

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

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

  • MaxNoOfConcurrentIndexOperations

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Для запросов, использующих уникальный хэш-индекс, во время выполнения запроса используется другой временный набор записей операций. Этот параметр устанавливает размер этого пула записей. Таким образом, эта запись выделяется только во время выполнения части запроса. Как только эта часть будет выполнена, запись освобождается. Состояние, необходимое для обработки прерываний и подтверждений, обрабатывается обычными записями операций, где размер пула устанавливается параметром MaxNoOfConcurrentOperations.

    Значение по умолчанию этого параметра составляет 8192. В редких случаях чрезвычайно высокой параллельности при использовании уникальных хэш-индексов может потребоваться увеличение этого значения. Использование меньшего значения возможно и может сэкономить память, если администратор базы данных уверен, что высокая степень параллельности для кластера не требуется.

    Этот параметр устарел и может быть удален в будущих релизах NDB Cluster. Кроме того, этот параметр несовместим с параметром TransactionMemory; если вы попытаетесь установить значения для обоих параметров в файле конфигурации кластера (config.ini), сервер управления откажется от запуска.

  • MaxNoOfFiredTriggers

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Значение по умолчанию параметра MaxNoOfFiredTriggers составляет 4000, чего достаточно для большинства ситуаций. В некоторых случаях его можно даже уменьшить, если администратор базы данных уверен, что потребность в параллельности в кластере невысока.

    Запись создается, когда выполняется операция, влияющая на уникальный хэш-индекс. Вставка или удаление записи в таблице с уникальными хэш-индексами или обновление столбца, являющегося частью уникального хэш-индекса, вызывает срабатывание вставки или удаления в таблице индекса. Полученная запись используется для представления операции таблицы индекса во время ожидания завершения исходной операции, которая ее вызвала. Эта операция кратковременна, но все же может потребовать большого количества записей в своем пуле в ситуациях с многими параллельными операциями записи в базовый столбец, содержащий набор уникальных хэш-индексов.

    Этот параметр устарел и может быть удален в будущих релизах NDB Cluster. Кроме того, этот параметр несовместим с параметром TransactionMemory; если вы попытаетесь установить значения для обоих параметров в файле конфигурации кластера (config.ini), сервер управления откажется от запуска.

  • TransactionBufferMemory

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Память, на которую влияет этот параметр, используется для отслеживания операций, сработавших при обновлении таблиц индексов и чтении уникальных индексов. Эта память используется для хранения информации о ключе и столбцах для этих операций. Очень редко возникает необходимость изменения значения этого параметра от значения по умолчанию.

    Значение по умолчанию для TransactionBufferMemory составляет 1 МБ.

    Обычные операции чтения и записи используют аналогичный буфер, использование которого еще более кратковременно. Параметр времени компиляции ZATTRBUF_FILESIZE (найденный в ndb/src/kernel/blocks/Dbtc/Dbtc.hpp) установлен в 4000 × 128 байт (500 КБ). Аналогичный буфер для информации о ключе, ZDATABUF_FILESIZE (также в Dbtc.hpp) содержит 4000 × 16 = 62,5 КБ буферного пространства. Dbtc — модуль, обрабатывающий координацию транзакций.

Параметры выделения ресурсов транзакций. Параметры в следующем списке используются для выделения ресурсов транзакций в координаторе транзакций (DBTC). Если любое из этих значений установлено по умолчанию (0), то память транзакции выделяется на 25% от оценочного общего использования узлами данных для соответствующего ресурса. Фактические максимальные возможные значения для этих параметров обычно ограничены количеством памяти, доступной узлу данных; установка их не влияет на общее количество памяти, выделенной узлу данных. Кроме того, следует помнить, что они управляют количеством зарезервированных внутренних записей для узла данных независимо от любых настроек для MaxDMLOperationsPerTransaction, MaxNoOfConcurrentIndexOperations, MaxNoOfConcurrentOperations, MaxNoOfConcurrentScans, MaxNoOfConcurrentTransactions, MaxNoOfFiredTriggers, MaxNoOfLocalScans или TransactionBufferMemory (см. Параметры транзакций и Временное хранилище транзакций).

  • ReservedConcurrentIndexOperations

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Количество одновременных операций с индексами, имеющих выделенные ресурсы на одном узле данных.

  • ReservedConcurrentOperations

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Количество одновременных операций, имеющих выделенные ресурсы в координаторах транзакций на одном узле данных.

  • ReservedConcurrentScans

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Количество одновременных сканирований, имеющих выделенные ресурсы на одном узле данных.

  • ReservedConcurrentTransactions

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Количество одновременных транзакций, имеющих выделенные ресурсы на одном узле данных.

  • ReservedFiredTriggers

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Количество триггеров, имеющих выделенные ресурсы на одном узле ndbd(DB).

  • ReservedLocalScans

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Количество одновременных сканирований фрагментов, имеющих выделенные ресурсы на одном узле данных.

  • ReservedTransactionBufferMemory

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

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

  • TransactionMemory

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Важно

    Ряд параметров конфигурации несовместимы с TransactionMemory; невозможно установить одновременно какие-либо из этих параметров с TransactionMemory, и если вы попытаетесь это сделать, сервер управления не сможет запуститься (см. Параметры, несовместимые с TransactionMemory).

    Этот параметр определяет объем памяти (в байтах), выделяемой для транзакций на каждом узле данных. Установка памяти транзакций обрабатывается следующим образом:

    • Если задано TransactionMemory, это значение используется для определения памяти транзакций.

    • В противном случае память транзакций вычисляется так же, как и до NDB 8.0.

    Параметры, несовместимые с TransactionMemory. Следующие параметры не могут использоваться одновременно с TransactionMemory и поэтому устарели:

    • MaxNoOfConcurrentIndexOperations

    • MaxNoOfFiredTriggers

    • MaxNoOfLocalOperations

    • MaxNoOfLocalScans

    Явное задание любого из перечисленных параметров, когда TransactionMemory также установлен в файле конфигурации кластера (config.ini), не позволяет узлу управления запуститься.

    Для получения дополнительной информации о распределении ресурсов в узлах данных NDB Cluster см. Раздел 25.4.3.13, «Управление памятью узла данных».

Сканирование и буферизация. В модуле Dblqh (в ndb/src/kernel/blocks/Dblqh/Dblqh.hpp) есть дополнительные параметры [ndbd], которые влияют на операции чтения и обновления. К ним относятся ZATTRINBUF_FILESIZE, по умолчанию установленный в 10000 × 128 байт (1250 КБ), и ZDATABUF_FILE_SIZE, по умолчанию установленный в 10000*16 байт (примерно 156 КБ) буферного пространства. На сегодняшний день не поступало сообщений от пользователей и не было результатов наших собственных обширных тестов, которые бы свидетельствовали о необходимости увеличения любого из этих ограничений времени компиляции.

  • BatchSizePerLocalScan

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения целое число
    Значение по умолчанию 256
    Диапазон 1 - 992
    Устарело Да (в NDB 8.0)
    Тип перезапуска

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

    Этот параметр используется для расчета количества записей блокировок, используемых для обработки одновременных операций сканирования.

    Устарело.

    BatchSizePerLocalScan имеет сильную связь с BatchSize, определённым в узлах SQL.

  • LongMessageBuffer

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

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

    Это внутренний буфер, используемый для передачи сообщений внутри отдельных узлов и между узлами. Значение по умолчанию составляет 64 МБ.

    Этот параметр редко требует изменения от значения по умолчанию.

  • MaxFKBuildBatchSize

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

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

    Максимальный размер пакетного сканирования, используемый для построения внешних ключей. Увеличение значения этого параметра может ускорить построение внешних ключей, но одновременно может негативно повлиять на текущий трафик.

  • MaxNoOfConcurrentScans

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

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

    Этот параметр используется для управления количеством одновременных сканирований, которые могут выполняться в кластере. Каждый координатор транзакций может обрабатывать количество параллельных сканирований, определённое этим параметром. Каждое запросу сканирования выполняется путём параллельного сканирования всех разделов. Каждое сканирование раздела использует запись сканирования в узле, где находится раздел, количество записей является значением этого параметра, умноженным на количество узлов. Кластер должен быть способен поддерживать MaxNoOfConcurrentScans одновременных сканирований со всех узлов в кластере.

    Сканирования фактически выполняются в двух случаях. Первый из них происходит, когда нет хэшированных или упорядоченных индексов для обработки запроса, в этом случае запрос выполняется путём полного сканирования таблицы. Второй случай возникает, когда нет хэшированного индекса для поддержки запроса, но есть упорядоченный индекс. Использование упорядоченного индекса означает выполнение параллельного диапазонного сканирования. Порядок сохраняется только на локальных разделах, поэтому необходимо выполнить сканирование индекса по всем разделам.

    Значение по умолчанию для MaxNoOfConcurrentScans составляет 256. Максимальное значение равно 500.

  • MaxNoOfLocalScans

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения целое число
    Значение по умолчанию 4 * MaxNoOfConcurrentScans * [# of data nodes] + 2
    Диапазон 32 - 4294967039 (0xFFFFFEFF)
    Устарело Да (в NDB 8.0)
    Тип перезапуска

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

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

    4 * MaxNoOfConcurrentScans * [# data nodes] + 2
    

    Этот параметр устарел и может быть удален в будущих выпусках NDB Cluster. Кроме того, этот параметр несовместим с параметром TransactionMemory; если вы попытаетесь установить значения для обоих параметров в файле конфигурации кластера (config.ini), сервер управления откажется от запуска.

  • MaxParallelCopyInstances

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

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

    Этот параметр устанавливает параллелизацию, используемую в фазе копирования при перезапуске узла или перезапуске системы, когда узел, который только что начал работу, синхронизируется с узлом, который уже имеет текущие данные, копируя любые изменённые записи из узла, который является актуальным. Поскольку полная параллельность в таких случаях может привести к ситуациям перегрузки, MaxParallelCopyInstances предоставляет способ снизить её. Значение по умолчанию для этого параметра равно 0. Это значение означает, что эффективная параллельность равна числу экземпляров LDM в только что запущенном узле, а также узле, обновляющем его.

  • MaxParallelScansPerFragment

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

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

    Можно настроить максимальное количество параллельных сканирований (сканирования TUP и сканирования TUX), разрешённых перед тем, как они начнут вставать в очередь для последовательной обработки. Можно увеличить это значение, чтобы воспользоваться любыми неиспользуемыми процессорами при выполнении большого количества сканирований параллельно и улучшить их производительность.

  • MaxReorgBuildBatchSize

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

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

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

  • MaxUIBuildBatchSize

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

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

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

Выделение памяти

MaxAllocate

Версия (или более поздняя) NDB 9.2.0
Тип или единицы измерения беззнаковое
Значение по умолчанию 32М
Диапазон 1М - 1Г
Устаревший Да (в NDB 8.0)
Тип перезапуска

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

Этот параметр использовался в более старых версиях NDB Cluster, но не имеет эффекта в NDB 9.2. Он устарел и может быть удалён в будущих выпусках.

Несколько транспортеров

NDB выделяет несколько транспортеров для связи между парами узлов данных. Количество выделенных транспортеров может быть изменено путём установки подходящего значения для параметра NodeGroupTransporters, введённого в этом выпуске.

NodeGroupTransporters

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

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

Этот параметр определяет количество транспортеров, используемых между узлами в одной группе узлов. Значение по умолчанию (0) означает, что количество используемых транспортеров равно количеству LDMs в узле. Этого должно быть достаточно для большинства случаев использования; поэтому редко необходимо изменять это значение от значения по умолчанию.

Установка NodeGroupTransporters на значение, большее, чем количество потоков LDM или количество потоков TC (в зависимости от того, какое из них больше), приводит к тому, что NDB использует максимальное из этих двух значений. Это означает, что значения больше этого фактически игнорируются.

Размер хеш-таблицы

DefaultHashMapSize

Версия (или более поздняя) NDB 9.2.0
Тип или единицы измерения потоков LDM
Значение по умолчанию 240
Диапазон 0 - 3840
Тип перезапуска

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

Первоначальное назначение этого параметра заключалось в облегчении обновления, особенно понижения до и от очень старых выпусков с различными значениями по умолчанию для размера хеш-таблицы. Это не проблема при обновлении с NDB Cluster 7.3 (или более поздней версии) до более поздних версий.

Уменьшение этого параметра онлайн после создания или изменения любых таблиц с DefaultHashMapSize, равным 3840, в настоящее время не поддерживается.

Ведение журнала и создание контрольных точек. Следующие параметры [ndbd] контролируют поведение журналов и контрольных точек.

  • FragmentLogFileSize

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения байты
    Значение по умолчанию 16M
    Диапазон 4M - 1G
    Тип перезапуска

    Первоначальный перезапуск узла: Требуется повторный запуск кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

    Установка этого параметра позволяет напрямую управлять размером файлов журнала redo. Это может быть полезно в ситуациях, когда NDB Cluster работает под высокой нагрузкой и не может достаточно быстро закрыть файлы журнала фрагментов, прежде чем попытаться открыть новые (одновременно может быть открыто только 2 файла журнала фрагментов); увеличение размера файлов журнала фрагментов дает кластеру больше времени, прежде чем ему придется открывать каждый новый файл журнала фрагментов. Значение по умолчанию для этого параметра равно 16M.

    Для получения дополнительной информации о файлах журнала фрагментов см. описание для NoOfFragmentLogFiles.

  • InitialNoOfOpenFiles

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

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

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

    Значение по умолчанию равно 27.

  • InitFragmentLogFiles

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения [см. значения]
    Значение по умолчанию SPARSE
    Диапазон SPARSE, FULL
    Тип перезапуска

    Первоначальный перезапуск узла: Требуется повторный запуск кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

    По умолчанию файлы журнала фрагментов создаются разреженно при выполнении начального запуска узла данных — то есть, в зависимости от используемой операционной системы и файловой системы, не все байты обязательно записываются на диск. Однако можно переопределить это поведение и принудительно записать все байты, независимо от используемого типа платформы и файловой системы, с помощью этого параметра. InitFragmentLogFiles принимает одно из двух значений:

    • SPARSE. Файлы журнала фрагментов создаются разреженно. Это значение по умолчанию.

    • FULL. Принудительно записываются все байты файла журнала фрагментов на диск.

    В зависимости от вашей операционной системы и файловой системы, установка InitFragmentLogFiles=FULL может помочь устранить ошибки ввода-вывода при записи в журнал redo.

  • EnablePartialLcp

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

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

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

    Если EnablePartialLcp отключено (false), каждая LCP использует только один файл и записывает полную контрольную точку; это требует минимального объема дискового пространства для LCP, но увеличивает нагрузку на запись для каждой LCP. Значение по умолчанию включено (true). Пропорцию пространства, используемого частичными LCPS, можно изменить с помощью настройки параметра конфигурации RecoveryWork.

    Для получения дополнительной информации о файлах и каталогах, используемых для полных и частичных LCP, см. NDB Cluster Data Node File System Directory.

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

  • LcpScanProgressTimeout

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

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

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

    Значение по умолчанию — 60 секунд (обеспечивает совместимость с предыдущими версиями). Установка этого параметра в 0 полностью отключает контроллер сканирования фрагментов LCP.

  • MaxNoOfOpenFiles

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

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

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

    Значение по умолчанию равно 0. Однако минимальное значение, на которое можно установить этот параметр, равно 20.

  • MaxNoOfSavedMessages

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

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

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

    Значение по умолчанию равно 25, что устанавливает эти максимумы в 25 сообщений об ошибках и 25 файлов трассировки.

  • MaxLCPStartDelay

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

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

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

    Можно заставить локальную контрольную точку задерживаться, чтобы позволить большему количеству (и, возможно, всем) узлам данных завершить синхронизацию метаданных; как только синхронизация метаданных каждого узла данных завершится, все узлы данных могут восстановить данные таблиц параллельно, даже во время выполнения локальной контрольной точки. Для принудительной задержки задайте MaxLCPStartDelay, который определяет количество секунд, которое кластер может ждать, чтобы начать локальную контрольную точку, в то время как узлы данных продолжают синхронизировать метаданные. Этот параметр должен быть установлен в разделе [ndbd default] файла config.ini, чтобы он был одинаковым для всех узлов данных. Максимальное значение равно 600; значение по умолчанию — 0.

  • NoOfFragmentLogFiles

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

    Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с --initial. (NDB 9.2.0)

    Этот параметр задаёт количество файлов журнала REDO для узла, а значит, и объём выделенного пространства для протоколирования REDO. Поскольку файлы журнала REDO организованы по кольцу, крайне важно, чтобы первый и последний файлы журнала в наборе (иногда называемые файлами журнала “голова” и “хвост” соответственно) не совпадали. Если они приближаются друг к другу слишком сильно, узел начинает прерывать все транзакции, включающие обновления, из-за отсутствия места для новых записей в журнале.

    Запись в журнале REDO не удаляется до тех пор, пока не будут завершены обе необходимые локальные контрольные точки с момента вставки этой записи. Частота контрольных точек определяется собственным набором параметров конфигурации, рассматриваемым в другом месте данной главы.

    Значение параметра по умолчанию равно 16, что по умолчанию означает 16 наборов из 4 файлов по 16 МБ, в общей сложности 1024 МБ. Размер отдельных файлов журнала настраивается с помощью параметра FragmentLogFileSize. В сценариях, требующих большого количества обновлений, значение NoOfFragmentLogFiles может потребоваться установить до 300 или даже выше, чтобы обеспечить достаточное пространство для журналов REDO.

    Если выполнение контрольных точек замедляется и в базу данных производится так много записей, что файлы журнала заполняются и хвост журнала не может быть обрезана без риска нарушения восстановления, все транзакции обновления прерываются с внутренней ошибкой 410 (Out of log file space temporarily). Это условие сохраняется до тех пор, пока контрольная точка не завершится, и хвост журнала не будет перемещён вперёд.

    Важно

    Этот параметр нельзя изменить “на лету”; необходимо перезапустить узел, используя --initial. Если вы хотите изменить это значение для всех узлов данных в работающем кластере, вы можете сделать это с помощью поэтапного перезапуска узлов (используя --initial при запуске каждого узла данных).

  • RecoveryWork

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

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

    Процент накладных расходов на хранение для файлов LCP. Этот параметр оказывает влияние только тогда, когда EnablePartialLcp имеет значение true, то есть только при включённых частичных локальных контрольных точках. Более высокое значение означает:

    • Меньше записей записывается для каждой LCP, LCP используют больше места

    • Во время перезапусков требуется больше работы

    Более низкое значение для RecoveryWork означает:

    • Больше записей записывается во время каждой LCP, но LCP занимают меньше места на диске.

    • Меньше работы во время перезапуска, и, следовательно, более быстрые перезапуски, в ущерб большей работе во время обычных операций

    Например, установка RecoveryWork в значение 60 означает, что общий размер LCP приблизительно в 1 + 0,6 = 1,6 раз больше размера данных, подлежащих контрольной точке. Это означает, что в фазе восстановления при перезапуске требуется на 60% больше работы, чем при перезапуске с использованием полных контрольных точек. (Это более чем компенсируется в другие фазы перезапуска, так что перезапуск в целом быстрее при использовании частичных LCP, чем при использовании полных LCP.) Для того, чтобы не заполнить журнал redo, необходимо записывать в 1 + (1 / RecoveryWork) раз быстрее скорости изменения данных во время контрольных точек — таким образом, при RecoveryWork = 60 необходимо записывать примерно в 1 + (1 / 0,6) = 2,67 раз быстрее. Другими словами, если данные записываются со скоростью 10 МБайт в секунду, контрольная точка должна записываться примерно со скоростью 26,7 МБайт в секунду.

    Установка RecoveryWork = 40 означает, что требуется только в 1,4 раза больше общего размера LCP (а это значит, что фаза восстановления занимает на 10–15 процентов меньше времени. В этом случае скорость записи контрольной точки составляет в 3,5 раза скорость изменения.

    Дистрибутив NDB включает программу тестирования для моделирования LCP. lcp_simulator.cc можно найти в storage/ndb/src/kernel/blocks/backup/. Для компиляции и запуска на платформах Unix выполните команды, показанные здесь:

    $> gcc lcp_simulator.cc
    $> ./a.out
    

    Эта программа не зависит ни от чего, кроме stdio.h, и не требует подключения к кластеру NDB или серверу MySQL. По умолчанию она моделирует 300 LCP (три набора по 100 LCP, каждый из которых состоит из вставок, обновлений и удалений по очереди), сообщая о размере LCP после каждого из них. Вы можете изменить моделирование, изменив значения recovery_work, insert_work и delete_work в исходном коде и перекомпилировав его. Дополнительную информацию см. в исходном коде программы.

  • InsertRecoveryWork

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

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

    Процент RecoveryWork, используемый для вставленных строк. Более высокое значение увеличивает количество записей во время локальной контрольной точки и уменьшает общий размер LCP. Более низкое значение уменьшает количество записей во время LCP, но приводит к увеличению используемого для LCP пространства, что означает более длительное восстановление. Этот параметр оказывает влияние только тогда, когда EnablePartialLcp имеет значение true, то есть только при включённых частичных локальных контрольных точках.

  • EnableRedoControl

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

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

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

    При включенном состоянии (по умолчанию) EnableRedoControl предоставляет узлам данных большую гибкость в отношении скорости записи LCP на диск. Более конкретно, включение этого параметра означает, что можно использовать более высокие скорости записи, чтобы LCP завершались и журналы переигрывания обрезались быстрее, тем самым сокращая время восстановления и потребности в дисковом пространстве. Эта функция позволяет узлам данных лучше использовать более высокую скорость ввода-вывода и большую пропускную способность современных устройств хранения на твердотельных накопителях (SSD) и протоколов, таких как твердотельные накопители (SSD) с использованием NVMe.

    Если NDB развернуто на системах, ввода-вывода или пропускной способности которых ограничены по сравнению с системами, использующими твердотельные технологии, например, теми, которые используют обычные жесткие диски (HDD), механизм EnableRedoControl может легко привести к насыщению подсистемы ввода-вывода, увеличивая время ожидания для входных и выходных данных узла данных. В частности, это может вызвать проблемы со структурами данных NDB Disk, которые имеют табличные пространства или группы файлов журналов, которые совместно используют ограниченную подсистему ввода-вывода с файлами LCP и журналов переигрывания узлов данных; такие проблемы потенциально могут привести к сбоям узла или кластера из-за ошибок остановки GCP. Установите EnableRedoControl в false, чтобы отключить его в таких ситуациях. Установка EnablePartialLcp в false также отключает адаптивное вычисление.

Объекты метаданных. Следующий набор [ndbd] параметров определяет размеры пулов для объектов метаданных, используемых для определения максимального количества атрибутов, таблиц, индексов и объектов триггеров, используемых индексами, событиями и репликацией между кластерами.

Примечание

Они служат лишь “предложениями” кластеру, и все, что не указано, возвращаются к значениям по умолчанию, показанным.

  • MaxNoOfAttributes

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

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

    Этот параметр устанавливает рекомендуемое максимальное количество атрибутов, которые могут быть определены в кластере; как и MaxNoOfTables, он не предназначен для работы в качестве жесткого верхнего предела.

    (В более старых выпусках NDB Cluster этот параметр иногда рассматривался как жесткий предел для определенных операций. Это вызывало проблемы с репликацией NDB Cluster, когда было возможно создать больше таблиц, чем можно было реплицировать, и иногда приводило к путанице, когда было возможно [или невозможно, в зависимости от обстоятельств] создать больше, чем MaxNoOfAttributes атрибутов.)

    Значение по умолчанию равно 1000, а минимальное возможное значение — 32. Максимальное значение — 4294967039. Каждый атрибут потребляет около 200 байт памяти на узел из-за того, что все метаданные полностью реплицируются на серверах.

    При установке MaxNoOfAttributes важно заранее подготовиться к любым операциям ALTER TABLE, которые вы можете захотеть выполнить в будущем. Это связано с тем, что во время выполнения операции ALTER TABLE над таблицей кластера используется в три раза больше атрибутов, чем в исходной таблице, и хорошей практикой является разрешение в два раза большего количества. Например, если таблица NDB Cluster, имеющая наибольшее количество атрибутов (greatest_number_of_attributes), имеет 100 атрибутов, хорошей отправной точкой для значения MaxNoOfAttributes будет 6 * greatest_number_of_attributes = 600.

    Вы также должны оценить среднее количество атрибутов на таблицу и умножить это на MaxNoOfTables. Если это значение больше, чем значение, полученное в предыдущем абзаце, вы должны использовать вместо него большее значение.

    Предполагая, что вы можете создавать все нужные таблицы без каких-либо проблем, вы также должны проверить, достаточно ли этого числа, попытавшись выполнить фактическую операцию ALTER TABLE после настройки параметра. Если это не удалось, увеличьте значение MaxNoOfAttributes еще на кратное MaxNoOfTables и проверьте его снова.

  • MaxNoOfTables

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы integer
    Значение по умолчанию 128
    Диапазон 8 - 20320
    Тип перезапуска

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

    Объект таблицы выделяется для каждой таблицы и для каждого уникального хеш-индекса в кластере. Этот параметр устанавливает рекомендуемое максимальное количество объектов таблиц для всего кластера; как и MaxNoOfAttributes, он не предназначен для работы в качестве жесткого верхнего предела.

    (В более старых выпусках NDB Cluster этот параметр иногда рассматривался как жесткий предел для определенных операций. Это вызывало проблемы с репликацией NDB Cluster, когда было возможно создать больше таблиц, чем можно было реплицировать, и иногда приводило к путанице, когда было возможно [или невозможно, в зависимости от обстоятельств] создать больше, чем MaxNoOfTables таблиц.)

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

    Значение этого параметра по умолчанию равно 128. Минимум — 8, а максимум — 20320. Каждый объект таблицы потребляет приблизительно 20 КБ на узел.

    Примечание

    Сумма MaxNoOfTables, MaxNoOfOrderedIndexes и MaxNoOfUniqueHashIndexes не должна превышать 232 − 2 (4294967294).

  • MaxNoOfOrderedIndexes

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

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

    Для каждого упорядоченного индекса в кластере выделяется объект, описывающий индексируемые данные и их сегменты хранения. По умолчанию каждый так определенный индекс также определяет упорядоченный индекс. Каждый уникальный индекс и первичный ключ имеют как упорядоченный, так и хеш-индекс. MaxNoOfOrderedIndexes устанавливает общее количество упорядоченных индексов, которые могут использоваться в системе в любой момент времени.

    Значение этого параметра по умолчанию равно 128. Каждый объект индекса потребляет приблизительно 10 КБ данных на узел.

    Примечание

    Сумма MaxNoOfTables, MaxNoOfOrderedIndexes и MaxNoOfUniqueHashIndexes не должна превышать 232 − 2 (4294967294).

  • MaxNoOfUniqueHashIndexes

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

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

    Для каждого уникального индекса, который не является первичным ключом, выделяется специальная таблица, которая сопоставляет уникальный ключ с первичным ключом индексированной таблицы. По умолчанию для каждого уникального индекса также определяется упорядоченный индекс. Чтобы предотвратить это, необходимо указать параметр USING HASH при определении уникального индекса.

    Значение по умолчанию равно 64. Каждый индекс потребляет приблизительно 15 КБ на узел.

    Примечание

    Сумма MaxNoOfTables, MaxNoOfOrderedIndexes и MaxNoOfUniqueHashIndexes не должна превышать 232 − 2 (4294967294).

  • MaxNoOfTriggers

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

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

    Внутренние триггеры обновления, вставки и удаления выделяются для каждого уникального хеш-индекса. (Это означает, что для каждого уникального хеш-индекса создаются три триггера.) Однако для упорядоченного индекса требуется только один объект триггера. Резервные копии также используют три объекта триггера для каждой обычной таблицы в кластере.

    Репликация между кластерами также использует внутренние триггеры.

    Этот параметр устанавливает максимальное количество объектов триггеров в кластере.

    Значение по умолчанию равно 768.

  • MaxNoOfSubscriptions

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

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

    Каждая NDB таблица в кластере NDB требует подписки в ядре NDB. Для некоторых приложений NDB API может быть необходимо или желательно изменить этот параметр. Однако для нормального использования с серверами MySQL, действующими как узлы SQL, это не нужно.

    Значение по умолчанию для MaxNoOfSubscriptions равно 0, что эквивалентно MaxNoOfTables. Каждая подписка потребляет 108 байт.

  • MaxNoOfSubscribers

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

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

    Этот параметр представляет интерес только при использовании репликации NDB Cluster. Значение по умолчанию равно 0. Оно обрабатывается как 2 * MaxNoOfTables + 2 * [number of API nodes]. Существует одна подписка на каждую NDB таблицу для каждого из двух серверов MySQL (один — источник репликации, другой — реплика). Каждый подписчик использует 16 байт памяти.

    При использовании циклической репликации, репликации с несколькими источниками и других конфигурациях репликации, включающих более 2 серверов MySQL, необходимо увеличить этот параметр до количества процессов mysqld, включенных в репликацию (часто, но не всегда, это совпадает с количеством кластеров). Например, если у вас есть конфигурация циклической репликации, использующая три кластера NDB, к каждому из которых подключен по одному процессу mysqld, и каждый из этих процессов mysqld выступает в качестве источника и реплики, вы должны установить MaxNoOfSubscribers равным 3 * MaxNoOfTables.

    Дополнительную информацию см. в разделе 25.7, “Репликация NDB Cluster”.

  • MaxNoOfConcurrentSubOperations

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

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

    Этот параметр устанавливает предел для количества операций, которые могут выполняться всеми узлами API в кластере одновременно. Значение по умолчанию (256) достаточно для обычных операций и может потребовать корректировки только в сценариях, где есть большое количество узлов API, каждый из которых выполняет большое количество операций одновременно.

Булевы параметры. Поведение узлов данных также зависит от набора [ndbd] параметров, принимающих булевы значения. Эти параметры могут быть указаны как TRUE, установив их равными 1 или Y, и как FALSE, установив их равными 0 или N.

  • CompressedLCP

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Установка этого параметра в 1 приводит к сжатию локальных файлов контрольных точек. Используемое сжатие эквивалентно gzip --fast и может сэкономить 50% или более места на узле данных для хранения несжатых файлов контрольных точек. Сжатые LCP могут быть включены для отдельных узлов данных или для всех узлов данных (установив этот параметр в разделе [ndbd default] файла config.ini).

    Важно

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

    Значение по умолчанию равно 0 (выключено).

  • CrashOnCorruptedTuple

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    При включенном параметре (по умолчанию) узел данных завершается всякий раз, когда встречает повреждённую кортеж.

  • Diskless

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

    Первоначальный перезапуск системы: Требуется полное завершение работы кластера, очистка и восстановление файловой системы кластера из резервной копии, а затем перезапуск кластера. (NDB 9.2.0)

    Возможно указать таблицы NDB Cluster как diskless, что означает, что таблицы не сохраняются на диск и не ведётся журналирование. Такие таблицы существуют только в оперативной памяти. Следствием использования безнакопительных таблиц является то, что ни таблицы, ни записи в этих таблицах не сохраняются после сбоя. Однако при работе в режиме без дисков можно запустить ndbd на компьютере без диска.

    Важно

    Эта функция приводит к тому, что весь кластер работает в режиме без дисков.

    При включении этой функции, онлайн-резервное копирование NDB Cluster отключено. Кроме того, частичный запуск кластера невозможен.

    Diskless по умолчанию отключено.

  • EncryptedFileSystem

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

    Первоначальный перезапуск узла: Требуется поэтапный перезапуск кластера; каждый узел данных должен быть перезапущен с --initial. (NDB 9.2.0)

    Шифрование файлов LCP и табличного пространства, включая журналы отката и журналы переписывания. Отключено по умолчанию (0); установите в 1, чтобы включить.

    Важно

    При включенном шифровании файловой системы необходимо указать пароль для каждого узла данных при его запуске, используя один из вариантов --filesystem-password или --filesystem-password-from-stdin. В противном случае узел данных не сможет запуститься.

    Дополнительную информацию см. в Разделе 25.6.14, «Шифрование файловой системы для NDB Cluster».

  • LateAlloc

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

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

  • LockPagesInMainMemory

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

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

    Для ряда операционных систем, включая Solaris и Linux, можно заблокировать процесс в памяти и тем самым избежать любой подкачки на диск. Это может быть использовано для обеспечения характеристик кластера в реальном времени.

    Этот параметр принимает одно из целочисленных значений 0, 1 или 2, которые действуют, как показано в следующем списке:

    • 0: Отключает блокировку. Это значение по умолчанию.

    • 1: Выполняет блокировку после выделения памяти для процесса.

    • 2: Выполняет блокировку до выделения памяти для процесса.

    Если операционная система не настроена на разрешение не привилегированным пользователям блокировать страницы, то процесс узла данных, использующий этот параметр, может потребоваться запускать от имени системного администратора. (LockPagesInMainMemory использует функцию mlockall. Начиная с ядра Linux 2.6.9, не привилегированные пользователи могут блокировать память в ограниченном объеме, определяемом max locked memory. Для получения дополнительной информации см. ulimit -l и http://linux.die.net/man/2/mlock).

    Примечание

    В более старых версиях NDB Cluster этот параметр был булевым. 0 или false было значением по умолчанию и отключало блокировку. 1 или true включало блокировку процесса после выделения его памяти. NDB Cluster 9.2 рассматривает true или false для значения этого параметра как ошибку.

    Важно

    Начиная с glibc 2.10, glibc использует арены на уровне потоков для уменьшения конкуренции за блокировки в общем пуле, что потребляет оперативную память. В общем случае процесс узла данных не нуждается в аренах на уровне потоков, поскольку он не выполняет никакого выделения памяти после запуска. (Это различие в аллокаторах, по-видимому, не оказывает существенного влияния на производительность.)

    Поведение glibc должно быть конфигурируемым с помощью переменной среды MALLOC_ARENA_MAX, но ошибка в этом механизме до glibc 2.16 означала, что эта переменная не могла быть установлена меньше 8, так что потерянную память нельзя было вернуть. (Ошибка #15907219; см. также http://sourceware.org/bugzilla/show_bug.cgi?id=13137 для получения дополнительной информации об этой проблеме.)

    Одним из возможных обходных путей этой проблемы является использование переменной среды LD_PRELOAD для предварительной загрузки библиотеки выделения памяти jemalloc, чтобы заменить ту, которая поставляется с glibc.

  • ODirect

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

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

    Включение этого параметра заставляет NDB пытаться использовать O_DIRECT записи для LCP, резервных копий и журналов повторной записи, часто снижая использование kswapd и процессора. При использовании NDB Cluster в Linux включите ODirect, если вы используете ядро 2.6 или более поздней версии.

    ODirect отключен по умолчанию.

  • ODirectSyncFlag

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

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

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

    • ODirect не включен.

    • InitFragmentLogFiles установлен в SPARSE.

    Отключен по умолчанию.

  • RequireCertificate

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

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

    Если этот параметр установлен в true, узел данных ищет ключ и действительный и актуальный сертификат в пути поиска TLS и не может запуститься, если не найдет их.

  • RequireTls

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

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

    Если этот параметр установлен в true, соединения с этим узлом данных должны быть аутентифицированы с использованием TLS.

  • RestartOnErrorInsert

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

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

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

    Эта функция отключена по умолчанию.

  • StopOnError

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

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

    Данный параметр определяет, должен ли процесс узла данных завершиться или выполнить автоматический перезапуск при возникновении ошибки.

    Значение параметра по умолчанию равно 1; это означает, что по умолчанию ошибка приводит к остановке процесса узла данных.

    При возникновении ошибки и значении StopOnError равном 0, процесс узла данных перезапускается.

    Пользователи MySQL Cluster Manager должны обратить внимание, что, когда StopOnError равно 1, это предотвращает агент MySQL Cluster Manager от перезапуска узлов данных после выполнения собственного перезапуска и восстановления. См. Запуск и остановка агента в Linux для получения дополнительной информации.

  • UseShm

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

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

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

Управление таймаутами, интервалами и кэшированием диска

Существует ряд [ndbd] параметров, определяющих таймауты и интервалы между различными действиями в узлах данных кластера. Большинство значений таймаутов указаны в миллисекундах. Любые исключения из этого правила упоминаются при необходимости.

  • TimeBetweenWatchDogCheck

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

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

    Чтобы предотвратить зависание основного потока в бесконечном цикле, поток «сторож» проверяет основной поток. Этот параметр задает количество миллисекунд между проверками. Если процесс остается в том же состоянии после трех проверок, поток-сторож завершает его.

    Этот параметр легко изменить в экспериментальных целях или для адаптации к местным условиям. Его можно указать для каждого узла, хотя, кажется, нет веских причин для этого.

    Время ожидания по умолчанию составляет 6000 миллисекунд (6 секунд).

  • TimeBetweenWatchDogCheckInitial

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

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

    Это похоже на параметр TimeBetweenWatchDogCheck, за исключением того, что TimeBetweenWatchDogCheckInitial управляет временем между проверками выполнения внутри узла хранения на ранних этапах запуска, когда выделяется память.

    Время ожидания по умолчанию составляет 6000 миллисекунд (6 секунд).

  • StartPartialTimeout

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

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

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

    Этот параметр переопределяется при выполнении начального запуска или начального перезапуска кластера.

    Значение по умолчанию составляет 30000 миллисекунд (30 секунд). 0 отключает время ожидания, в этом случае кластер может запуститься только если все узлы доступны.

  • StartPartitionedTimeout

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

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

    Если кластер готов к запуску после ожидания StartPartialTimeout миллисекунд, но все еще может находиться в раздробленном состоянии, кластер ожидает, пока не истечет и это время ожидания. Если StartPartitionedTimeout установлено в 0, кластер ожидает бесконечно (232−1 мс или приблизительно 49,71 дня).

    Этот параметр переопределяется при выполнении начального запуска или начального перезапуска кластера.

  • StartFailureTimeout

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

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

    Если узел данных не завершил свою процедуру запуска в течение времени, указанного этим параметром, запуск узла завершается неудачей. Установка этого параметра в 0 (значение по умолчанию) означает, что время ожидания узла данных не применяется.

    Для ненулевых значений этот параметр измеряется в миллисекундах. Для узлов данных, содержащих очень большие объемы данных, этот параметр следует увеличить. Например, в случае узла данных, содержащего несколько гигабайт данных, для выполнения перезапуска узла может потребоваться период до 10-15 минут (то есть 600000-1000000 миллисекунд).

  • StartNoNodeGroupTimeout

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

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

    Когда узел данных настроен с помощью Nodegroup = 65536, считается, что он не назначен ни одной группе узлов. После этого кластер ожидает StartNoNodegroupTimeout миллисекунд, затем обрабатывает такие узлы так, как если бы они были добавлены в список, переданный в параметр --nowait-nodes, и запускается. Значение по умолчанию — 15000 (то есть сервер управления ожидает 15 секунд). Установка этого параметра равной 0 означает, что кластер будет ждать бесконечно.

    StartNoNodegroupTimeout должно быть одинаковым для всех узлов данных в кластере; по этой причине его всегда следует устанавливать в разделе [ndbd default] файла config.ini, а не для отдельных узлов данных.

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

  • HeartbeatIntervalDbDb

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

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

    Одним из основных методов обнаружения неработающих узлов является использование сигналов «сердцебиения». Этот параметр указывает, как часто отправляются сигналы «сердцебиения» и как часто ожидается их получение. Сигналы «сердцебиения» нельзя отключить.

    После пропуска четырех интервалов «сердцебиения» подряд узел объявляется нерабочим. Таким образом, максимальное время обнаружения отказа с помощью механизма «сердцебиения» составляет пять интервалов «сердцебиения».

    Интервал «сердцебиения» по умолчанию составляет 5000 миллисекунд (5 секунд). Этот параметр не должен резко меняться и не должен сильно отличаться у разных узлов. Если один узел использует 5000 миллисекунд, а узел, за ним наблюдающий, использует 1000 миллисекунд, очевидно, что узел объявляется нерабочим очень быстро. Этот параметр может быть изменен во время онлайн-обновления программного обеспечения, но только с небольшими приращениями.

    См. также сетевое взаимодействие и задержки, а также описание параметра конфигурации ConnectCheckIntervalDelay.

  • HeartbeatIntervalDbApi

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Каждый узел данных отправляет сигналы о работоспособности каждому серверу MySQL (узлу SQL), чтобы убедиться, что он остается с ним в контакте. Если сервер MySQL не отправляет сигнал о работоспособности вовремя, он объявляется «мёртвым», в этом случае все текущие транзакции завершаются, и все ресурсы освобождаются. Узел SQL не может повторно подключиться, пока не завершены все действия, инициированные предыдущим экземпляром сервера MySQL. Три критерия для определения работоспособности такие же, как описано для HeartbeatIntervalDbDb.

    Значение по умолчанию составляет 1500 миллисекунд (1,5 секунды). Этот интервал может отличаться у отдельных узлов данных, так как каждый узел данных наблюдает за подключенными к нему серверами MySQL независимо от других узлов данных.

    Для получения дополнительной информации см. Сеть связи и задержка.

  • HeartbeatOrder

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

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

    Узлы данных отправляют сигналы о работоспособности друг другу по кругу, при этом каждый узел данных отслеживает предыдущий. Если узел данных не обнаруживает сигнал о работоспособности от предыдущего узла, этот узел объявляет предыдущий узел в круге «мёртвым» (то есть больше не доступным для кластера). Определение того, что узел данных является мёртвым, происходит глобально; другими словами, как только узел данных объявлен мёртвым, все узлы в кластере так его и рассматривают.

    Возможны ситуации, когда сигналы о работоспособности между узлами данных, находящимися на разных хостах, слишком медленные по сравнению с сигналами о работоспособности между другими парами узлов (например, из-за очень низкого интервала сигналов о работоспособности или временной проблемы с соединением), в результате чего узел данных объявляется мёртвым, даже если он по-прежнему может функционировать как часть кластера.

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

    Рассмотрим конфигурацию с четырьмя узлами данных A, B, C и D, работающими на двух компьютерах host1 и host2, и что эти узлы данных образуют две группы узлов, как показано в следующей таблице:

    Таблица 25.9 Четыре узла данных A, B, C, D, работающие на двух компьютерах host1, host2; каждый узел данных принадлежит одной из двух групп узлов.

    Таблица 25.9 Четыре узла данных A, B, C, D, работающие на двух компьютерах host1, host2; каждый узел данных принадлежит одной из двух групп узлов.
    Группа узлов Узлы, работающие на host1 Узлы, работающие на host2
    Группа узлов 0: Узел A Узел B
    Группа узлов 1: Узел C Узел D

    Предположим, что сигналы о работоспособности передаются в порядке A->B->C->D->A. В этом случае потеря сигнала о работоспособности между хостами приводит к тому, что узел B объявляет узел A мёртвым, а узел C объявляет узел B мёртвым. Это приводит к потере группы узлов 0, и кластер выходит из строя. С другой стороны, если порядок передачи — A->B->D->C->A (и все остальные условия остаются такими же, как и ранее), потеря сигнала о работоспособности приводит к тому, что узлы A и D объявляются мёртвыми; в этом случае каждая группа узлов имеет один уцелевший узел, и кластер остаётся работоспособным.

    Параметр конфигурации HeartbeatOrder позволяет пользователю настроить порядок передачи сигналов о работоспособности. Значение по умолчанию для HeartbeatOrder — ноль; использование значения по умолчанию на всех узлах данных приводит к тому, что порядок передачи сигналов о работоспособности определяется NDB. Если этот параметр используется, он должен быть установлен на ненулевое значение (максимум 65535) для каждого узла данных в кластере, и это значение должно быть уникальным для каждого узла данных; это приводит к тому, что передача сигналов о работоспособности происходит от узла данных к узлу данных в порядке их значений HeartbeatOrder от наименьшего к наибольшему (а затем непосредственно от узла данных с наибольшим значением HeartbeatOrder к узлу данных с наименьшим значением, чтобы завершить круг). Значения не обязательно должны быть последовательными. Например, чтобы принудительно установить порядок передачи сигналов о работоспособности A->B->D->C->A в описанном ранее сценарии, можно установить значения HeartbeatOrder, как показано здесь:

    Таблица 25.10 Значения HeartbeatOrder для принудительного задания порядка перехода сигналов о работоспособности A->B->D->C->A.

    Таблица 25.10 Значения HeartbeatOrder для принудительного задания порядка перехода сигналов о работоспособности A->B->D->C->A.
    Узел HeartbeatOrder Значение
    A 10
    B 20
    C 30
    D 25

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

    • Полная остановка и перезапуск всего кластера.

    • Два поэтапных перезапуска кластера подряд. Все узлы должны быть перезапущены в том же порядке при обоих поэтапных перезапусках.

    Вы можете использовать DUMP 908 для наблюдения за влиянием этого параметра в журналах узлов данных.

  • ConnectCheckIntervalDelay

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Этот параметр позволяет проверять подключения между узлами данных после того, как один из них не прошёл проверку сигналов о работоспособности в течение 5 интервалов до HeartbeatIntervalDbDb миллисекунд.

    Такой узел данных, который далее не отвечает в течение интервала ConnectCheckIntervalDelay миллисекунд, считается подозрительным и считается мёртвым после двух таких интервалов. Это может быть полезно в конфигурациях с известными проблемами задержки.

    Значение по умолчанию для этого параметра — 0 (отключено).

  • TimeBetweenLocalCheckpoints

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы число 4-байтовых слов, как логарифм по основанию 2
    Значение по умолчанию 20
    Диапазон 0 - 31
    Тип перезапуска

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

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

    Размер всех операций записи, выполненных с момента начала предыдущих локальных контрольных точек, добавляется. Этот параметр также является исключительным, поскольку он указывается как логарифм по основанию 2 числа 4-байтовых слов, так что значение по умолчанию 20 означает 4 МБ (4 × 220) операций записи, 21 будет означать 8 МБ и так далее до максимального значения 31, что эквивалентно 8 ГБ операций записи.

    Все операции записи в кластере суммируются. Установка TimeBetweenLocalCheckpoints в значение 6 или меньше означает, что локальные контрольные точки выполняются непрерывно без паузы, независимо от рабочей нагрузки кластера.

  • TimeBetweenGlobalCheckpoints

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

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

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

    Также важно гарантировать, что даже в худшем случае — полном сбое кластера — все обрабатывается правильно. Чтобы гарантировать это, все транзакции, происходящие в течение заданного интервала, помещаются в глобальную контрольную точку, которую можно рассматривать как набор зафиксированных транзакций, который был сброшен на диск. Другими словами, как часть процесса фиксации, транзакция помещается в группу глобальных контрольных точек. Позже записи журнала этой группы сбрасываются на диск, а затем вся группа транзакций надежно фиксируется на диске на всех компьютерах в кластере.

    Мы рекомендуем, при использовании твердотельных дисков (особенно тех, которые используют NVMe) с таблицами Disk Data, уменьшить это значение. В таких случаях следует также убедиться, что MaxDiskDataLatency установлено на правильный уровень.

    Этот параметр определяет интервал между глобальными контрольными точками. Значение по умолчанию — 2000 миллисекунд.

  • TimeBetweenGlobalCheckpointsTimeout

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

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

    Этот параметр определяет минимальное время ожидания между глобальными контрольными точками. Значение по умолчанию — 120000 миллисекунд.

  • TimeBetweenEpochs

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

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

    Этот параметр определяет интервал между эпохами синхронизации для репликации NDB Cluster. Значение по умолчанию — 100 миллисекунд.

    TimeBetweenEpochs является частью реализации “микро-GCP”, которые могут быть использованы для повышения производительности репликации NDB Cluster.

  • TimeBetweenEpochsTimeout

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

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

    Этот параметр определяет время ожидания для эпох синхронизации для репликации NDB Cluster. Если узел не может участвовать в глобальной контрольной точке в течение времени, определяемого этим параметром, узел выключается. Значение по умолчанию равно 0; другими словами, время ожидания отключено.

    TimeBetweenEpochsTimeout является частью реализации “микро-GCP”, которые могут быть использованы для повышения производительности репликации NDB Cluster.

    Текущее значение этого параметра и предупреждение записываются в журнал кластера всякий раз, когда сохранение GCP занимает более 1 минуты или фиксация GCP занимает более 10 секунд.

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

  • MaxBufferedEpochs

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

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

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

    Значения по умолчанию 100 достаточно для большинства обычных операций. Если подписной узел действительно отстает настолько, что это вызывает отключения, это обычно связано с проблемами сети или планирования в отношении процессов или потоков. (В редких случаях проблема может быть вызвана ошибкой в клиенте NDB.) Может быть желательно установить значение ниже значения по умолчанию, когда эпохи длиннее.

    Отключение предотвращает влияние проблем клиента на обслуживание узла данных, исчерпание памяти для буферизации данных и, в конечном итоге, отключение. Вместо этого затрагивается только клиент в результате отключения (например, событиями gap в двоичном журнале), заставляя клиента переподключиться или перезапустить процесс.

  • MaxBufferedEpochBytes

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

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

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

  • TimeBetweenInactiveTransactionAbortCheck

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

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

    Обработка таймаута осуществляется путем проверки таймера каждой транзакции один раз для каждого интервала, указанного этим параметром. Таким образом, если этот параметр установлен в 1000 миллисекунд, каждая транзакция проверяется на таймаут один раз в секунду.

    Значение по умолчанию составляет 1000 миллисекунд (1 секунда).

  • TransactionInactiveTimeout

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

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

    Этот параметр указывает максимальное время, которое может пройти между операциями в одной транзакции, прежде чем транзакция будет прервана.

    Значение по умолчанию для этого параметра — 4G (также максимальное). Для базы данных реального времени, которой необходимо гарантировать, что ни одна транзакция не удерживает блокировки слишком долго, этот параметр следует установить в относительно небольшое значение. Установка его в 0 означает, что приложение никогда не истекает. Единица измерения — миллисекунды.

  • TransactionDeadlockDetectionTimeout

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

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

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

    Невозможность ответить может произойти по одной из следующих причин:

    • Узел “мертв”

    • Операция вошла в очередь блокировки

    • Узел, которому было предложено выполнить действие, может быть сильно перегружен.

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

    Значение таймаута по умолчанию составляет 1200 миллисекунд (1,2 секунды).

    Минимальное значение этого параметра составляет 50 миллисекунд.

  • DiskSyncSize

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

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

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

    Примечание

    Когда включен ODirect, нет необходимости устанавливать DiskSyncSize; фактически, в таких случаях его значение просто игнорируется.

    Значение по умолчанию — 4M (4 мегабайта).

  • MaxDiskWriteSpeed

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения числовое
    Значение по умолчанию 20M
    Диапазон 1M - 1024G
    Тип перезапуска

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

    Установите максимальную скорость записи на диск, в байтах в секунду, локальными контрольными точками и операциями резервного копирования, когда в этом кластере NDB не происходит перезапусков (этим узлом данных или любым другим узлом данных).

    Для установки максимальной скорости записи на диск, разрешенной во время перезапуска этого узла данных, используйте MaxDiskWriteSpeedOwnRestart. Для установки максимальной скорости записи на диск, разрешенной во время перезапуска других узлов данных, используйте MaxDiskWriteSpeedOtherNodeRestart. Минимальную скорость записи на диск всеми LCP и операциями резервного копирования можно настроить, установив MinDiskWriteSpeed.

  • MaxDiskWriteSpeedOtherNodeRestart

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения числовое
    Значение по умолчанию 50M
    Диапазон 1M - 1024G
    Тип перезапуска

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

    Установите максимальную скорость записи на диск, в байтах в секунду, локальными контрольными точками и операциями резервного копирования, когда один или несколько узлов данных в этом кластере NDB перезапускаются, кроме этого узла.

    Для установки максимальной скорости записи на диск, разрешенной во время перезапуска этого узла данных, используйте MaxDiskWriteSpeedOwnRestart. Для установки максимальной скорости записи на диск, разрешенной, когда ни один узел данных нигде в кластере не перезапускается, используйте MaxDiskWriteSpeed. Минимальную скорость записи на диск всеми LCP и операциями резервного копирования можно настроить, установив MinDiskWriteSpeed.

  • MaxDiskWriteSpeedOwnRestart

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения числовое
    Значение по умолчанию 200M
    Диапазон 1M - 1024G
    Тип перезапуска

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

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

    Для установки максимальной скорости записи на диск, разрешенной во время перезапуска других узлов данных, используйте MaxDiskWriteSpeedOtherNodeRestart. Для установки максимальной скорости записи на диск, разрешенной, когда ни один узел данных нигде в кластере не перезапускается, используйте MaxDiskWriteSpeed. Минимальную скорость записи на диск всеми LCP и операциями резервного копирования можно настроить, установив MinDiskWriteSpeed.

  • MinDiskWriteSpeed

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения числовое значение
    По умолчанию 10М
    Диапазон 1М - 1024Г
    Тип перезапуска

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

    Установите минимальную скорость записи на диск в байтах в секунду для локальных контрольных точек и операций резервного копирования.

    Максимальные скорости записи на диск для LCP и резервного копирования в различных условиях настраиваются с помощью параметров MaxDiskWriteSpeed, MaxDiskWriteSpeedOwnRestart и MaxDiskWriteSpeedOtherNodeRestart. Подробнее см. описания этих параметров.

  • ArbitrationTimeout

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

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

    Данный параметр определяет время ожидания узлами данных ответа от арбитра на сообщение об арбитраже. Если это время истечёт, считается, что сеть разорвана.

    Значение по умолчанию составляет 7500 миллисекунд (7,5 секунд).

  • Arbitration

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения перечисление
    По умолчанию Default
    Диапазон Default, Disabled, WaitExternal
    Тип перезапуска

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

    Параметр Arbitration позволяет выбрать схему арбитража, соответствующую одному из трёх возможных значений:

    • Default. Это позволяет арбитражу проходить в обычном режиме, как определено настройками ArbitrationRank для узлов управления и API. Это значение по умолчанию.

    • Disabled. Установка Arbitration = Disabled в разделе [ndbd default] файла config.ini выполняет ту же задачу, что и установка ArbitrationRank в 0 на всех узлах управления и API. Когда Arbitration установлено таким образом, все настройки ArbitrationRank игнорируются.

    • WaitExternal. Параметр Arbitration также позволяет настроить арбитраж таким образом, что кластер ожидает, пока не пройдёт время, заданное параметром ArbitrationTimeout, для того, чтобы внешнее приложение-менеджер кластера выполнило арбитраж вместо внутренней обработки. Это можно сделать, установив Arbitration = WaitExternal в разделе [ndbd default] файла config.ini. Для достижения наилучших результатов с настройкой WaitExternal рекомендуется, чтобы ArbitrationTimeout было в 2 раза больше интервала, требуемого внешним менеджером кластера для выполнения арбитража.

    Важно

    Этот параметр следует использовать только в разделе [ndbd default] файла конфигурации кластера. Поведение кластера не определено, когда Arbitration имеет разные значения для отдельных узлов данных.

Интервал сердцебиения между узлами управления и узлами данных всегда составляет 100 миллисекунд и не настраивается.

Буферизация и регистрация. Несколько параметров конфигурации [ndbd] предоставляют пользователю возможность более точно управлять ресурсами процессов узлов и настраивать различные размеры буферов по мере необходимости.

Эти буферы используются в качестве интерфейса к файловой системе при записи записей журнала на диск. Если узел работает в бескаркасном режиме, эти параметры можно установить в минимальные значения без потери производительности, поскольку запись на диск «имитируется» абстракцией файловой системы движка хранения NDB.

  • UndoIndexBuffer

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения беззнаковое
    По умолчанию 2М
    Диапазон 1М - 4294967039 (0xFFFFFEFF)
    Устарело Да (в NDB 8.0)
    Тип перезапуска

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

    Этот параметр ранее задавал размер буфера индекса отмены, но в текущих версиях NDB Cluster он не оказывает никакого влияния.

    Использование этого параметра в файле конфигурации кластера вызывает предупреждение об устаревании; ожидается, что он будет удален в будущей версии NDB Cluster.

  • UndoDataBuffer

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения беззнаковое
    По умолчанию 16М
    Диапазон 1М - 4294967039 (0xFFFFFEFF)
    Устарело Да (в NDB 8.0)
    Тип перезапуска

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

    Этот параметр ранее задавал размер буфера данных отмены, но в текущих версиях NDB Cluster он не оказывает никакого влияния.

    Использование этого параметра в файле конфигурации кластера вызывает предупреждение об устаревании; ожидается, что он будет удален в будущей версии NDB Cluster.

  • RedoBuffer

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения байты
    По умолчанию 32М
    Диапазон 1М - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

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

    Все операции обновления также должны быть записаны в журнал. Журнал REDO позволяет повторно применить эти обновления при каждом перезапуске системы. Алгоритм восстановления NDB использует «нечеткий» контрольный пункт данных вместе с журналом UNDO, а затем применяет журнал REDO, чтобы воспроизвести все изменения до точки восстановления.

    RedoBuffer задаёт размер буфера, в котором записывается журнал REDO. Значение по умолчанию составляет 32 МБ; минимальное значение — 1 МБ.

    Если этот буфер слишком мал, движок хранения NDB возвращает код ошибки 1221 (Буферы журнала REDO переполнены). По этой причине следует быть осторожным, если вы пытаетесь уменьшить значение RedoBuffer в ходе онлайн-изменения конфигурации кластера.

    ndbmtd выделяет отдельный буфер для каждого потока LDM (см. ThreadConfig). Например, при 4 потоках LDM узел данных ndbmtd фактически имеет 4 буфера и выделяет RedoBuffer байт для каждого, в общей сложности 4 * RedoBuffer байт.

  • EventLogBufferSize

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения байты
    По умолчанию 8192
    Диапазон 0 - 64К
    Тип перезапуска

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

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

Управление сообщениями журнала. При управлении кластером очень важно иметь возможность контролировать количество сообщений журнала, отправляемых для различных типов событий в stdout. Для каждой категории событий существует 16 возможных уровней событий (от 0 до 15). Установка отчётности о событиях для заданной категории событий на уровень 15 означает, что все отчёты об событиях в этой категории отправляются в stdout; установка на 0 означает, что отчёты об событиях в этой категории не генерируются.

По умолчанию, только сообщение о запуске отправляется в stdout, а остальные уровни отчётов о событиях установлены по умолчанию на 0. Причина в том, что эти сообщения также отправляются в журнал кластера сервера управления.

Аналогичный набор уровней может быть установлен для клиентского приложения управления, чтобы определить, какие уровни событий записывать в журнал кластера.

  • LogLevelStartup

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

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

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

    Уровень по умолчанию — 1.

  • LogLevelShutdown

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

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

    Уровень отчётности для событий, генерируемых в рамках корректного завершения работы узла.

    Уровень по умолчанию — 0.

  • LogLevelStatistic

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

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

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

    Уровень по умолчанию — 0.

  • LogLevelCheckpoint

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

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

    Уровень отчётности для событий, генерируемых локальными и глобальными контрольными точками.

    Уровень по умолчанию — 0.

  • LogLevelNodeRestart

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

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

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

    Уровень по умолчанию — 0.

  • LogLevelConnection

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

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

    Уровень отчётности для событий, генерируемых соединениями между узлами кластера.

    Уровень по умолчанию — 0.

  • LogLevelError

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

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

    Уровень отчётности для событий, генерируемых ошибками и предупреждениями кластером в целом. Эти ошибки не вызывают сбоя узла, но всё же считаются достойными отчётности.

    Уровень по умолчанию — 0.

  • LogLevelCongestion

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

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

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

    Уровень по умолчанию — 0.

  • LogLevelInfo

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

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

    Уровень отчётности для событий, генерируемых для информации об общем состоянии кластера.

    Уровень по умолчанию — 0.

  • MemReportFrequency

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

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

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

    Использование памяти данных и индексной памяти каждого узла данных регистрируется как в процентах, так и в количестве 32-килобайтных страниц DataMemory, как установлено в файле config.ini. Например, если DataMemory равно 100 МБ, а данный узел данных использует 50 МБ для хранения данных в памяти, соответствующая строка в журнале кластера может выглядеть следующим образом:

    2006-12-24 01:18:16 [MgmSrvr] INFO -- Node 2: Data usage is 50%(1280 32K pages of total 2560)
    

    MemReportFrequency не является обязательным параметром. При использовании его можно установить для всех узлов данных кластера в разделе [ndbd default] файла config.ini, а также установить или переопределить для отдельных узлов данных в соответствующих разделах [ndbd] файла конфигурации. Минимальное значение — которое также является значением по умолчанию — равно 0, в этом случае отчёты об использовании памяти регистрируются только тогда, когда использование памяти достигает определённых процентов (80%, 90% и 100%), как упоминалось в обсуждении статистических событий в разделе 25.6.3.2, «События журнала кластера NDB».

  • StartupStatusReportFrequency

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

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

    При запуске узла данных с помощью --initial, он инициализирует файл журнала redo во время Фазы запуска 4 (см. Раздел 25.6.4, «Обзор фаз запуска кластера NDB»). Когда для NoOfFragmentLogFiles, FragmentLogFileSize или обоих параметров заданы очень большие значения, эта инициализация может занять много времени. Вы можете принудительно регистрировать отчеты о ходе этого процесса периодически с помощью параметра конфигурации StartupStatusReportFrequency. В этом случае прогресс будет отображаться в журнале кластера, в том числе количество файлов и объем инициализированного пространства, как показано ниже:

    2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 1: Local redo log file initialization status:
    #Total files: 80, Completed: 60
    #Total MBytes: 20480, Completed: 15557
    2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 2: Local redo log file initialization status:
    #Total files: 80, Completed: 60
    #Total MBytes: 20480, Completed: 15570
    

    Эти отчеты записываются каждые StartupStatusReportFrequency секунд во время Фазы запуска 4. Если StartupStatusReportFrequency равен 0 (по умолчанию), тогда отчеты записываются в журнал кластера только в начале и в конце процесса инициализации файла журнала redo.

Параметры отладки узлов данных

Следующие параметры предназначены для использования во время тестирования или отладки узлов данных, а не для использования в рабочей среде.

  • DictTrace

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

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

    Возможно, для регистрации трассировок событий, генерируемых при создании и удалении таблиц, можно использовать DictTrace. Этот параметр полезен только для отладки кода ядра NDB. DictTrace принимает целое значение. Значение 0 по умолчанию, означает, что регистрация не выполняется; 1 включает трассировку, а 2 включает регистрация дополнительного DBDICT отладочного вывода.

  • WatchdogImmediateKill

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

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

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

Параметры резервного копирования. Параметры [ndbd], обсуждаемые в этом разделе, определяют буферы памяти, выделенные для выполнения онлайн-резервных копий.

  • BackupDataBufferSize

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения байты
    Значение по умолчанию 16M
    Диапазон 512K - 4294967039 (0xFFFFFEFF)
    Устарело Да (в NDB 7.6)
    Тип перезапуска

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

    При создании резервной копии используются два буфера для отправки данных на диск. Буфер данных резервной копии используется для заполнения данных, записанных путем сканирования таблиц узла. После того, как этот буфер будет заполнен до уровня, указанного как BackupWriteSize, страницы отправляются на диск. Во время очистки данных на диск процесс резервного копирования может продолжать заполнять этот буфер, пока не закончится место. Когда это произойдет, процесс резервного копирования приостанавливает сканирование и ожидает, пока не завершится запись некоторых данных на диск, освобождая память, чтобы можно было продолжить сканирование.

    Значение по умолчанию для этого параметра равно 16 МБ. Минимальное значение - 512 КБ.

  • BackupDiskWriteSpeedPct

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

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

    BackupDiskWriteSpeedPct применяется только когда резервное копирование однопоточное; поскольку NDB 9.2 поддерживает многопоточные резервные копии, обычно нет необходимости регулировать этот параметр, который не оказывает никакого влияния в многопоточном случае. Следующее обсуждение относится к однопоточным резервным копиям.

    В режиме нормальной работы узлы данных пытаются максимизировать скорость записи на диск, используемую для локальных контрольных точек и резервных копий, оставаясь в пределах, установленных параметрами MinDiskWriteSpeed и MaxDiskWriteSpeed. Регулирование скорости записи на диск обеспечивает каждому потоку LDM равную долю от общего бюджета. Это позволяет выполнять параллельные LCP без превышения бюджета операций ввода-вывода на диске. Поскольку резервное копирование выполняется только одним потоком LDM, это фактически приводило к сокращению бюджета, что приводило к увеличению времени завершения резервного копирования и — если скорость изменения достаточно высока — к невозможности завершить резервное копирование, когда скорость заполнения буфера журнала резервной копии выше, чем достижимая скорость записи.

    Эту проблему можно решить, используя параметр конфигурации BackupDiskWriteSpeedPct, который принимает значение в диапазоне от 0 до 90 (включительно), которое интерпретируется как процент от максимального бюджета скорости записи узла, который резервируется до распределения оставшейся части бюджета между потоками LDM для LCP. Поток LDM, выполняющий резервное копирование, получает весь бюджет скорости записи для резервного копирования, а также свою (уменьшенную) долю бюджета скорости записи для локальных контрольных точек.

    Значение по умолчанию для этого параметра равно 50 (интерпретируется как 50%).

  • BackupLogBufferSize

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

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

    Буфер журнала резервного копирования выполняет роль, аналогичную роли буфера данных резервного копирования, за исключением того, что он используется для создания журнала всех записей в таблице, сделанных во время выполнения резервного копирования. Те же принципы применяются для записи этих страниц, что и для буфера данных резервного копирования, за исключением того, что когда в буфере журнала резервного копирования больше нет места, резервное копирование завершается с ошибкой. По этой причине размер буфера журнала резервного копирования должен быть достаточно большим, чтобы справиться с нагрузкой, вызванной операциями записи, пока выполняется резервное копирование. См. Раздел 25.6.8.3, «Конфигурация резервных копий кластера NDB».

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

    Предпочтительнее настраивать узлы кластера таким образом, чтобы процессор стал узким местом, а не диски или сетевые соединения.

    Значение по умолчанию для этого параметра равно 16 МБ.

  • BackupMemory

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

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

    Этот параметр устарел и может быть удален в будущей версии NDB Cluster. Любая установка для него игнорируется.

  • BackupReportFrequency

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

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

    Этот параметр управляет тем, как часто публикуются отчеты о состоянии резервного копирования в клиенте управления во время резервного копирования, а также как часто такие отчеты записываются в журнал кластера (при условии, что ведение журнала событий кластера настроено для его разрешения — см. Ведение журнала и контрольные точки). BackupReportFrequency представляет время в секундах между отчетами о состоянии резервного копирования.

    Значение по умолчанию равно 0.

  • BackupWriteSize

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

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

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

    Значение по умолчанию для этого параметра равно 256 КБ.

  • BackupMaxWriteSize

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения байты
    Значение по умолчанию 1M
    Диапазон 256K - 4294967039 (0xFFFFFEFF)
    Устарело Да (в NDB 7.6)
    Тип перезапуска

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

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

    Значение по умолчанию для этого параметра равно 1 МБ.

  • CompressedBackup

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Включение этого параметра приводит к сжатию файлов резервных копий. Используемое сжатие эквивалентно gzip --fast и может сэкономить 50% или более места на узле данных для хранения нескомпрессированных резервных копий. Сжатые резервные копии можно включить для отдельных узлов данных или для всех узлов данных (установив этот параметр в разделе [ndbd default] файла config.ini).

    Важно

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

    Значение по умолчанию равно 0 (выключено).

  • RequireEncryptedBackup

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

    Если значение установлено в 1, резервные копии должны быть зашифрованы. Хотя можно установить этот параметр для каждого узла данных индивидуально, рекомендуется установить его в разделе [ndbd default] файла глобальной конфигурации config.ini. Дополнительную информацию о выполнении зашифрованных резервных копий см. в Разделе 25.6.8.2, «Использование клиента управления кластером NDB для создания резервной копии».

Примечание

Расположение файлов резервных копий определяется параметром конфигурации узла данных BackupDataDir.

Дополнительные требования. При указании этих параметров должны соблюдаться следующие соотношения. В противном случае узел данных не сможет запуститься.

  • BackupDataBufferSize >= BackupWriteSize + 188KB

  • BackupLogBufferSize >= BackupWriteSize + 16KB

  • BackupMaxWriteSize >= BackupWriteSize

Параметры производительности NDB Cluster в реальном времени

Параметры [ndbd], обсуждаемые в этом разделе, используются в планировании и блокировке потоков для определенных процессоров на узлах данных с многопроцессорными хостами.

Примечание

Для использования этих параметров процесс узла данных должен выполняться с правами суперпользователя.

  • BuildIndexThreads

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

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

    Этот параметр определяет количество потоков, создаваемых при перестроении упорядоченных индексов во время запуска системы или узла, а также при запуске ndb_restore --rebuild-indexes. Он поддерживается только тогда, когда для таблицы на каждом узле данных имеется более одного фрагмента (например, когда COMMENT="NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM_X_2" используется с CREATE TABLE).

    Установка этого параметра в 0 (значение по умолчанию) отключает многопоточное построение упорядоченных индексов.

    Этот параметр поддерживается при использовании ndbd или ndbmtd.

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

  • LockExecuteThreadToCPU

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы набор идентификаторов ЦП
    Значение по умолчанию 0
    Диапазон ...
    Тип перезапуска

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

    При использовании с ndbd, этот параметр (теперь строка) указывает ID ЦП, назначенного для обработки потока выполнения NDBCLUSTER. При использовании с ndbmtd, значение этого параметра представляет собой разделенный запятыми список идентификаторов ЦП, назначенных для обработки потоков выполнения. Каждый идентификатор ЦП в списке должен быть целым числом в диапазоне от 0 до 65535 (включительно).

    Количество указанных ID должно соответствовать количеству потоков выполнения, определяемых параметром MaxNoOfExecutionThreads. Однако нет гарантии, что потоки будут назначены ЦП в каком-либо определенном порядке при использовании этого параметра. Вы можете получить более тонкий контроль над этим типом, используя ThreadConfig.

    LockExecuteThreadToCPU не имеет значения по умолчанию.

  • LockMaintThreadsToCPU

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы ID ЦП
    Значение по умолчанию 0
    Диапазон 0 - 64K
    Тип перезапуска

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

    Этот параметр указывает ID ЦП, назначенного для обработки потоков обслуживания NDBCLUSTER.

    Значение этого параметра представляет собой целое число в диапазоне от 0 до 65535 (включительно). Значение по умолчанию отсутствует.

  • Numa

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

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

    Этот параметр определяет, управляется ли неравномерный доступ к памяти (NUMA) операционной системой или процессом узла данных, использует ли узел данных ndbd или ndbmtd. По умолчанию, NDB пытается использовать политику чередующегося распределения памяти NUMA на любом узле данных, где поддерживается NUMA операционной системой хоста.

    Установка Numa = 0 означает, что сам процесс узла данных не пытается установить политику распределения памяти и позволяет определить это поведение операционной системой, которая может быть дополнительно направлена отдельным инструментом numactl. То есть, Numa = 0 обеспечивает поведение по умолчанию системы, которое может быть настроено с помощью numactl. Для многих систем Linux поведение по умолчанию системы заключается в выделении локальной памяти сокета любому процессу во время выделения. Это может быть проблематично при использовании ndbmtd; это связано с тем, что nbdmtd выделяет всю память при запуске, что приводит к дисбалансу, обеспечивая различную скорость доступа для разных сокетов, особенно при блокировке страниц в основной памяти.

    Установка Numa = 1 означает, что процесс узла данных использует libnuma для запроса чередующегося распределения памяти. (Это также может быть сделано вручную, на уровне операционной системы, с помощью numactl.) Использование чередующегося распределения по существу говорит процессу узла данных игнорировать неравномерный доступ к памяти, но не пытается использовать преимущества быстрой локальной памяти; вместо этого процесс узла данных пытается избежать дисбаланса из-за медленной удаленной памяти. Если чередующееся распределение нежелательно, установите Numa в 0, чтобы желаемое поведение могло быть определено на уровне операционной системы.

    Параметр конфигурации Numa поддерживается только в системах Linux, где доступен libnuma.so.

  • RealtimeScheduler

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

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

    Установка этого параметра в 1 включает планирование в реальном времени потоков узла данных.

    Значение по умолчанию — 0 (планирование отключено).

  • SchedulerExecutionTimer

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

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

    Этот параметр указывает время в микросекундах для выполнения потоков в планировщике перед отправкой. Установка его в 0 минимизирует время отклика; для достижения большей производительности вы можете увеличить значение за счет увеличения времени отклика.

    Значение по умолчанию — 50 мкс, что, как показывают наши тесты, немного увеличивает производительность в условиях высокой нагрузки, не вызывая существенной задержки запросов.

  • SchedulerResponsiveness

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

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

    Установите баланс в планировщике между скоростью и пропускной способностью. Этот параметр принимает целое число в диапазоне от 0 до 10 включительно, по умолчанию 5. Более высокие значения обеспечивают лучшие времена отклика по отношению к пропускной способности. Более низкие значения обеспечивают увеличенную пропускную способность за счет более длительных времен отклика.

  • SchedulerSpinTimer

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

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

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

    Примечание

    Если SpinMethod установлен, любое значение этого параметра игнорируется.

  • SpinMethod

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения перечисление
    По умолчанию StaticSpinning
    Диапазон CostBasedSpinning, LatencyOptimisedSpinning, DatabaseMachineSpinning, StaticSpinning
    Тип перезапуска

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

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

    1. StaticSpinning (по умолчанию): Устанавливает EnableAdaptiveSpinning в false и SchedulerSpinTimer в 0. (SetAllowedSpinOverhead в этом случае не актуально.)

    2. CostBasedSpinning: Устанавливает EnableAdaptiveSpinning в true, SchedulerSpinTimer в 100 и SetAllowedSpinOverhead в 200.

    3. LatencyOptimisedSpinning: Устанавливает EnableAdaptiveSpinning в true, SchedulerSpinTimer в 200 и SetAllowedSpinOverhead в 1000.

    4. DatabaseMachineSpinning: Устанавливает EnableAdaptiveSpinning в true, SchedulerSpinTimer в 500 и SetAllowedSpinOverhead в 10000. Предназначено для использования в случаях, когда потоки владеют своими собственными процессорами.

    Параметры вращения, изменённые параметром SpinMethod, описаны в следующем списке:

    • SchedulerSpinTimer: Это тот же параметр конфигурации узла данных. Установка этого параметра параметром SpinMethod переписывает любое значение, установленное в файле config.ini.

    • EnableAdaptiveSpinning: Включает или выключает адаптивное вращение. Отключение приводит к выполнению вращения без проверки ресурсов ЦП. Этот параметр не может быть установлен напрямую в файле конфигурации кластера и в большинстве случаев не должен требоваться, но может быть включен напрямую с помощью DUMP 104004 1 или выключен с помощью DUMP 104004 0 в клиенте управления ndb_mgm.

    • SetAllowedSpinOverhead: Устанавливает количество времени процессора, разрешённого для достижения низкой задержки. Этот параметр не может быть установлен напрямую в файле config.ini. В большинстве случаев, установка, применённая параметром SpinMethod, должна быть удовлетворительной, но если необходимо изменить её напрямую, вы можете использовать DUMP 104002 overhead для этого, где overhead — это значение от 0 до 10000 включительно; см. описание команды DUMP для получения подробностей.

    На платформах, не имеющих полезных инструкций вращения, таких как PowerPC и некоторые платформы SPARC, время вращения устанавливается в 0 во всех ситуациях, а значения для SpinMethod, отличные от StaticSpinning, игнорируются.

  • TwoPassInitialNodeRestartCopy

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

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

    Многопоточное построение упорядоченных индексов можно включить для начальных перезапусков узлов данных, установив этот параметр конфигурации в true (значение по умолчанию), что включает двухэтапную копию данных во время начальных перезапусков узлов.

    Также необходимо установить BuildIndexThreads на ненулевое значение.

Параметры конфигурации многопоточности (ndbmtd). ndbmtd по умолчанию работает как однопоточный процесс и должен быть настроен на использование нескольких потоков, используя один из двух методов, оба из которых требуют установки параметров конфигурации в файле config.ini. Первый метод — просто установить подходящее значение для параметра конфигурации MaxNoOfExecutionThreads. Второй метод позволяет установить более сложные правила для многопоточности ndbmtd с помощью ThreadConfig. В следующих разделах приводится информация об этих параметрах и их использовании с многопоточными узлами данных.

Примечание

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

  • AutomaticThreadConfig

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

    Первоначальный перезапуск системы: Требует полного завершения работы кластера, удаления и восстановления файловой системы кластера из бэкапа, а затем перезапуска кластера. (NDB 9.2.0)

    При установке в 1, включает автоматическую настройку потоков, используя количество доступных процессоров для узла данных, учитывая любые ограничения, установленные taskset, numactl, виртуальными машинами, Docker и другими средствами управления доступными процессорами для данного приложения (в платформах Windows автоматическая настройка потоков использует все активные процессоры); в качестве альтернативы, вы можете установить NumCPUs до необходимого количества процессоров (до 1024, максимальное количество процессоров, которое может обрабатывать автоматическая настройка потоков). Любые настройки для ThreadConfig и MaxNoOfExecutionThreads будут игнорироваться. Кроме того, включение этого параметра автоматически отключает ClassicFragmentation.

  • ClassicFragmentation

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

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

    При включении (установке в true), NDB распределяет фрагменты среди LDMs таким образом, что количество партиций на узел по умолчанию равно минимальному количеству потоков локального менеджера данных (LDM) на узел данных.

    Для новых кластеров, установка ClassicFragmentation в false при первой настройке кластера предпочтительнее; это приводит к количеству партиций на узел, равному значению PartitionsPerNode, гарантируя равномерное распределение партиций между всеми LDM.

    Этот параметр и AutomaticThreadConfig являются взаимоисключающими; включение AutomaticThreadConfig автоматически отключает ClassicFragmentation.

  • EnableMultithreadedBackup

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

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

    Включает многопоточный бэкап. Если каждый узел данных имеет как минимум 2 LDM, все потоки LDM участвуют в бэкапе, который создаётся с использованием одной поддиректории на поток LDM, и каждая поддиректория содержит файлы бэкапа .ctl, .Data и .log.

    Этот параметр обычно включен (установлен в 1) для ndbmtd. Чтобы принудительно выполнить однопоточный бэкап, который можно легко восстановить с помощью более старых версий ndb_restore, отключите многопоточный бэкап, установив этот параметр в 0. Это необходимо сделать для каждого узла данных в кластере.

    См. Раздел 25.6.8.5, «Выполнение бэкапа NDB с параллельными узлами данных», для получения дополнительной информации.

  • MaxNoOfExecutionThreads

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

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

    Этот параметр напрямую управляет количеством потоков выполнения, используемых ndbmtd, максимум до 72. Хотя этот параметр задается в разделах [ndbd] или [ndbd default] файла config.ini, он предназначен исключительно для ndbmtd и не применяется к ndbd.

    Включение AutomaticThreadConfig приводит к игнорированию любых настроек для этого параметра.

    Установка MaxNoOfExecutionThreads устанавливает количество потоков для каждого типа, определяемое матрицей в файле storage/ndb/src/common/mt_thr_config.cpp. Эта таблица показывает количество потоков для возможных значений MaxNoOfExecutionThreads.

    Таблица 25.11 Значения MaxNoOfExecutionThreads и соответствующее количество потоков по типу потока (LQH, TC, Send, Receive).

    Table 25.11 MaxNoOfExecutionThreads values and the corresponding number of threads by thread type (LQH, TC, Send, Receive).
    MaxNoOfExecutionThreads Value LDM Threads TC Threads Send Threads Receive Threads
    0 .. 3 1 0 0 1
    4 .. 6 2 0 0 1
    7 .. 8 4 0 0 1
    9 4 2 0 1
    10 4 2 1 1
    11 4 3 1 1
    12 6 2 1 1
    13 6 3 1 1
    14 6 3 1 2
    15 6 3 2 2
    16 8 3 1 2
    17 8 4 1 2
    18 8 4 2 2
    19 8 5 2 2
    20 10 4 2 2
    21 10 5 2 2
    22 10 5 2 3
    23 10 6 2 3
    24 12 5 2 3
    25 12 6 2 3
    26 12 6 3 3
    27 12 7 3 3
    28 12 7 3 4
    29 12 8 3 4
    30 12 8 4 4
    31 12 9 4 4
    32 16 8 3 3
    33 16 8 3 4
    34 16 8 4 4
    35 16 9 4 4
    36 16 10 4 4
    37 16 10 4 5
    38 16 11 4 5
    39 16 11 5 5
    40 20 10 4 4
    41 20 10 4 5
    42 20 11 4 5
    43 20 11 5 5
    44 20 12 5 5
    45 20 12 5 6
    46 20 13 5 6
    47 20 13 6 6
    48 24 12 5 5
    49 24 12 5 6
    50 24 13 5 6
    51 24 13 6 6
    52 24 14 6 6
    53 24 14 6 7
    54 24 15 6 7
    55 24 15 7 7
    56 24 16 7 7
    57 24 16 7 8
    58 24 17 7 8
    59 24 17 8 8
    60 24 18 8 8
    61 24 18 8 9
    62 24 19 8 9
    63 24 19 9 9
    64 32 16 7 7
    65 32 16 7 8
    66 32 17 7 8
    67 32 17 8 8
    68 32 18 8 8
    69 32 18 8 9
    70 32 19 8 9
    71 32 20 8 9
    72 32 20 8 10

    Всегда есть один поток SUMA (репликация).

    NoOfFragmentLogParts должен быть установлен равным количеству потоков LDM, используемых ndbmtd, как определено настройкой для этого параметра. Это соотношение не должно быть больше, чем 4:1; конфигурация, в которой это имеет место, специально запрещена.

    Количество потоков LDM также определяет количество разделов, используемых таблицей NDB, которая не явно разделена; это количество потоков LDM, умноженное на количество узлов данных в кластере. (Если ndbd используется на узлах данных вместо ndbmtd, то всегда есть один поток LDM; в этом случае количество автоматически создаваемых разделов просто равно количеству узлов данных. См. Раздел 25.2.2, «Узлы кластера NDB, группы узлов, реплики фрагментов и разделы» для получения дополнительной информации.

    Добавление больших табличных пространств для таблиц данных на диске при использовании большего, чем по умолчанию, количества потоков LDM может вызвать проблемы с использованием ресурсов и процессора, если буфер страниц диска недостаточно велик; см. описание параметра конфигурации DiskPageBufferMemory для получения дополнительной информации.

    Типы потоков описаны далее в этом разделе (см. ThreadConfig).

    Установка этого параметра за пределами допустимого диапазона значений приводит к аварийному завершению работы сервера управления при запуске с ошибкой Строка ошибки number: Недопустимое значение value для параметра MaxNoOfExecutionThreads.

    Для MaxNoOfExecutionThreads значение 0 или 1 округляется внутренне NDB до 2, поэтому 2 считается значением по умолчанию и минимальным значением этого параметра.

    MaxNoOfExecutionThreads обычно предназначен для установки равным количеству доступных потоков ЦП и для выделения количества потоков каждого типа, подходящего для типичных рабочих нагрузок. Он не назначает конкретные потоки определенным ЦП. В случаях, когда желательно отклониться от предоставленных настроек или привязать потоки к ЦП, следует использовать ThreadConfig вместо этого, что позволяет напрямую назначать каждый поток желаемому типу, ЦП или обоим.

    Многопоточный процесс узла данных всегда порождает, как минимум, перечисленные здесь потоки:

    • 1 поток обработчика локальных запросов (LDM)

    • 1 поток приема

    • 1 поток менеджера подписок (SUMA или репликации)

    Для значения MaxNoOfExecutionThreads 8 или меньше потоки TC не создаются, а обработка TC выполняется главным потоком.

    Изменение количества потоков LDM обычно требует перезапуска системы, независимо от того, изменяется ли оно с помощью этого параметра или ThreadConfig, но изменение возможно с помощью начального перезапуска узла (NI), при условии выполнения следующих двух условий:

    • Каждый поток LDM обрабатывает максимум 8 фрагментов, и

    • Общее количество фрагментов таблицы является целым кратным количеству потоков LDM.

  • MaxSendDelay

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

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

    Этот параметр можно использовать для временной задержки узлов данных перед отправкой данных узлам API; в некоторых случаях, описанных в следующих абзацах, это может привести к более эффективной отправке больших объемов данных и более высокой общей пропускной способности.

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

    Для обработки такого сценария можно установить MaxSendDelay на ненулевое значение, что помогает гарантировать, что ответы не отправляются обратно узлам API так быстро. При этом ответы отправляются немедленно, когда нет другой конкурирующей активности, но когда она есть, установка MaxSendDelay заставляет узлы данных ждать достаточно долго, чтобы гарантировать отправку более крупных пакетов. По сути, это вводит искусственную задержку в процесс отправки, что может значительно улучшить пропускную способность.

  • NoOfFragmentLogParts

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы измерения числовое
    Значение по умолчанию 4
    Диапазон 4, 6, 8, 10, 12, 16, 20, 24, 32
    Тип перезапуска

    Начальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с --initial. (NDB 9.2.0)

    Установите количество групп файлов журнала для журналов отката, относящихся к этому ndbmtd. Значение этого параметра должно быть равно количеству потоков LDM, используемых ndbmtd, как определено значением MaxNoOfExecutionThreads. Конфигурация с более чем 4 группами журналов отката на поток LDM запрещена.

    См. описание MaxNoOfExecutionThreads для получения дополнительной информации.

  • NumCPUs

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

    Полный перезапуск системы: Требует полного отключения кластера, удаления и восстановления файловой системы кластера из резервной копии, а затем перезапуска кластера. (NDB 9.2.0)

    Принудительно использовать только указанное количество ЦП для автоматической настройки потоков. Не имеет эффекта, если AutomaticThreadConfig не включен.

  • PartitionsPerNode

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

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

    Устанавливает количество партиций, используемых на каждом узле при создании новой таблицы NDB. Это позволяет избежать излишнего разделения таблиц на части, когда количество локальных менеджеров данных (LDM) становится высоким.

    Хотя можно устанавливать этот параметр с разными значениями на разных узлах данных, и никаких известных проблем с этим нет, это также маловероятно, что это даст какие-либо преимущества; по этой причине рекомендуется просто установить его один раз для всех узлов данных в разделе [ndbd default] глобального файла config.ini.

    Если ClassicFragmentation включен, любое значение для этого параметра игнорируется. (Помните, что включение AutomaticThreadConfig отключает ClassicFragmentation.)

  • ThreadConfig

    Версия (или более поздняя) NDB 9.2.0
    Тип или единицы строка
    Значение по умолчанию ''
    Диапазон ...
    Тип перезапуска

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

    Этот параметр используется с ndbmtd для назначения потоков различных типов на различные ЦП. Его значение — это строка, формат которой имеет следующий синтаксис:

    ThreadConfig := entry[,entry[,...]]
    
    entry := type={param[,param[,...]]}
    
    type := ldm | query | recover | main | recv | send | rep | io | tc | watchdog | idxbld
    
    param := count=number
      | cpubind=cpu_list
      | cpuset=cpu_list
      | spintime=number
      | realtime={0|1}
      | nosend={0|1}
      | thread_prio={0..10}
      | cpubind_exclusive=cpu_list
      | cpuset_exclusive=cpu_list
    

    Фигурные скобки ({...}), окружающие список параметров, обязательны, даже если в списке только один параметр.

    param (параметр) указывает любую или все из следующих сведений:

    • Количество потоков данного типа (count).

    • Набор ЦП, к которым потоки данного типа должны быть привязаны неисключительно. Это определяется одним из cpubind или cpuset). cpubind приводит к тому, что каждый поток привязывается (неисключительно) к ЦП в наборе; cpuset означает, что каждый поток привязывается (неисключительно) к набору указанных ЦП.

      В Solaris можно вместо этого указать набор ЦП, к которым потоки данного типа должны быть привязаны исключительно. cpubind_exclusive приводит к тому, что каждый поток привязывается исключительно к ЦП в наборе; cpuset_exclsuive означает, что каждый поток привязывается исключительно к набору указанных ЦП.

      В одном конфигурационном файле может быть указан только один из cpubind, cpuset, cpubind_exclusive или cpuset_exclusive.

    • spintime определяет время ожидания в микросекундах, которое поток тратит на вращение, прежде чем перейти в режим ожидания.

      Значение по умолчанию для spintime — это значение параметра конфигурации узла данных SchedulerSpinTimer.

      spintime не применяется к потокам Ввода/Вывода, потокам-сторожам или потокам построения автономных индексов, поэтому его нельзя установить для этих типов потоков.

    • realtime можно установить в 0 или 1. Если оно установлено в 1, потоки работают с приоритетом реального времени. Это также означает, что thread_prio нельзя установить.

      Параметр realtime по умолчанию установлен на значение параметра конфигурации узла данных RealtimeScheduler.

      realtime нельзя установить для потоков построения автономных индексов.

    • Установив nosend в 1, можно предотвратить помощь потока main, ldm, rep или tc потокам отправки. По умолчанию этот параметр равен 0, и его нельзя использовать с другими типами потоков.

    • thread_prio — это уровень приоритета потока, который можно установить от 0 до 10, где 10 соответствует наивысшему приоритету. Значение по умолчанию — 5. Точное влияние этого параметра зависит от платформы и описано позднее в этом разделе.

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

    Параметры thread_prio и их влияние на платформы. Реализация thread_prio отличается в Linux/FreeBSD, Solaris и Windows. В следующем списке мы обсудим их влияние на каждую из этих платформ:

    • Linux и FreeBSD: Мы сопоставляем thread_prio со значением, которое необходимо передать системному вызову nice. Поскольку меньшее значение niceness для процесса означает более высокий приоритет процесса, увеличение thread_prio приводит к снижению значения nice.

      Таблица 25.12 Сопоставление thread_prio со значениями nice в Linux и FreeBSD

      Таблица 25.12 Сопоставление thread_prio со значениями nice в Linux и FreeBSD
      Значение thread_prio Значение nice
      0 19
      1 16
      2 12
      3 8
      4 4
      5 0
      6 -4
      7 -8
      8 -12
      9 -16
      10 -20

      Некоторые операционные системы могут предоставлять максимальный уровень niceness процесса 20, но это не поддерживается всеми целевыми версиями; по этой причине мы выбираем 19 в качестве максимального значения nice, которое можно установить.

    • Solaris: Установка thread_prio в Solaris устанавливает приоритет Solaris FX, сопоставления приведены в следующей таблице:

      Таблица 25.13 Сопоставление thread_prio с приоритетом FX в Solaris

      Таблица 25.13 Сопоставление thread_prio с приоритетом FX в Solaris
      Значение thread_prio Приоритет Solaris FX
      0 15
      1 20
      2 25
      3 30
      4 35
      5 40
      6 45
      7 50
      8 55
      9 59
      10 60

      Настройка thread_prio равной 9 в Solaris сопоставляется со специальным значением приоритета FX 59, что означает, что операционная система также пытается заставить поток работать только на своем собственном ядре процессора.

    • Windows: Мы сопоставляем thread_prio со значением приоритета потока Windows, передаваемым функции Windows API SetThreadPriority(). Это сопоставление показано в следующей таблице:

      Таблица 25.14 Сопоставление thread_prio с приоритетом потока Windows

      Таблица 25.14 Сопоставление thread_prio с приоритетом потока Windows
      Значение thread_prio Приоритет потока Windows
      0 - 1 THREAD_PRIORITY_LOWEST
      2 - 3 THREAD_PRIORITY_BELOW_NORMAL
      4 - 5 THREAD_PRIORITY_NORMAL
      6 - 7 THREAD_PRIORITY_ABOVE_NORMAL
      8 - 10 THREAD_PRIORITY_HIGHEST

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

    • ldm: Локальный обработчик запросов (DBLQH блок ядра), обрабатывающий данные. Чем больше потоков LDM используется, тем более раздробленными становятся данные.

      Когда ClassicFragmentation установлено в 0, количество разделов не зависит от количества потоков LDM и зависит от значения PartitionsPerNode. Каждый поток LDM поддерживает свои наборы разделов данных и индексов, а также свой собственный журнал повторного применения. ldm можно установить в любое значение в диапазоне от 0 до 332 включительно. При установке в 0, main, rep и tc также должны быть 0, а recv также должно быть установлено в 1; это заставляет ndbmtd эмулировать ndbd.

      Каждый поток LDM обычно объединяется с 1 потоком запросов для формирования группы LDM. Набор из 4 до 8 групп LDM объединяется в группы по принципу круговой очереди. Каждый поток LDM может быть поддержан в выполнении любым потоком запросов или потоками в той же группе круговой очереди. NDB пытается сформировать группы круговой очереди таким образом, чтобы все потоки в каждой группе круговой очереди были заблокированы на процессорах, подключенных к одному кэшу L3, в пределах диапазона, указанного для размера группы круговой очереди.

      Изменение количества потоков LDM обычно требует перезагрузки системы для обеспечения работоспособности и безопасности операций кластера; это требование смягчается в определенных случаях, как объяснено позже в этом разделе. Это также верно, когда это делается с помощью MaxNoOfExecutionThreads.

      Добавление больших табличных пространств (сотни гигабайт или более) для таблиц данных на диске при использовании большего числа потоков LDM, чем по умолчанию, может вызвать проблемы с использованием ресурсов и процессора, если DiskPageBufferMemory не достаточно велик.

      Если ldm не включен в строку значения ThreadConfig, создается один поток ldm.

    • query: Поток запросов привязан к LDM и вместе с ним образует группу LDM; действует только на запросы READ COMMITTED. Количество потоков запросов должно быть установлено в 0, 1, 2 или в 3 раза больше, чем количество потоков LDM. Потоки запросов не используются, если это не переопределено путем установки query на ненулевое значение или включением параметра AutomaticThreadConfig.

      Поток запросов также действует как поток восстановления (см. следующий пункт), но обратное неверно.

      Изменение количества потоков запросов требует перезагрузки узла.

    • recover: Поток восстановления восстанавливает данные из фрагмента в рамках LCP.

      Изменение количества потоков восстановления требует перезагрузки узла.

    • tc: Поток координатора транзакций (DBTC блок ядра), содержащий состояние текущей транзакции. Максимальное количество потоков TC составляет 128.

      В идеале, каждой новой транзакции может быть назначен новый поток TC. В большинстве случаев 1 поток TC на 2 потока LDM достаточно для обеспечения возможности этого. В случаях, когда количество записей относительно невелико по сравнению с количеством чтений, возможно, потребуется только 1 поток TC на 4 потока LQH для поддержания состояния транзакций. Напротив, в приложениях, выполняющих большое количество обновлений, может потребоваться, чтобы соотношение потоков TC к потокам LDM приближалось к 1 (например, 3 потока TC на 4 потока LDM).

      Установка tc в 0 приводит к тому, что обработка TC выполняется основным потоком. В большинстве случаев это фактически эквивалентно установке его в 1.

      Диапазон: 0-64

    • main: Словарь данных и координатор транзакций (DBDIH и DBTC блоки ядра), обеспечивающие управление схемой. Также можно указать ноль или два основных потока.

      Диапазон: 0-2.

      Установка main в 0 и rep в 1 помещает блоки main в поток rep; объединённый поток отображается в таблице ndbinfo.threads как main_rep. Это фактически эквивалентно установке rep в 1 и main в 0.

      Также можно установить и main, и rep в 0, в этом случае оба потока помещаются в первый поток recv; получившийся объединённый поток называется main_rep_recv в таблице threads.

      Если main опущено из строки значения ThreadConfig, создаётся один поток main.

    • recv: Поток приёма (CMVMI блок ядра). Каждый поток приёма обрабатывает один или несколько сокетов для связи с другими узлами в NDB-кластере, по одному сокету на узел. NDB Cluster поддерживает несколько потоков приёма; максимальное количество таких потоков составляет 16.

      Диапазон: 1 - 64.

      Если recv опущено из строки значения ThreadConfig, создаётся один поток recv.

    • send: Поток отправки (CMVMI блок ядра). Для повышения пропускной способности можно выполнять отправку из одного или нескольких отдельных, выделенных потоков (максимум 8).

      Использование чрезмерного количества потоков отправки может негативно сказаться на масштабируемости.

      Ранее все потоки обрабатывали свою отправку напрямую; это всё ещё можно сделать, установив количество потоков отправки в 0 (это также происходит, когда MaxNoOfExecutionThreads установлено меньше 10). Хотя это может негативно повлиять на пропускную способность, в некоторых случаях это может снизить задержку.

      Диапазон:

      • 0 - 64

    • rep: Поток репликации (SUMA блок ядра). Этот поток также может быть объединён с основным потоком (см. информацию о диапазоне).

      Диапазон: 0-1.

      Установка rep в 0 и main в 1 помещает блоки rep в поток main; объединённый поток отображается в таблице ndbinfo.threads как main_rep. Это фактически эквивалентно установке main в 1 и rep в 0.

      Также можно установить и main, и rep в 0, в этом случае оба потока помещаются в первый поток recv; получившийся объединённый поток называется main_rep_recv в таблице threads.

      Если rep опущено из строки значения ThreadConfig, создаётся один поток rep.

    • io: Поток файловой системы и других операций общего назначения. Эти задачи нетребовательные и всегда обрабатываются как группа единственным выделенным потоком ввода-вывода.

      Диапазон: только 1.

    • watchdog: Параметры, связанные с этим типом, фактически применяются к нескольким потокам, каждый из которых имеет определённое назначение. Эти потоки включают поток SocketServer, который получает настройки соединений от других узлов; поток SocketClient, который пытается установить соединения с другими узлами; и поток-сторож, который проверяет, что потоки прогрессируют.

      Диапазон: только 1.

    • idxbld: Потоки построения автономного индекса. В отличие от других типов потоков, перечисленных ранее, которые являются постоянными, эти потоки временные, создаются и используются только во время перезагрузки узла или системы, или при выполнении ndb_restore --rebuild-indexes. Они могут быть привязаны к наборам ЦП, которые перекрываются с наборами ЦП, привязанными к постоянным типам потоков.

      Значения thread_prio, realtime и spintime не могут быть заданы для потоков построения автономного индекса. Кроме того, значение count игнорируется для этого типа потоков.

      Если idxbld не указано, поведение по умолчанию следующее:

      • Потоки построения автономного индекса не привязаны, если поток ввода-вывода также не привязан, и эти потоки используют любые доступные ядра.

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

      Диапазон: 0 - 1.

    Изменение ThreadCOnfig обычно требует перезагрузки системы, но это требование может быть ослаблено в определенных обстоятельствах:

    • Если после изменения количество потоков LDM остается таким же, как и раньше, для реализации изменения достаточно простой перезагрузки узла (поэтапная перезагрузка или N).

    • В противном случае (то есть если количество потоков LDM изменяется), изменение все еще возможно с помощью начальной перезагрузки узла (NI), при условии выполнения двух следующих условий:

      1. Каждый поток LDM обрабатывает не более 8 фрагментов, и

      2. Общее количество фрагментов таблицы является целым кратным числу потоков LDM.

    В любом другом случае требуется начальная перезагрузка системы для изменения этого параметра.

    NDB может различать типы потоков по следующим критериям:

    • Является ли поток исполнительным потоком. Потоки типа main, ldm, query, recv, rep, tc и send являются исполнительными потоками; потоки io, recover, watchdog и idxbld не считаются исполнительными потоками.

    • Является ли распределение потоков для данной задачи постоянным или временным. В настоящее время все типы потоков, кроме idxbld, считаются постоянными; потоки idxbld рассматриваются как временные потоки.

    Простые примеры:

    # Example 1.
    
    ThreadConfig=ldm={count=2,cpubind=1,2},main={cpubind=12},rep={cpubind=11}
    
    # Example 2.
    
    Threadconfig=main={cpubind=0},ldm={count=4,cpubind=1,2,5,6},io={cpubind=3}
    

    Обычно при конфигурировании использования потоков для узла данных желательно зарезервировать одно или несколько ядер ЦП для операционной системы и других задач. Таким образом, для машины-хоста с 24 ядрами ЦП вы можете использовать 20 потоков ЦП (оставив 4 для других целей), с 8 потоками LDM, 4 потоками TC (половина количества потоков LDM), 3 потоками отправки, 3 потоками приема и по 1 потоку для управления схемой, асинхронной репликации и операций ввода-вывода. (Это почти такое же распределение потоков, которое используется, когда MaxNoOfExecutionThreads устанавливается равным 20.) Следующее ThreadConfig задание выполняет эти назначения, дополнительно привязывая все эти потоки к конкретным ядрам ЦП:

    ThreadConfig=ldm{count=8,cpubind=1,2,3,4,5,6,7,8},main={cpubind=9},io={cpubind=9}, \
    rep={cpubind=10},tc{count=4,cpubind=11,12,13,14},recv={count=3,cpubind=15,16,17}, \
    send{count=3,cpubind=18,19,20}
    

    В большинстве случаев можно привязать основной (управление схемой) поток и поток ввода-вывода к одному и тому же ядру ЦП, как мы сделали в только что показанном примере.

    Следующий пример включает группы ядер ЦП, определенные с помощью cpuset и cpubind, а также использование приоритетов потоков.

    ThreadConfig=ldm={count=4,cpuset=0-3,thread_prio=8,spintime=200}, \
    ldm={count=4,cpubind=4-7,thread_prio=8,spintime=200}, \
    tc={count=4,cpuset=8-9,thread_prio=6},send={count=2,thread_prio=10,cpubind=10-11}, \
    main={count=1,cpubind=10},rep={count=1,cpubind=11}
    

    В этом случае мы создаем две группы LDM; первая использует cpubind, а вторая — cpuset. thread_prio и spintime устанавливаются в одинаковые значения для каждой группы. Это означает, что всего будет восемь потоков LDM. (Вы должны убедиться, что NoOfFragmentLogParts также установлено в 8.) Четыре потока TC используют только два ядра ЦП; при использовании cpuset можно указать меньшее количество ядер ЦП, чем потоков в группе. (Это неверно для cpubind.) Потоки отправки используют два потока, используя cpubind, чтобы привязать эти потоки к ядрам ЦП 10 и 11. Основной и репликационный потоки могут повторно использовать эти ядра ЦП.

    Этот пример показывает, как ThreadConfig и NoOfFragmentLogParts могут быть настроены для хоста с 24 ядрами ЦП с гиперпоточностью, оставляя ядра ЦП 10, 11, 22 и 23 доступными для функций и прерываний операционной системы:

    NoOfFragmentLogParts=10
    ThreadConfig=ldm={count=10,cpubind=0-4,12-16,thread_prio=9,spintime=200}, \
    tc={count=4,cpuset=6-7,18-19,thread_prio=8},send={count=1,cpuset=8}, \
    recv={count=1,cpuset=20},main={count=1,cpuset=9,21},rep={count=1,cpuset=9,21}, \
    io={count=1,cpuset=9,21,thread_prio=8},watchdog={count=1,cpuset=9,21,thread_prio=9}
    

    В следующих нескольких примерах содержатся настройки для idxbld. Два первых из них демонстрируют, как набор ядер ЦП, определенный для idxbld, может перекрываться наборами, указанными для других (постоянных) типов потоков, первый использует cpuset, а второй — cpubind:

    ThreadConfig=main,ldm={count=4,cpuset=1-4},tc={count=4,cpuset=5,6,7}, \
    io={cpubind=8},idxbld={cpuset=1-8}
    
    ThreadConfig=main,ldm={count=1,cpubind=1},idxbld={count=1,cpubind=1}
    

    Следующий пример указывает ядро ЦП для потока ввода-вывода, но не для потоков построения индекса:

    ThreadConfig=main,ldm={count=4,cpuset=1-4},tc={count=4,cpuset=5,6,7}, \
    io={cpubind=8}
    

    Поскольку параметр ThreadConfig, который только что был показан, блокирует потоки на восьми ядрах с номерами от 1 до 8, он эквивалентен параметру, показанному здесь:

    ThreadConfig=main,ldm={count=4,cpuset=1-4},tc={count=4,cpuset=5,6,7}, \
    io={cpubind=8},idxbld={cpuset=1,2,3,4,5,6,7,8}
    

    Для того, чтобы воспользоваться преимуществами повышенной стабильности, которые обеспечивает использование ThreadConfig, необходимо убедиться, что ядра ЦП изолированы и не подвержены прерываниям или планированию другими задачами операционной системой. На многих системах Linux это можно сделать, установив IRQBALANCE_BANNED_CPUS в /etc/sysconfig/irqbalance на значение 0xFFFFF0 и используя параметр загрузки isolcpus в grub.conf. Более подробную информацию см. в документации по вашей операционной системе или платформе.

Параметры конфигурации данных диска. Параметры конфигурации, влияющие на поведение Disk Data, включают следующие:

  • DiskPageBufferEntries

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

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

    Это количество записей страниц (ссылок на страницы) для выделения. Оно указывается как число страниц по 32 КБ в DiskPageBufferMemory. Значение по умолчанию достаточно для большинства случаев, но может потребоваться увеличить это значение, если возникают проблемы с очень большими транзакциями в таблицах на диске. Каждая запись страницы требует примерно 100 байтов.

  • DiskPageBufferMemory

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

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

    Это определяет объем памяти в байтах, используемый для кэширования страниц на диске, и настраивается в разделе [ndbd] или [ndbd default] файла config.ini.

    Если значение для DiskPageBufferMemory установлено слишком низким в сочетании с использованием большего, чем по умолчанию, количества потоков LDM в ThreadConfig (например, {ldm=6...}), могут возникнуть проблемы при попытке добавления большого (например, 500 ГБ) файла данных в таблицу на диске NDB, где процесс будет занимать неопределенно долгое время, используя один из ядер процессора.

    Это происходит потому, что при добавлении файла данных в табличное пространство страницы области выделения блокируются в памяти в дополнительном потоке PGMAN, для быстрого доступа к метаданным. При добавлении большого файла у этого потока недостаточно памяти для всех метаданных файла данных. В таких случаях необходимо либо увеличить DiskPageBufferMemory, либо добавить файлы табличного пространства меньшего размера. Возможно, также потребуется настроить DiskPageBufferEntries.

    Вы можете запросить таблицу ndbinfo.diskpagebuffer, чтобы определить, следует ли увеличить значение этого параметра для минимизации ненужных обращений к диску. Дополнительную информацию см. в разделе 25.6.17.31, «Таблица ndbinfo diskpagebuffer».

  • SharedGlobalMemory

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

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

    Этот параметр определяет объем памяти, используемой для буферов журнала, операций с диском (таких как запросы страниц и очереди ожидания), и метаданных для табличных пространств, групп файлов журнала, UNDO файлов и файлов данных. Общий пул общей памяти также предоставляет память, необходимую для удовлетворения требований к памяти параметра UNDO_BUFFER_SIZE, используемого с CREATE LOGFILE GROUP и ALTER LOGFILE GROUP, включая любое значение по умолчанию, подразумеваемое для этого параметра настройкой параметра конфигурации узла данных InitialLogFileGroup. SharedGlobalMemory можно установить в разделе [ndbd] или [ndbd default] файла конфигурации config.ini, и измеряется в байтах.

    Значение по умолчанию — 128M.

  • DiskIOThreadPool

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

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

    Этот параметр определяет количество несвязанных потоков, используемых для доступа к файлам данных на диске. До введения DiskIOThreadPool, для каждого файла данных на диске создавался ровно один поток, что могло привести к проблемам с производительностью, особенно при использовании очень больших файлов данных. С DiskIOThreadPool вы можете, например, получить доступ к одному большому файлу данных, используя несколько потоков, работающих параллельно.

    Этот параметр относится только к потокам ввода-вывода данных на диске.

    Оптимальное значение этого параметра зависит от вашего оборудования и конфигурации, и включает следующие факторы:

    • Физическое расположение файлов данных на диске. Вы можете получить лучшую производительность, разместив файлы данных, файлы журнала отката и файловую систему узла данных на отдельных физических дисках. Если вы сделаете это для некоторых или всех этих наборов файлов, то вы можете (и должны) установить DiskIOThreadPool выше, чтобы разрешить работу отдельных потоков с файлами на каждом диске.

      Вы также должны отключить DiskDataUsingSameDisk при использовании отдельного диска или дисков для файлов данных на диске; это увеличивает скорость выполнения контрольных точек табличных пространств данных на диске.

    • Производительность и типы дисков. Количество потоков, которые могут быть использованы для обработки файлов данных на диске, также зависит от скорости и пропускной способности дисков. Более быстрые диски и большая пропускная способность позволяют использовать больше потоков ввода-вывода с диска. Результаты наших тестов показывают, что твердотельные накопители могут обрабатывать намного больше потоков ввода-вывода с диска, чем обычные диски, поэтому можно установить более высокие значения для DiskIOThreadPool.

      Также рекомендуется уменьшить TimeBetweenGlobalCheckpoints при использовании твердотельных накопителей, особенно тех, которые используют NVMe. См. также параметры задержки данных на диске.

    Значение по умолчанию для этого параметра равно 2.

END_OF_DOCUMENT_MARKER
  • Параметры файловой системы Дисковых данных. Параметры в следующем списке позволяют размещать файлы NDB Cluster Дисковых данных в определенных каталогах без необходимости использования символических ссылок.

    • FileSystemPathDD

      Версия (или более поздняя) NDB 9.2.0
      Тип или единицы имя файла
      Значение по умолчанию FileSystemPath
      Диапазон ...
      Тип перезапуска

      Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с использованием --initial. (NDB 9.2.0)

      Если этот параметр указан, файлы данных и файлы журнала отката Дисковых данных кластера NDB размещаются в указанном каталоге. Это можно переопределить для файлов данных, файлов журнала отката или обоих, указав значения для FileSystemPathDataFiles, FileSystemPathUndoFiles или обоих, как объяснено для этих параметров. Его также можно переопределить для файлов данных, указав путь в части ADD DATAFILE оператора CREATE TABLESPACE или ALTER TABLESPACE, и для файлов журнала отката — указав путь в части ADD UNDOFILE оператора CREATE LOGFILE GROUP или ALTER LOGFILE GROUP. Если FileSystemPathDD не указан, используется FileSystemPath.

      Если для данного узла данных указан каталог FileSystemPathDD (в том числе в случае, когда параметр указан в разделе [ndbd default] файла config.ini), то при запуске этого узла данных с помощью --initial все файлы в каталоге будут удалены.

    • FileSystemPathDataFiles

      Версия (или более поздняя) NDB 9.2.0
      Тип или единицы имя файла
      Значение по умолчанию FileSystemPathDD
      Диапазон ...
      Тип перезапуска

      Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с использованием --initial. (NDB 9.2.0)

      Если этот параметр указан, файлы данных кластера NDB Дисковых данных размещаются в указанном каталоге. Это переопределяет любое значение, заданное для FileSystemPathDD. Этот параметр может быть переопределён для данного файла данных, указав путь в части ADD DATAFILE оператора CREATE TABLESPACE или ALTER TABLESPACE, используемого для создания этого файла данных. Если FileSystemPathDataFiles не указан, используется FileSystemPathDD (или FileSystemPath, если FileSystemPathDD также не задано).

      Если для данного узла данных указан каталог FileSystemPathDataFiles (в том числе в случае, когда параметр указан в разделе [ndbd default] файла config.ini), то при запуске этого узла данных с помощью --initial все файлы в каталоге будут удалены.

    • FileSystemPathUndoFiles

      Версия (или более поздняя) NDB 9.2.0
      Тип или единицы имя файла
      Значение по умолчанию FileSystemPathDD
      Диапазон ...
      Тип перезапуска

      Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с использованием --initial. (NDB 9.2.0)

      Если этот параметр указан, файлы журнала отката Дисковых данных кластера NDB размещаются в указанном каталоге. Это переопределяет любое значение, заданное для FileSystemPathDD. Этот параметр может быть переопределён для данного файла данных, указав путь в части ADD UNDO оператора CREATE LOGFILE GROUP или ALTER LOGFILE GROUP, используемого для создания этого файла данных. Если FileSystemPathUndoFiles не указан, используется FileSystemPathDD (или FileSystemPath, если FileSystemPathDD также не задано).

      Если для данного узла данных указан каталог FileSystemPathUndoFiles (в том числе в случае, когда параметр указан в разделе [ndbd default] файла config.ini), то при запуске этого узла данных с помощью --initial все файлы в каталоге будут удалены.

    Дополнительную информацию см. в разделе 25.6.11.1, «Объекты Дисковых данных кластера NDB».

  • Параметры создания объекта Disk Data. Следующие два параметра позволяют — при первом запуске кластера — создать группу файлов журнала Disk Data, табличное пространство или оба без использования SQL-запросов.

    • InitialLogFileGroup

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

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

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

      InitialLogFileGroup = [name=name;] [undo_buffer_size=size;] file-specification-list
      
      file-specification-list:
          file-specification[; file-specification[; ...]]
      
      file-specification:
          filename:size
      

      name группы файлов журнала необязательны и по умолчанию равны DEFAULT-LG. undo_buffer_size также необязательны; если они опущены, по умолчанию принимаются значения 64M. Каждый file-specification соответствует файлу журнала отката, и по крайней мере один должен быть указан в file-specification-list. Файлы журнала отката размещаются в соответствии с установленными значениями для FileSystemPath, FileSystemPathDD и FileSystemPathUndoFiles, так же как если бы они были созданы в результате выполнения инструкции CREATE LOGFILE GROUP или ALTER LOGFILE GROUP.

      Рассмотрим пример:

      InitialLogFileGroup = name=LG1; undo_buffer_size=128M; undo1.log:250M; undo2.log:150M
      

      Это эквивалентно следующим SQL-запросам:

      CREATE LOGFILE GROUP LG1
          ADD UNDOFILE 'undo1.log'
          INITIAL_SIZE 250M
          UNDO_BUFFER_SIZE 128M
          ENGINE NDBCLUSTER;
      
      ALTER LOGFILE GROUP LG1
          ADD UNDOFILE 'undo2.log'
          INITIAL_SIZE 150M
          ENGINE NDBCLUSTER;
      

      Эта группа файлов журнала создается при запуске узлов данных с --initial.

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

      Этот параметр, если используется, всегда должен быть установлен в секции [ndbd default] файла config.ini. Поведение NDB Cluster при различных значениях на разных узлах данных не определено.

    • InitialTablespace

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

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

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

      InitialTablespace = [name=name;] [extent_size=size;] file-specification-list
      

      name табличного пространства необязательны и по умолчанию равны DEFAULT-TS. extent_size также необязательны; они по умолчанию равны 1M. file-specification-list использует ту же синтаксическую конструкцию, что и с параметром InitialLogfileGroup, за исключением того, что каждый file-specification, используемый с InitialTablespace, соответствует файлу данных. По крайней мере один должен быть указан в file-specification-list. Файлы данных размещаются в соответствии с установленными значениями для FileSystemPath, FileSystemPathDD и FileSystemPathDataFiles, так же как если бы они были созданы в результате выполнения инструкции CREATE TABLESPACE или ALTER TABLESPACE.

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

      InitialTablespace = name=TS1; extent_size=8M; data1.dat:2G; data2.dat:4G
      

      Это эквивалентно следующим SQL-запросам:

      CREATE TABLESPACE TS1
          ADD DATAFILE 'data1.dat'
          EXTENT_SIZE 8M
          INITIAL_SIZE 2G
          ENGINE NDBCLUSTER;
      
      ALTER TABLESPACE TS1
          ADD DATAFILE 'data2.dat'
          INITIAL_SIZE 4G
          ENGINE NDBCLUSTER;
      

      Это табличное пространство создается при запуске узлов данных с --initial и может использоваться при последующем создании табличных пространств NDB Cluster Disk Data.

  • Параметры задержки Disk Data. Эти два параметра могут использоваться для повышения эффективности обработки проблем с задержкой в таблицах NDB Cluster Disk Data.

    • MaxDiskDataLatency

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

      Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

      Этот параметр контролирует максимальную допустимую среднюю задержку доступа к диску (максимум 8000 миллисекунд). Когда этот лимит достигается, NDB начинает прерывать транзакции, чтобы снизить нагрузку на подсистему ввода-вывода Disk Data. Используйте 0, чтобы отключить проверку задержек.

    • DiskDataUsingSameDisk

      Версия (или более поздняя) NDB 9.2.0
      Тип или единицы измерения логический
      Значение по умолчанию true
      Диапазон ...
      Тип перезапуска

      Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)

      Установите этот параметр в false, если ваши табличные пространства Disk Data используют один или несколько отдельных дисков. Это позволит выполнять контрольные точки в табличные пространства с большей скоростью, чем обычно используется для совместных дисков.

      Когда DiskDataUsingSameDisk равен true, NDB снижает скорость создания контрольных точек Disk Data, когда активна контрольная точка в оперативной памяти, чтобы обеспечить постоянную нагрузку на диск.

Ошибки Disk Data и GCP Stop. Ошибки, возникающие при использовании таблиц Disk Data, такие как Узел nodeid убил этот узел, так как обнаружена остановка GCP (ошибка 2303), часто называются «“ошибки GCP stop”». Такие ошибки возникают, когда журнал перегенерации не достаточно быстро записывается на диск; это обычно связано с медленными дисками и недостаточной пропускной способностью диска.

Вы можете помочь предотвратить эти ошибки, используя более быстрые диски и разместив файлы Disk Data на отдельном диске от файловой системы узла данных. Уменьшение значения TimeBetweenGlobalCheckpoints имеет тенденцию уменьшать количество данных, которые нужно записать для каждого глобального контрольного пункта, и, таким образом, может обеспечить некоторую защиту от переполнения буфера журнала отката при попытке записи глобального контрольного пункта; однако, уменьшение этого значения также позволяет меньше времени на запись GCP, поэтому это необходимо делать с осторожностью.

В дополнение к соображениям, данным для DiskPageBufferMemory, как объяснялось ранее, очень важно, чтобы параметр конфигурации DiskIOThreadPool был настроен правильно; установка DiskIOThreadPool слишком высоким очень вероятно приведет к ошибкам остановки GCP (Ошибка #37227).

Остановки GCP могут быть вызваны таймаутами сохранения или фиксации; параметр конфигурации узла данных TimeBetweenEpochsTimeout определяет таймаут для фиксации. Однако, можно отключить оба типа таймаутов, установив этот параметр в 0.

Параметры для настройки выделения памяти буфера отправки. Память буфера отправки выделяется динамически из пула памяти, совместно используемого всеми транспортерами, что означает, что размер буфера отправки может быть изменен по мере необходимости. (Ранее ядро NDB использовало буфер отправки фиксированного размера для каждого узла в кластере, который выделялся при запуске узла и не мог быть изменен во время работы узла.) Параметры конфигурации узла данных TotalSendBufferMemory и OverLoadLimit позволяют устанавливать ограничения на это выделение памяти. Более подробную информацию об использовании этих параметров (а также SendBufferMemory) см. в разделе 25.4.3.14 «Настройка параметров буфера отправки NDB Cluster».

  • ExtraSendBufferMemory

    Этот параметр задает количество памяти буфера отправки транспортера для выделения дополнительно к любому, установленным с помощью TotalSendBufferMemory, SendBufferMemory или обоими.

  • TotalSendBufferMemory

    Этот параметр используется для определения общего объема памяти для выделения на данном узле для общей памяти буфера отправки среди всех настроенных транспортеров.

    Если этот параметр задан, его минимально допустимое значение составляет 256 КБ; 0 указывает, что параметр не задан. Более подробную информацию см. в разделе 25.4.3.14 «Настройка параметров буфера отправки NDB Cluster».

См. также раздел 25.6.7 «Добавление узлов данных NDB Cluster онлайн».

Обработка чрезмерной фиксации журнала переопределения. Можно управлять обработкой операций узлом данных, когда на запись журнала переопределения в диск затрачивается слишком много времени. Это происходит, когда запись конкретного журнала переопределения занимает более RedoOverCommitLimit секунд, более RedoOverCommitCounter раз, что приводит к прерыванию всех ожидающих транзакций. В этом случае узел API, который отправил транзакцию, может обработать операции, которые должны были быть зафиксированы, либо поместив операции в очередь и повторно их выполнив, либо прервав их, в зависимости от значения DefaultOperationRedoProblemAction.

  • RedoOverCommitCounter

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

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

    Когда RedoOverCommitLimit превышен при попытке записи данного журнала переопределения в диск такое количество раз или более, все транзакции, которые не были зафиксированы в результате, прерываются, а узел API, где возникли эти транзакции, обрабатывает операции, составляющие эти транзакции, в соответствии со значением DefaultOperationRedoProblemAction (либо поместив операции в очередь для повторного выполнения, либо прервав их).

  • RedoOverCommitLimit

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

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

    Этот параметр устанавливает максимальное время в секундах, в течение которого происходит попытка записи данного журнала переопределения в диск до истечения времени ожидания. Количество попыток сброса журнала данных, но время, потраченное на сброс, превышает RedoOverCommitLimit, сохраняется и сравнивается с RedoOverCommitCounter, и когда сброс занимает слишком много времени более, чем указанное в параметре количество раз, все транзакции, которые не были зафиксированы в результате таймаута сброса, прерываются. При этом узел API, где возникла любая из этих транзакций, обрабатывает операции, составляющие эти транзакции, в соответствии с настройкой DefaultOperationRedoProblemAction (помещая операции в очередь для повторного выполнения или прерывая их).

Управление попытками перезапуска. Можно тонко управлять попытками перезапуска узлов данных, когда они не могут запуститься, используя параметры конфигурации узла данных MaxStartFailRetries и StartFailRetryDelay.

MaxStartFailRetries ограничивает общее количество попыток перезапуска до отказа запуска узла данных, StartFailRetryDelay устанавливает количество секунд между попытками перезапуска. Эти параметры перечислены здесь:

  • StartFailRetryDelay

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

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

    Используйте этот параметр для установки количества секунд между попытками перезапуска узла данных в случае сбоя при запуске. По умолчанию значение равно 0 (без задержки).

    И этот параметр, и MaxStartFailRetries игнорируются, если StopOnError равно 0.

  • MaxStartFailRetries

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

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

    Используйте этот параметр для ограничения количества попыток перезапуска узла данных в случае сбоя при запуске. По умолчанию – 3 попытки.

    И этот параметр, и StartFailRetryDelay игнорируются, если StopOnError равно 0.

Параметры статистики индексов NDB. Параметры в следующей таблице относятся к генерации статистики индексов NDB.

  • IndexStatAutoCreate

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

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

    Включить (установить равным 1) или отключить (установить равным 0) автоматический сбор статистики при создании индексов.

  • IndexStatAutoUpdate

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

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

    Включить (установить равным 1) или отключить (установить равным 0) мониторинг индексов на наличие изменений и запускать автоматическое обновление статистики при их обнаружении. Степень изменения, необходимая для запуска обновлений, определяется настройками параметров IndexStatTriggerPct и IndexStatTriggerScale.

  • IndexStatSaveSize

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

    Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

    Максимальный объем памяти в байтах, разрешенный для сохраненной статистики любого данного индекса в системных таблицах NDB и в кэше памяти mysqld.

    Независимо от любого ограничения размера всегда создается как минимум один образец. Этот размер масштабируется с помощью IndexStatSaveScale.

    Размер, указанный параметром IndexStatSaveSize, масштабируется значением IndexStatTriggerPct для большого индекса, умноженного на 0,01. Это дополнительно умножается на логарифм по основанию 2 размера индекса. Установка IndexStatTriggerPct равной 0 отключает эффект масштабирования.

  • IndexStatSaveScale

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

    Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

    Размер, указанный параметром IndexStatSaveSize, масштабируется значением IndexStatTriggerPct для большого индекса, умноженного на 0,01. Это дополнительно умножается на логарифм по основанию 2 размера индекса. Установка IndexStatTriggerPct равной 0 отключает эффект масштабирования.

  • IndexStatTriggerPct

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

    Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

    Процентное изменение обновлений, которое запускает обновление статистики индекса. Значение масштабируется с помощью IndexStatTriggerScale. Вы можете полностью отключить этот триггер, установив IndexStatTriggerPct равным 0.

  • IndexStatTriggerScale

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

    Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

    Масштабировать IndexStatTriggerPct на это значение, умноженное на 0,01 для большого индекса. Значение 0 отключает масштабирование.

  • IndexStatUpdateDelay

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

    Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 9.2.0)

    Минимальная задержка в секундах между автоматическими обновлениями статистики индекса для данного индекса. Установка этого параметра равной 0 отключает любую задержку. Значение по умолчанию — 60 секунд.

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

Таблица 25.15 Типы перезапуска NDB Cluster

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

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

Spec-Zone.ru

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