Spec-Zone.ru › MySQL 8.4

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

    Version (or later) NDB 8.4.0
    Type or units unsigned
    Default [...]
    Range 1 - 144
    Restart Type

    Initial System Restart: Requires a complete shutdown of the cluster, wiping and restoring the cluster file system from a backup, and then restarting the cluster. (NDB 8.4.0)

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

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

  • ExecuteOnComputer

    Version (or later) NDB 8.4.0
    Type or units name
    Default [...]
    Range ...
    Deprecated Yes (in NDB 7.5)
    Restart Type

    System Restart: Requires a complete shutdown and restart of the cluster. (NDB 8.4.0)

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

    Важно

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

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

  • HostName

    Version (or later) NDB 8.4.0
    Type or units name or IP address
    Default localhost
    Range ...
    Restart Type

    Node Restart: Requires a rolling restart of the cluster. (NDB 8.4.0)

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

  • ServerPort

    Version (or later) NDB 8.4.0
    Type or units unsigned
    Default [...]
    Range 1 - 64K
    Restart Type

    System Restart: Requires a complete shutdown and restart of the cluster. (NDB 8.4.0)

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

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

    Примечание

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

  • TcpBind_INADDR_ANY

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

  • NodeGroup

    Version (or later) NDB 8.4.0
    Type or units unsigned
    Default [...]
    Range 0 - 65536
    Restart Type

    Initial System Restart: Requires a complete shutdown of the cluster, wiping and restoring the cluster file system from a backup, and then restarting the cluster. (NDB 8.4.0)

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

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

  • LocationDomainId

    Version (or later) NDB 8.4.0
    Type or units integer
    Default 0
    Range 0 - 16
    Restart Type

    System Restart: Requires a complete shutdown and restart of the cluster. (NDB 8.4.0)

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

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

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

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

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

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

  • NoOfReplicas

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

    Первоначальный перезапуск системы: Требует полного завершения работы кластера, удаления и восстановления файловой системы кластера из резервной копии, а затем перезапуска кластера. (NDB 8.4.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 8.4.0
    Тип или единицы измерения путь
    Значение по умолчанию .
    Диапазон ...
    Тип перезапуска

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

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

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

  • FileSystemPath

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

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

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

    Примечание

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

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

  • BackupDataDir

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

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

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

    Важно

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

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

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

Примечание

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

  • DataMemory

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

    Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 8.4.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 8.4.0
    Тип или единицы измерения байты
    Значение по умолчанию 0
    Диапазон 1М - 1Т
    Устаревший Да (в NDB 7.6)
    Тип перезапуска

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

    Параметр IndexMemory устарел (и в будущем может быть удалён); любая память, выделенная для IndexMemory, выделяется вместо этого в том же пуле, что и DataMemory, который полностью отвечает за все ресурсы, необходимые для хранения данных и индексов в памяти. В NDB 8.4 использование 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 8.4.0
    Тип или единицы измерения % или байты
    Значение по умолчанию 25
    Диапазон 0 - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

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

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

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

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

    В большинстве случаев значение по умолчанию должно быть достаточным, но когда у вас очень много NDB таблиц (1000 или более), возможно получение ошибки 773 Недостаточно памяти для строк, пожалуйста, измените параметр конфигурации StringMemory: Постоянная ошибка: Ошибка схемы, в этом случае следует увеличить это значение. Значение по умолчанию (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 8.4.0
Тип или единицы беззнаковое
Значение по умолчанию 5
Диапазон 0 - 100
Тип перезапуска

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

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

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

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

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

  • MaxNoOfConcurrentTransactions

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

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

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

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

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

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

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

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

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

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

  • MaxNoOfConcurrentOperations

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

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

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

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

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

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

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

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

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

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

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

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

  • MaxNoOfLocalOperations

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

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

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

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

  • MaxDMLOperationsPerTransaction

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

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

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

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

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

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

  • MaxNoOfConcurrentIndexOperations

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

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

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

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

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

  • MaxNoOfFiredTriggers

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

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

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

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

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

  • TransactionBufferMemory

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

    Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 8.4.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 8.4.0
    Тип или единицы измерения numeric
    Значение по умолчанию 0
    Диапазон 0 - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

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

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

  • ReservedConcurrentOperations

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

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

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

  • ReservedConcurrentScans

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

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

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

  • ReservedConcurrentTransactions

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

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

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

  • ReservedFiredTriggers

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

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

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

  • ReservedLocalScans

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

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

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

  • ReservedTransactionBufferMemory

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

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

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

  • TransactionMemory

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

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

    Важно

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

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

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

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

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

    • MaxNoOfConcurrentIndexOperations

    • MaxNoOfFiredTriggers

    • MaxNoOfLocalOperations

    • MaxNoOfLocalScans

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

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

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

  • BatchSizePerLocalScan

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

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

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

    Устарело.

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

  • LongMessageBuffer

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

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

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

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

  • MaxFKBuildBatchSize

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

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

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

  • MaxNoOfConcurrentScans

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

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

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

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

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

  • MaxNoOfLocalScans

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

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

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

    4 * MaxNoOfConcurrentScans * [# data nodes] + 2
    

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

  • MaxParallelCopyInstances

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

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

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

  • MaxParallelScansPerFragment

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

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

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

  • MaxReorgBuildBatchSize

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

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

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

  • MaxUIBuildBatchSize

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

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

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

Распределение памяти

MaxAllocate

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

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

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

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

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

NodeGroupTransporters

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

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

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

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

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

DefaultHashMapSize

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

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

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

Снижение этого параметра онлайн после создания или изменения каких-либо таблиц с значением DefaultHashMapSize равным 3840 в настоящее время не поддерживается.

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

  • FragmentLogFileSize

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

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

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

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

  • InitialNoOfOpenFiles

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

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

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

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

  • InitFragmentLogFiles

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

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

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

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

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

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

  • EnablePartialLcp

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

    Перезапуск узла: Требует поэтапный перезапуск кластера. (NDB 8.4.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 8.4.0
    Тип или единицы секунда
    Значение по умолчанию 180
    Диапазон 0 - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

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

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

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

  • MaxNoOfOpenFiles

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

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

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

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

  • MaxNoOfSavedMessages

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

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

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

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

  • MaxLCPStartDelay

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

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

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

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

  • NoOfFragmentLogFiles

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

    Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью --initial. (NDB 8.4.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 8.4.0
    Тип или единицы целое число
    По умолчанию 60
    Диапазон 25 - 100
    Тип перезапуска

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

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

    • Меньше записей записывается для каждой 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 8.4.0
    Тип или единицы целое число
    По умолчанию 40
    Диапазон 0 - 70
    Тип перезапуска

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

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

  • EnableRedoControl

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

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

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

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

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

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

Примечание

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

  • MaxNoOfAttributes

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

    Перезапуск узла: Требуется повторный запуск кластера. (NDB 8.4.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 8.4.0
    Тип или единицы integer
    Значение по умолчанию 128
    Диапазон 8 - 20320
    Тип перезапуска

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

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

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

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

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

    Примечание

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

  • MaxNoOfOrderedIndexes

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

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

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

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

    Примечание

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

  • MaxNoOfUniqueHashIndexes

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

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

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

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

    Примечание

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

  • MaxNoOfTriggers

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

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

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

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

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

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

  • MaxNoOfSubscriptions

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

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

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

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

  • MaxNoOfSubscribers

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

    Перезапуск узла: Требует поэтапной перезагрузки кластера. (NDB 8.4.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 8.4.0
    Тип или единицы измерения безусловное
    Значение по умолчанию 256
    Диапазон 0 - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

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

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

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

  • CompressedLCP

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

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

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

    Важно

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

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

  • CrashOnCorruptedTuple

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

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

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

  • Diskless

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

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

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

    Важно

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

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

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

  • EncryptedFileSystem

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

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

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

    Важно

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

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

  • LateAlloc

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

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

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

  • LockPagesInMainMemory

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

    Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 8.4.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 8.4 рассматривает 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 8.4.0
    Тип или единицы булево
    Значение по умолчанию false
    Диапазон true, false
    Тип перезапуска

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

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

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

  • ODirectSyncFlag

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

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

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

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

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

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

  • RequireCertificate

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

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

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

  • RequireTls

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

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

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

  • RestartOnErrorInsert

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

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

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

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

  • StopOnError

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

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

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

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

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

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

  • UseShm

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

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

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

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

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

  • TimeBetweenWatchDogCheck

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

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

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

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

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

  • TimeBetweenWatchDogCheckInitial

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

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

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

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

  • StartPartialTimeout

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

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

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

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

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

  • StartPartitionedTimeout

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

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

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

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

  • StartFailureTimeout

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

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

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

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

  • StartNoNodeGroupTimeout

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

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

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

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

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

  • HeartbeatIntervalDbDb

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

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

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

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

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

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

  • HeartbeatIntervalDbApi

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

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

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

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

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

  • HeartbeatOrder

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

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

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

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

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

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

    Таблица 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). Чтобы изменение вступило в силу, необходимо выполнить одно из следующих действий:

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

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

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

  • ConnectCheckIntervalDelay

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

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

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

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

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

  • TimeBetweenLocalCheckpoints

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

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

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

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

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

  • TimeBetweenGlobalCheckpoints

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

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

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

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

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

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

  • TimeBetweenGlobalCheckpointsTimeout

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

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

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

  • TimeBetweenEpochs

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

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

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

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

  • TimeBetweenEpochsTimeout

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

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

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

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

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

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

  • MaxBufferedEpochs

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

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

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

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

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

  • MaxBufferedEpochBytes

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

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

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

  • TimeBetweenInactiveTransactionAbortCheck

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

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

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

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

  • TransactionInactiveTimeout

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

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

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

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

  • TransactionDeadlockDetectionTimeout

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

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

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

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

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

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

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

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

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

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

  • DiskSyncSize

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

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

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

    Примечание

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

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

  • MaxDiskWriteSpeed

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

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

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

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

  • MaxDiskWriteSpeedOtherNodeRestart

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

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

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

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

  • MaxDiskWriteSpeedOwnRestart

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

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

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

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

  • MinDiskWriteSpeed

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

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

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

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

  • ArbitrationTimeout

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

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

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

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

  • Arbitration

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

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

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

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

    • Выключено. Установка 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

    Version (or later) NDB 8.4.0
    Type or units unsigned
    Default 2M
    Range 1M - 4294967039 (0xFFFFFEFF)
    Deprecated Yes (в NDB 8.0)
    Restart Type

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

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

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

  • UndoDataBuffer

    Version (or later) NDB 8.4.0
    Type or units unsigned
    Default 16M
    Range 1M - 4294967039 (0xFFFFFEFF)
    Deprecated Yes (в NDB 8.0)
    Restart Type

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

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

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

  • RedoBuffer

    Version (or later) NDB 8.4.0
    Type or units байты
    Default 32M
    Range 1M - 4294967039 (0xFFFFFEFF)
    Restart Type

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

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

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

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

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

  • EventLogBufferSize

    Version (or later) NDB 8.4.0
    Type or units байты
    Default 8192
    Range 0 - 64K
    Restart Type

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

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

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

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

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

  • LogLevelStartup

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

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

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

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

  • LogLevelShutdown

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

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

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

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

  • LogLevelStatistic

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

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

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

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

  • LogLevelCheckpoint

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

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

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

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

  • LogLevelNodeRestart

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

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

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

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

  • LogLevelConnection

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

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

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

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

  • LogLevelError

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

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

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

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

  • LogLevelCongestion

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

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

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

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

  • LogLevelInfo

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

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

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

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

  • MemReportFrequency

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

    Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 8.4.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 8.4.0
    Тип или единицы секунды
    Значение по умолчанию 0
    Диапазон 0 - 4294967039 (0xFFFFFEFF)
    Тип перезапуска

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

    При запуске узла данных с параметром --initial, он инициализирует файл журнала восстановления во время фазы запуска 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 (значение по умолчанию), сообщения в журнал кластера записываются только в начале и в конце процесса инициализации файла журнала восстановления.

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

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

  • DictTrace

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

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

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

  • WatchdogImmediateKill

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

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

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

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

  • BackupDataBufferSize

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

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

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

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

  • BackupDiskWriteSpeedPct

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

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

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

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

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

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

  • BackupLogBufferSize

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

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

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

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

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

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

  • BackupMemory

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

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

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

  • BackupReportFrequency

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

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

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

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

  • BackupWriteSize

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

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

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

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

  • BackupMaxWriteSize

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

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

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

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

  • CompressedBackup

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

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

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

    Важно

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

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

  • RequireEncryptedBackup

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

    Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 8.4.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 8.4.0
    Тип или единицы числовой
    Значение по умолчанию 128
    Диапазон 0 - 128
    Тип перезапуска

    Перезапуск узла: Требуется повторный запуск кластера. (NDB 8.4.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 8.4.0
    Тип или единицы набор ID процессоров
    Значение по умолчанию 0
    Диапазон ...
    Тип перезапуска

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

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

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

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

  • LockMaintThreadsToCPU

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

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

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

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

  • Numa

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

    Перезапуск узла: Требуется повторный запуск кластера. (NDB 8.4.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 8.4.0
    Тип или единицы логическое
    Значение по умолчанию false
    Диапазон true, false
    Тип перезапуска

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

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

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

  • SchedulerExecutionTimer

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

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

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

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

  • SchedulerResponsiveness

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

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

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

  • SchedulerSpinTimer

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

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

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

    Примечание

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

  • SpinMethod

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

    Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 8.4.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 8.4.0
    Тип или единицы измерения булево
    По умолчанию true
    Диапазон true, false
    Тип перезапуска

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

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

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

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

Примечание

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

  • AutomaticThreadConfig

    Version (or later) NDB 8.4.0
    Type or units boolean
    Default false
    Range true, false
    Restart Type

    Initial System Restart: Требует полного завершения работы кластера, удаления и восстановления файловой системы кластера из резервной копии, а затем перезапуска кластера. (NDB 8.4.0)

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

  • ClassicFragmentation

    Version (or later) NDB 8.4.0
    Type or units boolean
    Default true
    Range true, false
    Restart Type

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

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

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

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

  • EnableMultithreadedBackup

    Version (or later) NDB 8.4.0
    Type or units unsigned
    Default 1
    Range 0 - 1
    Restart Type

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

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

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

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

  • MaxNoOfExecutionThreads

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

    Перезапуск системы: Требуется полное завершение работы и перезапуск кластера. (NDB 8.4.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 8.4.0
    Тип или единицы микросекунды
    Значение по умолчанию 0
    Диапазон 0 - 11000
    Тип перезагрузки

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

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

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

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

  • NoOfFragmentLogParts

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

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

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

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

  • NumCPUs

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

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

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

  • PartitionsPerNode

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

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

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

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

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

  • ThreadConfig

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

    Перезапуск системы: Требует полной остановки и перезапуска кластера. (NDB 8.4.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. Поскольку меньшее значение nice для процесса указывает на более высокий приоритет процесса, увеличение 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

      Некоторые операционные системы могут обеспечивать максимальный уровень nice процесса в 20, но это не поддерживается во всех целевых версиях; по этой причине мы выбираем 19 в качестве максимального значения nice, которое можно установить.

    • Solaris: Установка thread_prio в Solaris устанавливает приоритет FX Solaris, с отображением, показанным в следующей таблице:

      Таблица 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 8.4.0
    Тип или единицы измерения байты
    Значение по умолчанию 64 МБ
    Диапазон 4 МБ - 16 ТБ
    Тип перезапуска

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

    Это количество записей страниц (ссылок на страницы) для выделения. Оно задаётся как число 32К страниц в DiskPageBufferMemory. Значение по умолчанию достаточно для большинства случаев, но, возможно, вам потребуется увеличить это значение, если у вас возникнут проблемы с очень большими транзакциями в таблицах Дисковых данных. Каждая запись страницы требует приблизительно 100 байт.

  • DiskPageBufferMemory

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

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

    Это определяет объём памяти в байтах, используемый для кэширования страниц на диске, и устанавливается в разделе [ndbd] или [ndbd default] файла config.ini.

    Если значение для DiskPageBufferMemory установлено слишком низким в сочетании с использованием большего, чем по умолчанию, числа потоков LDM в ThreadConfig (например, {ldm=6...}), могут возникнуть проблемы при попытке добавить большой (например, 500 ГБ) файл данных в таблицу NDB на основе диска, при этом процесс займёт неопределённо долгое время, используя один из ядер процессора.

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

    Вы можете запросить таблицу ndbinfo.diskpagebuffer, чтобы помочь определить, следует ли увеличить это значение, чтобы свести к минимуму необоснованные обращения к диску. Дополнительную информацию см. в разделе 25.6.17.31, «Таблица ndbinfo diskpagebuffer».

  • SharedGlobalMemory

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

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

    Этот параметр определяет объём памяти, используемый для буферов журналов, операций с диском (таких как запросы страниц и очереди ожидания), а также метаданных для файловых систем таблиц, групп файлов журнала, файлов UNDO и файлов данных. Общий пул глобальной памяти также предоставляет память, используемую для удовлетворения потребностей памяти опции UNDO_BUFFER_SIZE, используемой с CREATE LOGFILE GROUP и ALTER LOGFILE GROUP операторами, включая любое значение по умолчанию, подразумеваемое для этой опции настройкой параметра конфигурации узла данных InitialLogFileGroup. SharedGlobalMemory может быть установлено в разделе [ndbd] или [ndbd default] файла конфигурации config.ini и измеряется в байтах.

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

  • DiskIOThreadPool

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

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

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

    Этот параметр применяется только к потокам ввода/вывода Дисковых данных.

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

    • Физическое размещение файлов Дисковых данных. Вы можете получить лучшую производительность, разместив файлы данных, файлы журнала отмены и файловую систему узла данных на отдельных физических дисках. Если вы это сделаете с некоторыми или всеми из этих наборов файлов, то вы можете (и должны) установить DiskIOThreadPool выше, чтобы разрешить отдельные потоки для обработки файлов на каждом диске.

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

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

      Также рекомендуется уменьшить TimeBetweenGlobalCheckpoints при использовании твердотельных накопителей, в частности тех, которые используют NVMe. Смотрите также параметры задержки Дисковых данных.

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

  • Параметры файловой системы Дисковых данных. Параметры в следующем списке позволяют размещать файлы NDB Cluster Дисковых данных в определённых каталогах без необходимости использования символических ссылок.

    • FileSystemPathDD

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

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

      Если этот параметр указан, файлы данных и журналы обратной записи NDB Cluster Дисковых данных размещаются в указанном каталоге. Это можно переопределить для файлов данных, журналов обратной записи или для обоих, указав значения для 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 Cluster Дисковых данных размещаются в указанном каталоге. Это переопределяет любое значение, заданное для FileSystemPathDD. Этот параметр может быть переопределён для данного файла данных, указав путь в разделе ADD DATAFILE оператора CREATE TABLESPACE или ALTER TABLESPACE, используемого для создания этого файла данных. Если FileSystemPathDataFiles не указан, используется FileSystemPathDD (или FileSystemPath, если FileSystemPathDD также не задан).

      Если для данного узла данных указан каталог FileSystemPathDataFiles (включая случай, когда параметр указан в разделе [ndbd default] файла config.ini), то при запуске этого узла данных с --initial все файлы в этом каталоге будут удалены.

    • FileSystemPathUndoFiles

      ...

      Если этот параметр указан, файлы журналов обратной записи NDB Cluster Дисковых данных размещаются в указанном каталоге. Это переопределяет любое значение, заданное для FileSystemPathDD. Этот параметр может быть переопределён для данного файла данных, указав путь в разделе ADD UNDO оператора CREATE LOGFILE GROUP или ALTER LOGFILE GROUP, используемого для создания этого файла данных. Если FileSystemPathUndoFiles не указан, используется FileSystemPathDD (или FileSystemPath, если FileSystemPathDD также не задан).

      Если для данного узла данных указан каталог FileSystemPathUndoFiles (включая случай, когда параметр указан в разделе [ndbd default] файла config.ini), то при запуске данного узла данных с --initial все файлы в этом каталоге будут удалены.

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

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

    • InitialLogFileGroup

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

      Перезапуск системы: Требует полной остановки и перезапуска кластера. (NDB 8.4.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 8.4.0
      Тип или единицы измерения строка
      Значение по умолчанию [см. документацию]
      Диапазон ...
      Тип перезапуска

      Перезапуск системы: Требует полной остановки и перезапуска кластера. (NDB 8.4.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 8.4.0
      Тип или единицы измерения мс
      Значение по умолчанию 0
      Диапазон 0 - 8000
      Тип перезапуска

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

      Этот параметр контролирует максимальную среднюю задержку доступа к диску (максимум 8000 миллисекунд). Когда этот предел достигнут, NDB начинает отменять транзакции, чтобы уменьшить нагрузку на подсистему ввода-вывода Disk Data. Используйте 0 для отключения проверки задержки.

    • DiskDataUsingSameDisk

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

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

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

      Когда DiskDataUsingSameDisk имеет значение true, NDB уменьшает скорость создания контрольных точек Disk Data всякий раз, когда выполняется контрольная точка в оперативной памяти, что помогает обеспечить постоянную нагрузку на диск.

Ошибки Disk Data и GCP. Ошибки, возникающие при использовании таблиц Disk Data, такие как Узел nodeid убил этот узел, поскольку обнаружена остановка GCP (ошибка 2303), часто называют “ошибками остановки GCP”. Такие ошибки возникают, когда журнал пересоздания не записывается на диск достаточно быстро; обычно это связано с медленными дисками и недостаточной пропускной способностью диска.

Вы можете помочь предотвратить возникновение этих ошибок, используя более быстрые диски и помещая файлы Disk Data на отдельный диск от файловой системы узла данных. Уменьшение значения TimeBetweenGlobalCheckpoints имеет тенденцию уменьшать количество данных, подлежащих записи для каждой глобальной контрольной точки, и, следовательно, может обеспечить некоторую защиту от переполнения буфера журнала пересоздания при попытке записи глобальной контрольной точки; однако, уменьшение этого значения также позволяет меньше времени на запись GCP, поэтому это нужно делать с осторожностью.

Помимо соображений, приведенных для DiskPageBufferMemory, как объяснялось ранее, очень важно правильно настроить параметр конфигурации DiskIOThreadPool; слишком высокое значение DiskIOThreadPool очень вероятно приведет к ошибкам остановки GCP (Ошибка #37227).

END_OF_DOCUMENT_MARKER

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

Параметры для настройки выделения памяти буфера отправки. Память буфера отправки выделяется динамически из пула памяти, который используется всеми транспортерами, что означает, что размер буфера отправки можно изменять по мере необходимости. (Ранее ядро NDB использовало буфер отправки фиксированного размера для каждого узла в кластере, который выделялся при запуске узла и не мог быть изменён во время работы узла.) Параметры конфигурации узла данных TotalSendBufferMemory и OverLoadLimit позволяют устанавливать ограничения на это выделение памяти. Более подробную информацию об использовании этих параметров (а также SendBufferMemory) см. в разделе 25.4.3.14 «Настройка параметров буфера отправки кластера NDB».

  • ExtraSendBufferMemory

    Этот параметр определяет объём памяти буфера отправки транспортера, который необходимо выделить дополнительно к любому выделенному с помощью TotalSendBufferMemory, SendBufferMemory или обоих.

  • TotalSendBufferMemory

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

    Если этот параметр установлен, его минимально допустимое значение равно 256 КБ; значение 0 указывает, что параметр не установлен. Более подробную информацию см. в разделе 25.4.3.14 «Настройка параметров буфера отправки кластера NDB».

См. также раздел 25.6.7 «Добавление узлов данных кластера NDB онлайн».

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

  • RedoOverCommitCounter

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

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

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

  • RedoOverCommitLimit

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

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

    Этот параметр устанавливает максимальное время (в секундах) попытки записи данного журнала повторных записей на диск, прежде чем произойдёт таймаут. Количество попыток сброса этого журнала повторных записей узлом данных, но длившихся более RedoOverCommitLimit секунд, сохраняется и сравнивается со значением RedoOverCommitCounter, и когда сброс занимает слишком много времени более чем на количество значений данного параметра, любые транзакции, которые не были зафиксированы в результате таймаута сброса, прерываются. При этом узел API, в котором возникли какие-либо из этих транзакций, обрабатывает составляющие эти транзакции операции согласно его параметру DefaultOperationRedoProblemAction (поместить операции в очередь для повторной попытки или прервать их).

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

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

  • StartFailRetryDelay

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

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

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

    Как этот параметр, так и MaxStartFailRetries игнорируются, если StopOnError равен 0.

  • MaxStartFailRetries

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

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

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

    Как этот параметр, так и StartFailRetryDelay игнорируются, если StopOnError равен 0.

Параметры статистики индексов NDB. Параметры в следующем списке относятся к генерации статистики индексов NDB.

  • IndexStatAutoCreate

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

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

    Включить (установить равным 1) или отключить (установить равным 0) автоматический сбор статистики при создании индексов.

  • IndexStatAutoUpdate

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

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

    Включить (установить равным 1) или отключить (установить равным 0) мониторинг индексов на предмет изменений и запускать автоматическое обновление статистики при их обнаружении. Степень изменения, необходимая для запуска обновлений, определяется настройками для параметров IndexStatTriggerPct и IndexStatTriggerScale.

  • IndexStatSaveSize

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

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

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

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

    Размер, указанный параметром IndexStatSaveSize, масштабируется значением IndexStatTriggerPct для большого индекса, умноженного на 0,01. Это дополнительно умножается на логарифм по основанию 2 размера индекса. Установка IndexStatTriggerPct равной 0 отключает эффект масштабирования.

  • IndexStatSaveScale

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

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

    Размер, указанный параметром IndexStatSaveSize, масштабируется значением IndexStatTriggerPct для большого индекса, умноженного на 0,01. Это дополнительно умножается на логарифм по основанию 2 размера индекса. Установка IndexStatTriggerPct равной 0 отключает эффект масштабирования.

  • IndexStatTriggerPct

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

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

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

  • IndexStatTriggerScale

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

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

    Масштабировать IndexStatTriggerPct на это значение, умноженное на 0,01 для большого индекса. Значение 0 отключает масштабирование.

  • IndexStatUpdateDelay

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

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

    Минимальная задержка в секундах между автоматическими обновлениями статистики индекса для данного индекса. Установка этого параметра равным 0 отключает любую задержку. Значение по умолчанию — 60 секунд.

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

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

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

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

Spec-Zone.ru

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