25.4.3.6 Определение узлов данных кластера NDB
Разделы [ndbd] и [ndbd
default] используются для настройки поведения узлов данных кластера.
[ndbd] и [ndbd default] всегда используются в качестве имён разделов, независимо от того, используете ли вы бинарные файлы ndbd или ndbmtd для процессов узлов данных.
Существует множество параметров, которые контролируют размеры буферов, размеры пулов, таймауты и т. д. Единственный обязательный параметр — ExecuteOnComputer; он должен быть определён в локальном разделе [ndbd].
Параметр NoOfReplicas следует определять в разделе [ndbd default], поскольку он общий для всех узлов данных кластера. Нестрого необходимо задавать NoOfReplicas, но рекомендуется задавать его явно.
Большинство параметров узлов данных устанавливаются в разделе [ndbd
default]. Изменить параметры в разделе [ndbd] разрешается только тем параметрам, которые явно указаны как допускающие установку локальных значений. Если они присутствуют, HostName и NodeId обязательно должны быть определены в локальном разделе [ndbd], а не в любом другом разделе config.ini. Другими словами, настройки этих параметров специфичны для одного узла данных.
Для параметров, влияющих на использование памяти или размеры буферов, можно использовать K, M или G в качестве суффикса для указания единиц 1024, 1024×1024 или 1024×1024×1024 соответственно. (Например, 100K означает 100 × 1024 = 102400.)
Имена и значения параметров нечувствительны к регистру, за исключением случаев использования в файле сервера MySQL my.cnf или my.ini, где регистр важен.
Информация о параметрах конфигурации, специфичных для таблиц данных NDB Cluster Disk, приведена далее в этом разделе (см. Параметры конфигурации таблиц данных на диске).
Все эти параметры также применяются к ndbmtd (многопоточной версии ndbd). Три дополнительных параметра конфигурации узлов данных — MaxNoOfExecutionThreads, ThreadConfig и NoOfFragmentLogParts — применяются только к ndbmtd; при использовании с ndbd они не имеют эффекта. Дополнительную информацию см. в разделе Параметры конфигурации многопоточности (ndbmtd). См. также Раздел 25.5.3, «ndbmtd — Демон узла данных кластера NDB (многопоточная версия)».
Идентификация узлов данных. Значение NodeId или Id (то есть идентификатор узла данных) можно задать в командной строке при запуске узла или в файле конфигурации.
-
NodeIdВерсия (или более поздняя) NDB 9.2.0 Тип или единицы unsigned По умолчанию [...] Диапазон 1 - 144 Тип перезапуска Первоначальный перезапуск системы: Требуется полная остановка кластера, очистка и восстановление файловой системы кластера из резервной копии, а затем перезапуск кластера. (NDB 9.2.0)
Уникальный идентификатор узла используется в качестве адреса узла для всех внутренних сообщений кластера. Для узлов данных это целое число в диапазоне от 1 до 144 включительно. Каждый узел в кластере должен иметь уникальный идентификатор.
NodeId— единственное поддерживаемое имя параметра для идентификации узлов данных. -
ExecuteOnComputerВерсия (или более поздняя) NDB 9.2.0 Тип или единицы имя По умолчанию [...] Диапазон ... Устаревший Да (в NDB 7.5) Тип перезапуска Перезапуск системы: Требуется полная остановка и перезапуск кластера. (NDB 9.2.0)
Это относится к набору
Idдля одного из компьютеров, определённых в разделе[computer].ВажноЭтот параметр устарел и может быть удалён в будущих версиях. Используйте параметр
HostNameвместо него. -
Идентификатор узла для этого узла может быть предоставлен только подключениям, которые его явно запросили. Сервер управления, запрашивающий “любой” идентификатор узла, не может использовать этот. Этот параметр может быть использован при запуске нескольких серверов управления на одном хосте, и
HostNameнедостаточно для различения процессов. -
HostNameВерсия (или более поздняя) NDB 9.2.0 Тип или единицы имя или IP-адрес По умолчанию localhost Диапазон ... Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Указание этого параметра определяет имя хоста компьютера, на котором должен находиться узел данных. Используйте
HostNameдля указания имени хоста, отличного отlocalhost. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы unsigned По умолчанию [...] Диапазон 1 - 64K Тип перезапуска Перезапуск системы: Требуется полная остановка и перезапуск кластера. (NDB 9.2.0)
Каждый узел в кластере использует порт для подключения к другим узлам. По умолчанию этот порт назначается динамически таким образом, чтобы на одном и том же компьютере не было двух узлов с одинаковым номером порта, поэтому обычно не требуется указывать значение для этого параметра.
Однако, если вам нужно открыть определённые порты в брандмауэре для обеспечения связи между узлами данных и узлами API (включая узлы SQL), вы можете установить этот параметр в нужное число порта в разделе
[ndbd]или (если вам нужно сделать это для нескольких узлов данных) в разделе[ndbd default]файлаconfig.ini, а затем открыть этот порт для входящих подключений от узлов SQL, узлов API или обоих типов.ПримечаниеПодключения от узлов данных к узлам управления осуществляются через порт управления ndb_mgmd (порт сервера управления
PortNumber), поэтому выходящие подключения к этому порту со стороны узлов данных всегда должны быть разрешены. -
TcpBind_INADDR_ANYУстановка этого параметра в
TRUEили1связываетIP_ADDR_ANYтаким образом, что подключения могут осуществляться от любого места (для автоматически генерируемых подключений). По умолчанию —FALSE(0). -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы unsigned По умолчанию [...] Диапазон 0 - 65536 Тип перезапуска Первоначальный перезапуск системы: Требуется полная остановка кластера, очистка и восстановление файловой системы кластера из резервной копии, а затем перезапуск кластера. (NDB 9.2.0)
Этот параметр может использоваться для назначения узла данных конкретной группе узлов. Он читается только при первом запуске кластера и не может использоваться для переназначения узла данных в другую группу узлов онлайн. Обычно не рекомендуется использовать этот параметр в разделе
[ndbd default]файлаconfig.ini, и необходимо следить, чтобы узлы не были назначены группам узлов таким образом, что любое количеству узлов не будет соответствовать назначенной группе узлов.Параметр
NodeGroupпредназначен в основном для добавления новой группы узлов в работающий кластер NDB без необходимости выполнения поэтапного перезапуска. Для этой цели нужно установить его в 65536 (максимальное значение). Вам не нужно устанавливать значениеNodeGroupдля всех узлов данных кластера, только для тех узлов, которые будут запущены и добавлены в кластер как новая группа узлов в более позднее время. Более подробная информация в Разделе 25.6.7.3, «Добавление узлов данных кластера NDB онлайн: подробный пример». -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы целое число По умолчанию 0 Диапазон 0 - 16 Тип перезапуска Перезапуск системы: Требуется полная остановка и перезапуск кластера. (NDB 9.2.0)
Назначает узел данных конкретной домене доступности (также известной как зона доступности) в облаке. Предоставление информации
NDBо том, какие узлы находятся в каких доменах доступности, может улучшить производительность в облачной среде следующим образом:Если запрашиваемые данные не найдены на том же узле, чтение может быть направлено на другой узел в том же домене доступности.
Связь между узлами в разных доменах доступности гарантированно будет использовать WAN-поддержку транспортеров
NDBбез дополнительного ручного вмешательства.Номер группы транспортера может основываться на используемом домене доступности, так что также узлы SQL и другие узлы API будут взаимодействовать с локальными узлами данных в том же домене доступности, когда это возможно.
Арбитр может быть выбран из домена доступности, в котором нет узлов данных, или, если такой домен найти не удаётся, из третьего домена доступности.
LocationDomainIdпринимает целочисленное значение от 0 до 16 включительно, причём 0 — значение по умолчанию; использование 0 равносильно отсутствию параметра.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 2 Диапазон 1 - 4 Тип перезапуска Первоначальный перезапуск системы: Требует полного выключения кластера, очистки и восстановления файловой системы кластера из бэкапа, а затем перезапуска кластера. (NDB 9.2.0)
Этот глобальный параметр может быть задан только в разделе
[ndbd default]и определяет количество фрагментных реплик для каждой таблицы, хранящейся в кластере. Этот параметр также определяет размер групп узлов. Группа узлов — это набор узлов, все хранящие одну и ту же информацию.Группы узлов формируются неявно. Первая группа узлов формируется набором узлов данных с наименьшими идентификаторами узлов, следующая группа узлов — набором следующих наименьших идентификаторов узлов и так далее. Например, предположим, что у нас есть 4 узла данных и что
NoOfReplicasустановлено в 2. Четыре узла данных имеют идентификаторы узлов 2, 3, 4 и 5. Тогда первая группа узлов формируется из узлов 2 и 3, а вторая группа узлов — из узлов 4 и 5. Важно настроить кластер таким образом, чтобы узлы в одной группе узлов не размещались на одном компьютере, поскольку отказ одного аппаратного обеспечения приведет к отказу всего кластера.Если идентификаторы узлов не указаны, порядок узлов данных является определяющим для группы узлов. Независимо от того, выполняются ли явные назначения, их можно просмотреть в выводе команды управления клиентом
SHOW.Значение по умолчанию для
NoOfReplicasравно 2. Это рекомендуемое значение для большинства производственных сред. Также поддерживается установка этого параметра в 3 или 4.ПредупреждениеУстановка
NoOfReplicasв 1 означает, что существует только одна копия всех данных кластера; в этом случае потеря одного узла данных приводит к отказу кластера, поскольку дополнительных копий данных, хранящихся на этом узле, нет.Количество узлов данных в кластере должно быть четно делимо на значение этого параметра. Например, если есть два узла данных, то
NoOfReplicasдолжно быть равно 1 или 2, поскольку 2/3 и 2/4 дают дробные значения; если есть четыре узла данных, тоNoOfReplicasдолжно быть равно 1, 2 или 4. -
DataDirВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения путь Значение по умолчанию . Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует постепенного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)Этот параметр указывает каталог, в котором размещаются файлы трассировки, журналы, файлы pid и журналы ошибок.
Значение по умолчанию — рабочая директория процесса узла данных.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения путь Значение по умолчанию DataDir Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует постепенного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)Этот параметр указывает каталог, в котором размещаются все файлы, созданные для метаданных, журналов REDO, журналов UNDO (для таблиц данных на диске) и файлов данных. По умолчанию используется каталог, указанный в
DataDir.ПримечаниеЭтот каталог должен существовать до запуска процесса ndbd.
Рекомендуемая иерархия каталогов для NDB Cluster включает
/var/lib/mysql-cluster, в котором создаётся каталог для файловой системы узла. Имя этого подкаталога содержит идентификатор узла. Например, если идентификатор узла равен 2, этот подкаталог называетсяndb_2_fs. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения путь Значение по умолчанию FileSystemPath Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует постепенного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)Этот параметр указывает каталог, в котором размещаются резервные копии.
ВажноСтрока '
/BACKUP' всегда добавляется к этому значению. Например, если вы установите значениеBackupDataDirв/var/lib/cluster-data, то все резервные копии хранятся в/var/lib/cluster-data/BACKUP. Это также означает, что эффективное расположение резервной копии — каталог с именемBACKUPв расположении, указанном параметромFileSystemPath.
Память данных, память индексов и строковая память
DataMemory и IndexMemory — это [ndbd] параметры, определяющие размер сегментов памяти, используемых для хранения фактических записей и их индексов. При установке значений важно понять, как используется DataMemory, так как его обычно необходимо обновлять, чтобы отразить фактическое использование кластером.
IndexMemory устарел и может быть удален в будущей версии NDB Cluster. Дополнительную информацию см. в последующих описаниях.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 98М Диапазон 1М - 16Т Тип перезапуска Перезапуск узла: Требует поэтапной перезагрузки кластера. (NDB 9.2.0)
Этот параметр определяет объем памяти (в байтах), доступный для хранения записей базы данных. Весь объем, указанный этим значением, выделяется в памяти, поэтому крайне важно, чтобы у машины было достаточно физической памяти для его размещения.
Память, выделенная параметром
DataMemory, используется для хранения как фактических записей, так и индексов. На каждую запись накладывается накладные расходы в 16 байт; дополнительное количество для каждой записи возникает из-за того, что она хранится в 32КБ-странице с накладными расходами в 128 байт (см. ниже). Также небольшое количество памяти теряется на страницу из-за того, что каждая запись хранится только на одной странице.Для атрибутов таблиц с переменной длиной данные хранятся на отдельных страницах данных, выделенных из
DataMemory. Записи переменной длины используют фиксированную часть с дополнительными накладными расходами в 4 байта для ссылки на переменную часть. Переменная часть имеет накладные расходы в 2 байта плюс 2 байта на атрибут.Максимальный размер записи составляет 30000 байт.
Ресурсы, выделенные для
DataMemory, используются для хранения всех данных и индексов. (Любая память, настроенная какIndexMemory, автоматически добавляется к памяти, используемойDataMemory, чтобы сформировать общий пул ресурсов.)Пространство памяти, выделенное параметром
DataMemory, состоит из 32КБ-страниц, которые выделены для фрагментов таблиц. Каждая таблица обычно разделена на такое же количество фрагментов, как и узлов данных в кластере. Таким образом, для каждого узла количество фрагментов такое же, как установлено вNoOfReplicas.После выделения страницы ее нельзя вернуть в пул свободных страниц, кроме как удалив таблицу. (Это также означает, что страницы
DataMemory, после выделения для данной таблицы, нельзя использовать другими таблицами.) Восстановление узла данных также сжимает раздел, потому что все записи вставляются в пустые разделы с других активных узлов.Пространство памяти
DataMemoryтакже содержит информацию UNDO: Для каждой операции обновления копия неизменённой записи выделяется вDataMemory. Также есть ссылка на каждую копию в упорядоченных индексах таблицы. Уникальные индексы хеширования обновляются только при обновлении столбцов уникального индекса, в этом случае в таблицу индекса вставляется новая запись, а старая запись удаляется при подтверждении. По этой причине также необходимо выделить достаточно памяти для обработки самых больших транзакций, выполняемых приложениями, использующими кластер. В любом случае, выполнение нескольких больших транзакций не имеет преимуществ по сравнению с использованием многих меньших, по следующим причинам:Крупные транзакции не быстрее, чем небольшие
Крупные транзакции увеличивают количество потерянных операций, которые необходимо повторить в случае сбоя транзакции
Крупные транзакции используют больше памяти
Значение по умолчанию для
DataMemoryсоставляет 98МБ. Минимальное значение — 1МБ. Максимального размера нет, но на практике максимальный размер должен быть адаптирован таким образом, чтобы процесс не начинал подкачку, когда предел будет достигнут. Этот предел определяется количеством доступной физической оперативной памяти на машине и объёмом памяти, который операционная система может зарезервировать для одного процесса. 32-разрядные операционные системы, как правило, ограничены 2−4 ГБ на процесс; 64-разрядные операционные системы могут использовать больше. Для больших баз данных для этой причины может быть предпочтительнее использовать 64-разрядную операционную систему. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 0 Диапазон 1М - 1Т Устаревший Да (в NDB 7.6) Тип перезапуска Перезапуск узла: Требует поэтапной перезагрузки кластера. (NDB 9.2.0)
Параметр
IndexMemoryустарел (и может быть удалён в будущем); любая память, выделеннаяIndexMemory, вместо этого выделяется в тот же пул, что иDataMemory, который несет полную ответственность за все ресурсы, необходимые для хранения данных и индексов в памяти. В NDB 9.2 использованиеIndexMemoryв файле конфигурации кластера приводит к предупреждению от сервера управления.Вы можете оценить размер индекса хеширования по этой формуле:
size = ( (
fragments* 32K) + (rows* 18) ) *fragment_replicasfragments— количество фрагментов,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 (ноль).
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения % или байты Значение по умолчанию 25 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск системы: Требует полного завершения работы и перезапуска кластера. (NDB 9.2.0)
Этот параметр определяет, сколько памяти выделяется для строк, таких как имена таблиц, и указывается в разделе
[ndbd]или[ndbd default]файлаconfig.ini. Значение от0до100включительно интерпретируется как процент от максимального значения по умолчанию, которое рассчитывается на основе нескольких факторов, включая количество таблиц, максимальный размер имени таблицы, максимальный размер файлов.FRM,MaxNoOfTriggers, максимальный размер имени столбца и максимальное значение столбца по умолчанию.Значение больше
100интерпретируется как количество байтов.Значение по умолчанию — 25, то есть 25 процентов от максимального значения по умолчанию.
В большинстве случаев значения по умолчанию должны быть достаточными, но когда у вас очень много таблиц
NDB(1000 или более), возможно получение ошибки 773 Не хватает памяти для строк, пожалуйста, измените параметр StringMemory: Постоянная ошибка: Ошибка схемы, в этом случае необходимо увеличить это значение.25(25 процентов) не избыточно и должно предотвратить эту ошибку во всех, кроме самых экстремальных случаев.
Следующий пример иллюстрирует, как используется память для таблицы. Рассмотрим такое определение таблицы:
CREATE TABLE example (
a INT NOT NULL,
b INT NOT NULL,
c INT NOT NULL,
PRIMARY KEY(a),
UNIQUE(b)
) ENGINE=NDBCLUSTER;
Для каждой записи есть 12 байтов данных плюс 12 байтов накладных расходов. Отсутствие столбцов с NULL-значениями экономит 4 байта накладных расходов. Кроме того, у нас есть два упорядоченных индекса по столбцам a и b, потребляющих примерно по 10 байтов на запись. Есть хеш-индекс первичного ключа по основной таблице, использующий примерно 29 байтов на запись. Уникальное ограничение реализуется отдельной таблицей с b в качестве первичного ключа и a в качестве столбца. Эта другая таблица потребляет дополнительные 29 байтов памяти индекса на каждую запись в таблице example, а также 8 байтов данных записи плюс 12 байтов накладных расходов.
Таким образом, для одного миллиона записей нам требуется 58 МБ памяти для индексов для обработки хеш-индексов для первичного ключа и уникального ограничения. Нам также потребуется 64 МБ для записей базовой таблицы и таблицы уникального индекса, плюс две упорядоченные таблицы индексов.
Вы можете видеть, что хеш-индексы занимают значительное количество места в памяти; однако они обеспечивают очень быстрый доступ к данным в ответ. Они также используются в NDB Cluster для обработки уникальных ограничений.
В настоящее время единственный алгоритм разбиения — хеширование, а упорядоченные индексы локальны для каждого узла. Таким образом, упорядоченные индексы не могут использоваться для обработки уникальных ограничений в общем случае.
Важный момент для как IndexMemory, так и DataMemory заключается в том, что общий размер базы данных является суммой всей памяти данных и всей памяти индексов для каждой группы узлов. Каждая группа узлов используется для хранения дублированной информации, поэтому если есть четыре узла с двумя фрагментами реплик, то есть две группы узлов. Таким образом, общее доступное пространство памяти данных равно 2 × DataMemory для каждого узла данных.
Настоятельно рекомендуется, чтобы DataMemory и IndexMemory были установлены в одинаковые значения для всех узлов. Распределение данных равномерно по всем узлам кластера, поэтому максимальное количество места, доступного для любого узла, не может быть больше, чем у самого маленького узла в кластере.
DataMemory можно изменить, но уменьшение его может быть рискованным; это может легко привести к тому, что узел или даже весь NDB Cluster не сможет перезапуститься из-за недостаточного места в памяти. Увеличение этих значений должно быть приемлемым, но рекомендуется, чтобы такие обновления выполнялись таким же образом, как обновление программного обеспечения, начиная с обновления файла конфигурации, а затем перезапуска сервера управления и, в свою очередь, каждого узла данных.
MinFreePct. Пропорция (по умолчанию 5%) ресурсов узла данных, включая DataMemory, сохраняется в резерве, чтобы гарантировать, что узел данных не исчерпает память при выполнении перезапуска. Это можно настроить с помощью параметра конфигурации узла данных MinFreePct (по умолчанию 5).
| Версия (или более поздняя) | NDB 9.2.0 |
|---|---|
| Тип или единицы | без знака |
| Значение по умолчанию | 5 |
| Диапазон | 0 - 100 |
| Тип перезапуска | Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0) |
Обновления не увеличивают объем используемой памяти индексов. Вставки вступают в силу немедленно; однако строки фактически не удаляются до тех пор, пока транзакция не будет подтверждена.
Параметры транзакций. Следующие несколько [ndbd] параметров, которые мы обсуждаем, важны, потому что они влияют на количество параллельных транзакций и размеры транзакций, которые может обрабатывать система. MaxNoOfConcurrentTransactions устанавливает количество возможных параллельных транзакций в узле. MaxNoOfConcurrentOperations устанавливает количество записей, которые могут быть на стадии обновления или заблокированы одновременно.
Оба эти параметра (особенно MaxNoOfConcurrentOperations) скорее всего будут настраиваться пользователями для установки определенных значений, а не для использования значения по умолчанию. Значение по умолчанию установлено для систем, использующих небольшие транзакции, чтобы гарантировать, что они не используют чрезмерно много памяти.
MaxDMLOperationsPerTransaction устанавливает максимальное количество операций DML, которые могут быть выполнены в данной транзакции.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы целое число Значение по умолчанию 4096 Диапазон 32 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 9.2.0)
Каждый узел данных кластера требует записи транзакции для каждой активной транзакции в кластере. Задача координации транзакций распределяется между всеми узлами данных. Общее количество записей транзакций в кластере равно количеству транзакций в любом заданном узле, умноженному на количество узлов в кластере.
Записи транзакций распределяются по отдельным серверам MySQL. Каждый подключение к серверу MySQL требует как минимум одной записи транзакции, плюс дополнительный объект транзакции на каждую таблицу, к которой обращается это подключение. Это означает, что разумный минимум для общего количества транзакций в кластере можно выразить как
TotalNoOfConcurrentTransactions = (maximum number of tables accessed in any single transaction + 1) * number of SQL nodesПредположим, что 10 узлов SQL используют кластер. Единственное объединение, включающее 10 таблиц, требует 11 записей транзакции; если в транзакции имеется 10 таких объединений, то требуется 10 * 11 = 110 записей транзакции на один сервер MySQL или 110 * 10 = 1100 записей транзакции в целом. Каждый узел данных может быть готов обработать TotalNoOfConcurrentTransactions / количество узлов данных. Для кластера NDB с 4 узлами это означало бы установку
MaxNoOfConcurrentTransactionsна каждом узле данных до 1100 / 4 = 275. Кроме того, следует предусмотреть восстановление после сбоев, гарантируя, что одна группа узлов может вместить все одновременные транзакции; другими словами, MaxNoOfConcurrentTransactions каждого узла данных должно быть достаточно, чтобы охватить количество транзакций, равное TotalNoOfConcurrentTransactions / количество групп узлов. Если в этом кластере имеется одна группа узлов, тоMaxNoOfConcurrentTransactionsдолжно быть установлено в 1100 (то же самое, что и общее количество одновременных транзакций для всего кластера).Кроме того, каждая транзакция включает как минимум одну операцию; по этой причине значение, установленное для
MaxNoOfConcurrentTransactions, должно всегда быть не более значенияMaxNoOfConcurrentOperations.Этот параметр должен быть установлен в одинаковое значение для всех узлов данных кластера. Это связано с тем, что при сбое узла данных самый старый узел, который выжил, повторно создает состояние транзакции всех транзакций, которые выполнялись в вышедшем из строя узле.
Изменить это значение можно с помощью постепенного перезапуска, но объем трафика в кластере должен быть таким, чтобы во время этого процесса не происходило больше транзакций, чем меньше из старого и нового уровней.
Значение по умолчанию — 4096.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы целое число Значение по умолчанию 32К Диапазон 32 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 9.2.0)
Следует настроить значение этого параметра в соответствии с размером и количеством транзакций. При выполнении транзакций, которые включают только несколько операций и записей, значение по умолчанию для этого параметра обычно достаточно. При выполнении больших транзакций, включающих множество записей, обычно требуется увеличить его значение.
Записи сохраняются для каждой транзакции, обновляющей данные кластера, как в координаторе транзакций, так и в узлах, где выполняются фактические обновления. Эти записи содержат информацию о состоянии, необходимую для поиска записей UNDO для отката, очередей блокировок и других целей.
Этот параметр должен быть установлен как минимум на количество записей, которые необходимо одновременно обновлять в транзакциях, деленное на количество узлов данных кластера. Например, в кластере с четырьмя узлами данных, который, как ожидается, будет обрабатывать один миллион одновременных обновлений с использованием транзакций, вы должны установить это значение до 1000000 / 4 = 250000. Для повышения устойчивости к сбоям рекомендуется установить этот параметр на значение, достаточно высокое для того, чтобы отдельный узел данных мог обрабатывать нагрузку для своей группы узлов. Другими словами, вы должны установить значение, равное
total number of concurrent operations / number of node groups. (В случае наличия одной группы узлов это равно общему количеству одновременных операций для всего кластера.)Поскольку каждая транзакция всегда включает как минимум одну операцию, значение
MaxNoOfConcurrentOperationsдолжно всегда быть больше или равно значениюMaxNoOfConcurrentTransactions.Запросы чтения, которые устанавливают блокировки, также приводят к созданию записей операций. В отдельных узлах выделяется дополнительное место для случаев, когда распределение не является идеальным для узлов.
При использовании запросами уникального индекса хеширования фактически используется две записи операций на запись в транзакции. Первая запись представляет чтение в таблице индекса, а вторая обрабатывает операцию в основной таблице.
Значение по умолчанию — 32768.
Этот параметр фактически обрабатывает два значения, которые можно настроить отдельно. Первое из них определяет, сколько записей операций следует разместить в координаторе транзакций. Вторая часть определяет, сколько записей операций следует разместить локально в базе данных.
Очень большая транзакция, выполненная в восьмиузловом кластере, требует столько же записей операций в координаторе транзакций, сколько чтений, обновлений и удалений участвуют в транзакции. Однако записи операций распределяются по всем восьми узлам. Таким образом, если необходимо настроить систему для одной очень большой транзакции, разумно настроить две части по отдельности.
MaxNoOfConcurrentOperationsвсегда используется для расчета количества записей операций в части координатора транзакций узла.Также важно иметь представление о требованиях к памяти для записей операций. Они потребляют примерно 1 КБ на запись.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы целое число Значение по умолчанию UNDEFINED Диапазон 32 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 9.2.0)
По умолчанию этот параметр рассчитывается как 1,1 ×
MaxNoOfConcurrentOperations. Это подходит для систем с множеством одновременных транзакций, ни одна из которых не является очень большой. Если необходимо обработать одну очень большую транзакцию за раз и имеется много узлов, рекомендуется переопределить значение по умолчанию, явно указав этот параметр.Этот параметр устарел и может быть удален в будущих выпусках кластера NDB. Кроме того, этот параметр несовместим с параметром
TransactionMemory; если вы попытаетесь установить значения для обоих параметров в файле конфигурации кластера (config.ini), сервер управления откажется от запуска. -
MaxDMLOperationsPerTransactionВерсия (или более поздняя) NDB 9.2.0 Тип или единицы операции (DML) Значение по умолчанию 4294967295 Диапазон 32 - 4294967295 Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 9.2.0)
Этот параметр ограничивает размер транзакции. Транзакция прерывается, если для нее требуется более этого количества операций DML.
Значение этого параметра не может превышать значения, установленного для
MaxNoOfConcurrentOperations.
Временное хранилище транзакций. Следующий набор [ndbd] параметров используется для определения временного хранилища при выполнении оператора, который является частью транзакции кластера. Все записи освобождаются при завершении оператора и ожидания кластером подтверждения или отката.
Значения по умолчанию для этих параметров приемлемы для большинства ситуаций. Однако пользователям, которым необходимо поддерживать транзакции, включающие большое количество строк или операций, может потребоваться увеличить эти значения, чтобы повысить параллелизм в системе, в то время как пользователи, приложения которых требуют относительно небольшие транзакции, могут уменьшить значения, чтобы сэкономить память.
-
MaxNoOfConcurrentIndexOperationsВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 8К Диапазон 0 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Для запросов, использующих уникальный хэш-индекс, во время выполнения запроса используется другой временный набор записей операций. Этот параметр устанавливает размер этого пула записей. Таким образом, эта запись выделяется только во время выполнения части запроса. Как только эта часть будет выполнена, запись освобождается. Состояние, необходимое для обработки прерываний и подтверждений, обрабатывается обычными записями операций, где размер пула устанавливается параметром
MaxNoOfConcurrentOperations.Значение по умолчанию этого параметра составляет 8192. В редких случаях чрезвычайно высокой параллельности при использовании уникальных хэш-индексов может потребоваться увеличение этого значения. Использование меньшего значения возможно и может сэкономить память, если администратор базы данных уверен, что высокая степень параллельности для кластера не требуется.
Этот параметр устарел и может быть удален в будущих релизах NDB Cluster. Кроме того, этот параметр несовместим с параметром
TransactionMemory; если вы попытаетесь установить значения для обоих параметров в файле конфигурации кластера (config.ini), сервер управления откажется от запуска. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 4000 Диапазон 0 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Значение по умолчанию параметра
MaxNoOfFiredTriggersсоставляет 4000, чего достаточно для большинства ситуаций. В некоторых случаях его можно даже уменьшить, если администратор базы данных уверен, что потребность в параллельности в кластере невысока.Запись создается, когда выполняется операция, влияющая на уникальный хэш-индекс. Вставка или удаление записи в таблице с уникальными хэш-индексами или обновление столбца, являющегося частью уникального хэш-индекса, вызывает срабатывание вставки или удаления в таблице индекса. Полученная запись используется для представления операции таблицы индекса во время ожидания завершения исходной операции, которая ее вызвала. Эта операция кратковременна, но все же может потребовать большого количества записей в своем пуле в ситуациях с многими параллельными операциями записи в базовый столбец, содержащий набор уникальных хэш-индексов.
Этот параметр устарел и может быть удален в будущих релизах NDB Cluster. Кроме того, этот параметр несовместим с параметром
TransactionMemory; если вы попытаетесь установить значения для обоих параметров в файле конфигурации кластера (config.ini), сервер управления откажется от запуска. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 1М Диапазон 1К - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Память, на которую влияет этот параметр, используется для отслеживания операций, сработавших при обновлении таблиц индексов и чтении уникальных индексов. Эта память используется для хранения информации о ключе и столбцах для этих операций. Очень редко возникает необходимость изменения значения этого параметра от значения по умолчанию.
Значение по умолчанию для
TransactionBufferMemoryсоставляет 1 МБ.Обычные операции чтения и записи используют аналогичный буфер, использование которого еще более кратковременно. Параметр времени компиляции
ZATTRBUF_FILESIZE(найденный вndb/src/kernel/blocks/Dbtc/Dbtc.hpp) установлен в 4000 × 128 байт (500 КБ). Аналогичный буфер для информации о ключе,ZDATABUF_FILESIZE(также вDbtc.hpp) содержит 4000 × 16 = 62,5 КБ буферного пространства.Dbtc— модуль, обрабатывающий координацию транзакций.
Параметры выделения ресурсов транзакций. Параметры в следующем списке используются для выделения ресурсов транзакций в координаторе транзакций (DBTC). Если любое из этих значений установлено по умолчанию (0), то память транзакции выделяется на 25% от оценочного общего использования узлами данных для соответствующего ресурса. Фактические максимальные возможные значения для этих параметров обычно ограничены количеством памяти, доступной узлу данных; установка их не влияет на общее количество памяти, выделенной узлу данных. Кроме того, следует помнить, что они управляют количеством зарезервированных внутренних записей для узла данных независимо от любых настроек для MaxDMLOperationsPerTransaction, MaxNoOfConcurrentIndexOperations, MaxNoOfConcurrentOperations, MaxNoOfConcurrentScans, MaxNoOfConcurrentTransactions, MaxNoOfFiredTriggers, MaxNoOfLocalScans или TransactionBufferMemory (см. Параметры транзакций и Временное хранилище транзакций).
-
ReservedConcurrentIndexOperationsВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовой Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Количество одновременных операций с индексами, имеющих выделенные ресурсы на одном узле данных.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовой Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Количество одновременных операций, имеющих выделенные ресурсы в координаторах транзакций на одном узле данных.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовой Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Количество одновременных сканирований, имеющих выделенные ресурсы на одном узле данных.
-
ReservedConcurrentTransactionsВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовой Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Количество одновременных транзакций, имеющих выделенные ресурсы на одном узле данных.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовой Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Количество триггеров, имеющих выделенные ресурсы на одном узле ndbd(DB).
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовой Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Количество одновременных сканирований фрагментов, имеющих выделенные ресурсы на одном узле данных.
-
ReservedTransactionBufferMemoryВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовой Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Устарел Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Динамическое буферное пространство (в байтах) для данных ключей и атрибутов, выделяемых каждому узлу данных.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 0 Диапазон 0 - 16384G Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
ВажноРяд параметров конфигурации несовместимы с
TransactionMemory; невозможно установить одновременно какие-либо из этих параметров сTransactionMemory, и если вы попытаетесь это сделать, сервер управления не сможет запуститься (см. Параметры, несовместимые с TransactionMemory).Этот параметр определяет объем памяти (в байтах), выделяемой для транзакций на каждом узле данных. Установка памяти транзакций обрабатывается следующим образом:
Если задано
TransactionMemory, это значение используется для определения памяти транзакций.В противном случае память транзакций вычисляется так же, как и до NDB 8.0.
Параметры, несовместимые с TransactionMemory. Следующие параметры не могут использоваться одновременно с
TransactionMemoryи поэтому устарели:Явное задание любого из перечисленных параметров, когда
TransactionMemoryтакже установлен в файле конфигурации кластера (config.ini), не позволяет узлу управления запуститься.Для получения дополнительной информации о распределении ресурсов в узлах данных NDB Cluster см. Раздел 25.4.3.13, «Управление памятью узла данных».
Сканирование и буферизация. В модуле Dblqh (в ndb/src/kernel/blocks/Dblqh/Dblqh.hpp) есть дополнительные параметры [ndbd], которые влияют на операции чтения и обновления. К ним относятся ZATTRINBUF_FILESIZE, по умолчанию установленный в 10000 × 128 байт (1250 КБ), и ZDATABUF_FILE_SIZE, по умолчанию установленный в 10000*16 байт (примерно 156 КБ) буферного пространства. На сегодняшний день не поступало сообщений от пользователей и не было результатов наших собственных обширных тестов, которые бы свидетельствовали о необходимости увеличения любого из этих ограничений времени компиляции.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 256 Диапазон 1 - 992 Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр используется для расчета количества записей блокировок, используемых для обработки одновременных операций сканирования.
Устарело.
BatchSizePerLocalScanимеет сильную связь сBatchSize, определённым в узлах SQL. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 64М Диапазон 512К - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Это внутренний буфер, используемый для передачи сообщений внутри отдельных узлов и между узлами. Значение по умолчанию составляет 64 МБ.
Этот параметр редко требует изменения от значения по умолчанию.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 64 Диапазон 16 - 512 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Максимальный размер пакетного сканирования, используемый для построения внешних ключей. Увеличение значения этого параметра может ускорить построение внешних ключей, но одновременно может негативно повлиять на текущий трафик.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 256 Диапазон 2 - 500 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр используется для управления количеством одновременных сканирований, которые могут выполняться в кластере. Каждый координатор транзакций может обрабатывать количество параллельных сканирований, определённое этим параметром. Каждое запросу сканирования выполняется путём параллельного сканирования всех разделов. Каждое сканирование раздела использует запись сканирования в узле, где находится раздел, количество записей является значением этого параметра, умноженным на количество узлов. Кластер должен быть способен поддерживать
MaxNoOfConcurrentScansодновременных сканирований со всех узлов в кластере.Сканирования фактически выполняются в двух случаях. Первый из них происходит, когда нет хэшированных или упорядоченных индексов для обработки запроса, в этом случае запрос выполняется путём полного сканирования таблицы. Второй случай возникает, когда нет хэшированного индекса для поддержки запроса, но есть упорядоченный индекс. Использование упорядоченного индекса означает выполнение параллельного диапазонного сканирования. Порядок сохраняется только на локальных разделах, поэтому необходимо выполнить сканирование индекса по всем разделам.
Значение по умолчанию для
MaxNoOfConcurrentScansсоставляет 256. Максимальное значение равно 500. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 4 * MaxNoOfConcurrentScans * [# of data nodes] + 2 Диапазон 32 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Указывает количество записей локального сканирования, если многие сканирования не полностью паралелизованы. Когда количество записей локального сканирования не предоставлено, оно вычисляется следующим образом:
4 *
MaxNoOfConcurrentScans* [# data nodes] + 2Этот параметр устарел и может быть удален в будущих выпусках NDB Cluster. Кроме того, этот параметр несовместим с параметром
TransactionMemory; если вы попытаетесь установить значения для обоих параметров в файле конфигурации кластера (config.ini), сервер управления откажется от запуска. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 0 Диапазон 0 - 64 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр устанавливает параллелизацию, используемую в фазе копирования при перезапуске узла или перезапуске системы, когда узел, который только что начал работу, синхронизируется с узлом, который уже имеет текущие данные, копируя любые изменённые записи из узла, который является актуальным. Поскольку полная параллельность в таких случаях может привести к ситуациям перегрузки,
MaxParallelCopyInstancesпредоставляет способ снизить её. Значение по умолчанию для этого параметра равно 0. Это значение означает, что эффективная параллельность равна числу экземпляров LDM в только что запущенном узле, а также узле, обновляющем его. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 256 Диапазон 1 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Можно настроить максимальное количество параллельных сканирований (сканирования
TUPи сканированияTUX), разрешённых перед тем, как они начнут вставать в очередь для последовательной обработки. Можно увеличить это значение, чтобы воспользоваться любыми неиспользуемыми процессорами при выполнении большого количества сканирований параллельно и улучшить их производительность. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 64 Диапазон 16 - 512 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Максимальный размер пакетного сканирования, используемый для реорганизации разделов таблиц. Увеличение значения этого параметра может ускорить реорганизацию, но одновременно может негативно повлиять на текущий трафик.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 64 Диапазон 16 - 512 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Максимальный размер пакета сканирования, используемый для создания уникальных ключей. Увеличение значения этого параметра может ускорить такие построения за счёт более значительного влияния на текущий трафик.
Выделение памяти
| Версия (или более поздняя) | NDB 9.2.0 |
|---|---|
| Тип или единицы измерения | беззнаковое |
| Значение по умолчанию | 32М |
| Диапазон | 1М - 1Г |
| Устаревший | Да (в NDB 8.0) |
| Тип перезапуска | Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0) |
Этот параметр использовался в более старых версиях NDB Cluster, но не имеет эффекта в NDB 9.2. Он устарел и может быть удалён в будущих выпусках.
Несколько транспортеров
NDB выделяет несколько транспортеров для связи между парами узлов данных. Количество выделенных транспортеров может быть изменено путём установки подходящего значения для параметра NodeGroupTransporters, введённого в этом выпуске.
| Версия (или более поздняя) | NDB 9.2.0 |
|---|---|
| Тип или единицы измерения | целое число |
| Значение по умолчанию | 0 |
| Диапазон | 0 - 32 |
| Тип перезапуска | Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0) |
Этот параметр определяет количество транспортеров, используемых между узлами в одной группе узлов. Значение по умолчанию (0) означает, что количество используемых транспортеров равно количеству LDMs в узле. Этого должно быть достаточно для большинства случаев использования; поэтому редко необходимо изменять это значение от значения по умолчанию.
Установка NodeGroupTransporters на значение, большее, чем количество потоков LDM или количество потоков TC (в зависимости от того, какое из них больше), приводит к тому, что NDB использует максимальное из этих двух значений. Это означает, что значения больше этого фактически игнорируются.
Размер хеш-таблицы
| Версия (или более поздняя) | NDB 9.2.0 |
|---|---|
| Тип или единицы измерения | потоков LDM |
| Значение по умолчанию | 240 |
| Диапазон | 0 - 3840 |
| Тип перезапуска | Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0) |
Первоначальное назначение этого параметра заключалось в облегчении обновления, особенно понижения до и от очень старых выпусков с различными значениями по умолчанию для размера хеш-таблицы. Это не проблема при обновлении с NDB Cluster 7.3 (или более поздней версии) до более поздних версий.
Уменьшение этого параметра онлайн после создания или изменения любых таблиц с DefaultHashMapSize, равным 3840, в настоящее время не поддерживается.
Ведение журнала и создание контрольных точек. Следующие параметры [ndbd] контролируют поведение журналов и контрольных точек.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 16M Диапазон 4M - 1G Тип перезапуска Первоначальный перезапуск узла: Требуется повторный запуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)Установка этого параметра позволяет напрямую управлять размером файлов журнала redo. Это может быть полезно в ситуациях, когда NDB Cluster работает под высокой нагрузкой и не может достаточно быстро закрыть файлы журнала фрагментов, прежде чем попытаться открыть новые (одновременно может быть открыто только 2 файла журнала фрагментов); увеличение размера файлов журнала фрагментов дает кластеру больше времени, прежде чем ему придется открывать каждый новый файл журнала фрагментов. Значение по умолчанию для этого параметра равно 16M.
Для получения дополнительной информации о файлах журнала фрагментов см. описание для
NoOfFragmentLogFiles. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения файлы Значение по умолчанию 27 Диапазон 20 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр устанавливает начальное количество внутренних потоков, которые нужно выделить для открытых файлов.
Значение по умолчанию равно 27.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения [см. значения] Значение по умолчанию SPARSE Диапазон SPARSE, FULL Тип перезапуска Первоначальный перезапуск узла: Требуется повторный запуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)По умолчанию файлы журнала фрагментов создаются разреженно при выполнении начального запуска узла данных — то есть, в зависимости от используемой операционной системы и файловой системы, не все байты обязательно записываются на диск. Однако можно переопределить это поведение и принудительно записать все байты, независимо от используемого типа платформы и файловой системы, с помощью этого параметра.
InitFragmentLogFilesпринимает одно из двух значений:SPARSE. Файлы журнала фрагментов создаются разреженно. Это значение по умолчанию.FULL. Принудительно записываются все байты файла журнала фрагментов на диск.
В зависимости от вашей операционной системы и файловой системы, установка
InitFragmentLogFiles=FULLможет помочь устранить ошибки ввода-вывода при записи в журнал redo. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения логическое Значение по умолчанию true Диапазон ... Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Когда
true, включены частичные локальные контрольные точки: это означает, что каждая LCP записывает только часть полной базы данных, плюс любые записи, содержащие строки, измененные после последней LCP; если строки не изменились, LCP обновляет только файл управления LCP и не обновляет никакие файлы данных.Если
EnablePartialLcpотключено (false), каждая LCP использует только один файл и записывает полную контрольную точку; это требует минимального объема дискового пространства для LCP, но увеличивает нагрузку на запись для каждой LCP. Значение по умолчанию включено (true). Пропорцию пространства, используемого частичными LCPS, можно изменить с помощью настройки параметра конфигурацииRecoveryWork.Для получения дополнительной информации о файлах и каталогах, используемых для полных и частичных LCP, см. NDB Cluster Data Node File System Directory.
Установка этого параметра в
falseтакже отключает расчет скорости записи на диск, используемый адаптивным механизмом управления LCP. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения секунда Значение по умолчанию 180 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Контроллер сканирования фрагментов локальной контрольной точки периодически проверяет отсутствие прогресса в каждом сканировании фрагмента, выполняемом в рамках локальной контрольной точки, и выключает узел, если прогресса нет после истечения заданного времени. Этот интервал можно установить с помощью параметра конфигурации узла данных
LcpScanProgressTimeout, который устанавливает максимальное время, в течение которого локальная контрольная точка может быть заблокирована, прежде чем контроллер сканирования фрагментов LCP выключит узел.Значение по умолчанию — 60 секунд (обеспечивает совместимость с предыдущими версиями). Установка этого параметра в 0 полностью отключает контроллер сканирования фрагментов LCP.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения беззнаковое Значение по умолчанию 0 Диапазон 20 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр устанавливает верхний предел количества внутренних потоков, которые нужно выделить для открытых файлов. Любая ситуация, требующая изменения этого параметра, должна быть зарегистрирована как ошибка.
Значение по умолчанию равно 0. Однако минимальное значение, на которое можно установить этот параметр, равно 20.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 25 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр устанавливает максимальное количество ошибок, записываемых в журнал ошибок, а также максимальное количество файлов трассировки, которые сохраняются перед перезаписью существующих. Файлы трассировки генерируются, когда узел по какой-либо причине аварийно завершает работу.
Значение по умолчанию равно 25, что устанавливает эти максимумы в 25 сообщений об ошибках и 25 файлов трассировки.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения секунды Значение по умолчанию 0 Диапазон 0 - 600 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
При параллельном восстановлении узлов данных фактически копируются и синхронизируются только данные таблиц; синхронизация метаданных, таких как словарь и информация о контрольных точках, выполняется последовательно. Кроме того, восстановление информации о словаре и контрольных точках не может выполняться параллельно с выполнением локальных контрольных точек. Это означает, что при одновременном запуске или перезапуске многих узлов данных узлы данных могут быть вынуждены ждать выполнения локальной контрольной точки, что может привести к увеличению времени восстановления узлов.
Можно заставить локальную контрольную точку задерживаться, чтобы позволить большему количеству (и, возможно, всем) узлам данных завершить синхронизацию метаданных; как только синхронизация метаданных каждого узла данных завершится, все узлы данных могут восстановить данные таблиц параллельно, даже во время выполнения локальной контрольной точки. Для принудительной задержки задайте
MaxLCPStartDelay, который определяет количество секунд, которое кластер может ждать, чтобы начать локальную контрольную точку, в то время как узлы данных продолжают синхронизировать метаданные. Этот параметр должен быть установлен в разделе[ndbd default]файлаconfig.ini, чтобы он был одинаковым для всех узлов данных. Максимальное значение равно 600; значение по умолчанию — 0. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 16 Диапазон 3 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с
--initial. (NDB 9.2.0)Этот параметр задаёт количество файлов журнала REDO для узла, а значит, и объём выделенного пространства для протоколирования REDO. Поскольку файлы журнала REDO организованы по кольцу, крайне важно, чтобы первый и последний файлы журнала в наборе (иногда называемые файлами журнала “голова” и “хвост” соответственно) не совпадали. Если они приближаются друг к другу слишком сильно, узел начинает прерывать все транзакции, включающие обновления, из-за отсутствия места для новых записей в журнале.
Запись в журнале
REDOне удаляется до тех пор, пока не будут завершены обе необходимые локальные контрольные точки с момента вставки этой записи. Частота контрольных точек определяется собственным набором параметров конфигурации, рассматриваемым в другом месте данной главы.Значение параметра по умолчанию равно 16, что по умолчанию означает 16 наборов из 4 файлов по 16 МБ, в общей сложности 1024 МБ. Размер отдельных файлов журнала настраивается с помощью параметра
FragmentLogFileSize. В сценариях, требующих большого количества обновлений, значениеNoOfFragmentLogFilesможет потребоваться установить до 300 или даже выше, чтобы обеспечить достаточное пространство для журналов REDO.Если выполнение контрольных точек замедляется и в базу данных производится так много записей, что файлы журнала заполняются и хвост журнала не может быть обрезана без риска нарушения восстановления, все транзакции обновления прерываются с внутренней ошибкой 410 (
Out of log file space temporarily). Это условие сохраняется до тех пор, пока контрольная точка не завершится, и хвост журнала не будет перемещён вперёд.ВажноЭтот параметр нельзя изменить “на лету”; необходимо перезапустить узел, используя
--initial. Если вы хотите изменить это значение для всех узлов данных в работающем кластере, вы можете сделать это с помощью поэтапного перезапуска узлов (используя--initialпри запуске каждого узла данных). -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 60 Диапазон 25 - 100 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Процент накладных расходов на хранение для файлов LCP. Этот параметр оказывает влияние только тогда, когда
EnablePartialLcpимеет значение true, то есть только при включённых частичных локальных контрольных точках. Более высокое значение означает:Меньше записей записывается для каждой LCP, LCP используют больше места
Во время перезапусков требуется больше работы
Более низкое значение для
RecoveryWorkозначает:Больше записей записывается во время каждой LCP, но LCP занимают меньше места на диске.
Меньше работы во время перезапуска, и, следовательно, более быстрые перезапуски, в ущерб большей работе во время обычных операций
Например, установка
RecoveryWorkв значение 60 означает, что общий размер LCP приблизительно в 1 + 0,6 = 1,6 раз больше размера данных, подлежащих контрольной точке. Это означает, что в фазе восстановления при перезапуске требуется на 60% больше работы, чем при перезапуске с использованием полных контрольных точек. (Это более чем компенсируется в другие фазы перезапуска, так что перезапуск в целом быстрее при использовании частичных LCP, чем при использовании полных LCP.) Для того, чтобы не заполнить журнал redo, необходимо записывать в 1 + (1 /RecoveryWork) раз быстрее скорости изменения данных во время контрольных точек — таким образом, приRecoveryWork= 60 необходимо записывать примерно в 1 + (1 / 0,6) = 2,67 раз быстрее. Другими словами, если данные записываются со скоростью 10 МБайт в секунду, контрольная точка должна записываться примерно со скоростью 26,7 МБайт в секунду.Установка
RecoveryWork= 40 означает, что требуется только в 1,4 раза больше общего размера LCP (а это значит, что фаза восстановления занимает на 10–15 процентов меньше времени. В этом случае скорость записи контрольной точки составляет в 3,5 раза скорость изменения.Дистрибутив NDB включает программу тестирования для моделирования LCP.
lcp_simulator.ccможно найти вstorage/ndb/src/kernel/blocks/backup/. Для компиляции и запуска на платформах Unix выполните команды, показанные здесь:$>
gcc lcp_simulator.cc$>./a.outЭта программа не зависит ни от чего, кроме
stdio.h, и не требует подключения к кластеру NDB или серверу MySQL. По умолчанию она моделирует 300 LCP (три набора по 100 LCP, каждый из которых состоит из вставок, обновлений и удалений по очереди), сообщая о размере LCP после каждого из них. Вы можете изменить моделирование, изменив значенияrecovery_work,insert_workиdelete_workв исходном коде и перекомпилировав его. Дополнительную информацию см. в исходном коде программы. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 40 Диапазон 0 - 70 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Процент
RecoveryWork, используемый для вставленных строк. Более высокое значение увеличивает количество записей во время локальной контрольной точки и уменьшает общий размер LCP. Более низкое значение уменьшает количество записей во время LCP, но приводит к увеличению используемого для LCP пространства, что означает более длительное восстановление. Этот параметр оказывает влияние только тогда, когдаEnablePartialLcpимеет значение true, то есть только при включённых частичных локальных контрольных точках.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения логическое значение Значение по умолчанию true Диапазон ... Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Включить адаптивную скорость контрольных точек для управления использованием журнала переигрывания.
При включенном состоянии (по умолчанию)
EnableRedoControlпредоставляет узлам данных большую гибкость в отношении скорости записи LCP на диск. Более конкретно, включение этого параметра означает, что можно использовать более высокие скорости записи, чтобы LCP завершались и журналы переигрывания обрезались быстрее, тем самым сокращая время восстановления и потребности в дисковом пространстве. Эта функция позволяет узлам данных лучше использовать более высокую скорость ввода-вывода и большую пропускную способность современных устройств хранения на твердотельных накопителях (SSD) и протоколов, таких как твердотельные накопители (SSD) с использованием NVMe.Если
NDBразвернуто на системах, ввода-вывода или пропускной способности которых ограничены по сравнению с системами, использующими твердотельные технологии, например, теми, которые используют обычные жесткие диски (HDD), механизмEnableRedoControlможет легко привести к насыщению подсистемы ввода-вывода, увеличивая время ожидания для входных и выходных данных узла данных. В частности, это может вызвать проблемы со структурами данных NDB Disk, которые имеют табличные пространства или группы файлов журналов, которые совместно используют ограниченную подсистему ввода-вывода с файлами LCP и журналов переигрывания узлов данных; такие проблемы потенциально могут привести к сбоям узла или кластера из-за ошибок остановки GCP. УстановитеEnableRedoControlвfalse, чтобы отключить его в таких ситуациях. УстановкаEnablePartialLcpвfalseтакже отключает адаптивное вычисление.
Объекты метаданных. Следующий набор [ndbd] параметров определяет размеры пулов для объектов метаданных, используемых для определения максимального количества атрибутов, таблиц, индексов и объектов триггеров, используемых индексами, событиями и репликацией между кластерами.
Они служат лишь “предложениями” кластеру, и все, что не указано, возвращаются к значениям по умолчанию, показанным.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 1000 Диапазон 32 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Этот параметр устанавливает рекомендуемое максимальное количество атрибутов, которые могут быть определены в кластере; как и
MaxNoOfTables, он не предназначен для работы в качестве жесткого верхнего предела.(В более старых выпусках NDB Cluster этот параметр иногда рассматривался как жесткий предел для определенных операций. Это вызывало проблемы с репликацией NDB Cluster, когда было возможно создать больше таблиц, чем можно было реплицировать, и иногда приводило к путанице, когда было возможно [или невозможно, в зависимости от обстоятельств] создать больше, чем
MaxNoOfAttributesатрибутов.)Значение по умолчанию равно 1000, а минимальное возможное значение — 32. Максимальное значение — 4294967039. Каждый атрибут потребляет около 200 байт памяти на узел из-за того, что все метаданные полностью реплицируются на серверах.
При установке
MaxNoOfAttributesважно заранее подготовиться к любым операциямALTER TABLE, которые вы можете захотеть выполнить в будущем. Это связано с тем, что во время выполнения операцииALTER TABLEнад таблицей кластера используется в три раза больше атрибутов, чем в исходной таблице, и хорошей практикой является разрешение в два раза большего количества. Например, если таблица NDB Cluster, имеющая наибольшее количество атрибутов (greatest_number_of_attributes), имеет 100 атрибутов, хорошей отправной точкой для значенияMaxNoOfAttributesбудет6 *.greatest_number_of_attributes= 600Вы также должны оценить среднее количество атрибутов на таблицу и умножить это на
MaxNoOfTables. Если это значение больше, чем значение, полученное в предыдущем абзаце, вы должны использовать вместо него большее значение.Предполагая, что вы можете создавать все нужные таблицы без каких-либо проблем, вы также должны проверить, достаточно ли этого числа, попытавшись выполнить фактическую операцию
ALTER TABLEпосле настройки параметра. Если это не удалось, увеличьте значениеMaxNoOfAttributesеще на кратноеMaxNoOfTablesи проверьте его снова. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 128 Диапазон 8 - 20320 Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Объект таблицы выделяется для каждой таблицы и для каждого уникального хеш-индекса в кластере. Этот параметр устанавливает рекомендуемое максимальное количество объектов таблиц для всего кластера; как и
MaxNoOfAttributes, он не предназначен для работы в качестве жесткого верхнего предела.(В более старых выпусках NDB Cluster этот параметр иногда рассматривался как жесткий предел для определенных операций. Это вызывало проблемы с репликацией NDB Cluster, когда было возможно создать больше таблиц, чем можно было реплицировать, и иногда приводило к путанице, когда было возможно [или невозможно, в зависимости от обстоятельств] создать больше, чем
MaxNoOfTablesтаблиц.)Для каждого атрибута, имеющего тип данных
BLOB, используется дополнительная таблица для хранения большей части данныхBLOB. Эти таблицы также должны учитываться при определении общего количества таблиц.Значение этого параметра по умолчанию равно 128. Минимум — 8, а максимум — 20320. Каждый объект таблицы потребляет приблизительно 20 КБ на узел.
ПримечаниеСумма
MaxNoOfTables,MaxNoOfOrderedIndexesиMaxNoOfUniqueHashIndexesне должна превышать232 − 2(4294967294). -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 128 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Для каждого упорядоченного индекса в кластере выделяется объект, описывающий индексируемые данные и их сегменты хранения. По умолчанию каждый так определенный индекс также определяет упорядоченный индекс. Каждый уникальный индекс и первичный ключ имеют как упорядоченный, так и хеш-индекс.
MaxNoOfOrderedIndexesустанавливает общее количество упорядоченных индексов, которые могут использоваться в системе в любой момент времени.Значение этого параметра по умолчанию равно 128. Каждый объект индекса потребляет приблизительно 10 КБ данных на узел.
ПримечаниеСумма
MaxNoOfTables,MaxNoOfOrderedIndexesиMaxNoOfUniqueHashIndexesне должна превышать232 − 2(4294967294). -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 64 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Для каждого уникального индекса, который не является первичным ключом, выделяется специальная таблица, которая сопоставляет уникальный ключ с первичным ключом индексированной таблицы. По умолчанию для каждого уникального индекса также определяется упорядоченный индекс. Чтобы предотвратить это, необходимо указать параметр
USING HASHпри определении уникального индекса.Значение по умолчанию равно 64. Каждый индекс потребляет приблизительно 15 КБ на узел.
ПримечаниеСумма
MaxNoOfTables,MaxNoOfOrderedIndexesиMaxNoOfUniqueHashIndexesне должна превышать232 − 2(4294967294). -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 768 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Внутренние триггеры обновления, вставки и удаления выделяются для каждого уникального хеш-индекса. (Это означает, что для каждого уникального хеш-индекса создаются три триггера.) Однако для упорядоченного индекса требуется только один объект триггера. Резервные копии также используют три объекта триггера для каждой обычной таблицы в кластере.
Репликация между кластерами также использует внутренние триггеры.
Этот параметр устанавливает максимальное количество объектов триггеров в кластере.
Значение по умолчанию равно 768.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы беззнаковое Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Каждая
NDBтаблица в кластере NDB требует подписки в ядре NDB. Для некоторых приложений NDB API может быть необходимо или желательно изменить этот параметр. Однако для нормального использования с серверами MySQL, действующими как узлы SQL, это не нужно.Значение по умолчанию для
MaxNoOfSubscriptionsравно 0, что эквивалентноMaxNoOfTables. Каждая подписка потребляет 108 байт. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы беззнаковое Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр представляет интерес только при использовании репликации NDB Cluster. Значение по умолчанию равно 0. Оно обрабатывается как
2 * MaxNoOfTables + 2 * [number of API nodes]. Существует одна подписка на каждуюNDBтаблицу для каждого из двух серверов MySQL (один — источник репликации, другой — реплика). Каждый подписчик использует 16 байт памяти.При использовании циклической репликации, репликации с несколькими источниками и других конфигурациях репликации, включающих более 2 серверов MySQL, необходимо увеличить этот параметр до количества процессов mysqld, включенных в репликацию (часто, но не всегда, это совпадает с количеством кластеров). Например, если у вас есть конфигурация циклической репликации, использующая три кластера NDB, к каждому из которых подключен по одному процессу mysqld, и каждый из этих процессов mysqld выступает в качестве источника и реплики, вы должны установить
MaxNoOfSubscribersравным3 * MaxNoOfTables.Дополнительную информацию см. в разделе 25.7, “Репликация NDB Cluster”.
-
MaxNoOfConcurrentSubOperationsВерсия (или более поздняя) NDB 9.2.0 Тип или единицы беззнаковое Значение по умолчанию 256 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр устанавливает предел для количества операций, которые могут выполняться всеми узлами API в кластере одновременно. Значение по умолчанию (256) достаточно для обычных операций и может потребовать корректировки только в сценариях, где есть большое количество узлов API, каждый из которых выполняет большое количество операций одновременно.
Булевы параметры. Поведение узлов данных также зависит от набора [ndbd] параметров, принимающих булевы значения. Эти параметры могут быть указаны как TRUE, установив их равными 1 или Y, и как FALSE, установив их равными 0 или N.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы boolean Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Установка этого параметра в
1приводит к сжатию локальных файлов контрольных точек. Используемое сжатие эквивалентно gzip --fast и может сэкономить 50% или более места на узле данных для хранения несжатых файлов контрольных точек. Сжатые LCP могут быть включены для отдельных узлов данных или для всех узлов данных (установив этот параметр в разделе[ndbd default]файлаconfig.ini).ВажноВы не можете восстановить сжатую локальную контрольную точку в кластере, работающем с версией MySQL, которая не поддерживает эту функцию.
Значение по умолчанию равно
0(выключено). -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы boolean Значение по умолчанию true Диапазон true, false Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
При включенном параметре (по умолчанию) узел данных завершается всякий раз, когда встречает повреждённую кортеж.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы true|false (1|0) Значение по умолчанию false Диапазон true, false Тип перезапуска Первоначальный перезапуск системы: Требуется полное завершение работы кластера, очистка и восстановление файловой системы кластера из резервной копии, а затем перезапуск кластера. (NDB 9.2.0)
Возможно указать таблицы NDB Cluster как diskless, что означает, что таблицы не сохраняются на диск и не ведётся журналирование. Такие таблицы существуют только в оперативной памяти. Следствием использования безнакопительных таблиц является то, что ни таблицы, ни записи в этих таблицах не сохраняются после сбоя. Однако при работе в режиме без дисков можно запустить ndbd на компьютере без диска.
ВажноЭта функция приводит к тому, что весь кластер работает в режиме без дисков.
При включении этой функции, онлайн-резервное копирование NDB Cluster отключено. Кроме того, частичный запуск кластера невозможен.
Disklessпо умолчанию отключено. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы unsigned Значение по умолчанию 0 Диапазон 0 - 1 Тип перезапуска Первоначальный перезапуск узла: Требуется поэтапный перезапуск кластера; каждый узел данных должен быть перезапущен с
--initial. (NDB 9.2.0)Шифрование файлов LCP и табличного пространства, включая журналы отката и журналы переписывания. Отключено по умолчанию (
0); установите в1, чтобы включить.ВажноПри включенном шифровании файловой системы необходимо указать пароль для каждого узла данных при его запуске, используя один из вариантов
--filesystem-passwordили--filesystem-password-from-stdin. В противном случае узел данных не сможет запуститься.Дополнительную информацию см. в Разделе 25.6.14, «Шифрование файловой системы для NDB Cluster».
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы числовое Значение по умолчанию 1 Диапазон 0 - 1 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Выделить память для данного узла данных после подключения к серверу управления. Включено по умолчанию.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы numeric Значение по умолчанию 0 Диапазон 0 - 2 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Для ряда операционных систем, включая Solaris и Linux, можно заблокировать процесс в памяти и тем самым избежать любой подкачки на диск. Это может быть использовано для обеспечения характеристик кластера в реальном времени.
Этот параметр принимает одно из целочисленных значений
0,1или2, которые действуют, как показано в следующем списке:0: Отключает блокировку. Это значение по умолчанию.1: Выполняет блокировку после выделения памяти для процесса.2: Выполняет блокировку до выделения памяти для процесса.
Если операционная система не настроена на разрешение не привилегированным пользователям блокировать страницы, то процесс узла данных, использующий этот параметр, может потребоваться запускать от имени системного администратора. (
LockPagesInMainMemoryиспользует функциюmlockall. Начиная с ядра Linux 2.6.9, не привилегированные пользователи могут блокировать память в ограниченном объеме, определяемомmax locked memory. Для получения дополнительной информации см. ulimit -l и http://linux.die.net/man/2/mlock).ПримечаниеВ более старых версиях NDB Cluster этот параметр был булевым.
0илиfalseбыло значением по умолчанию и отключало блокировку.1илиtrueвключало блокировку процесса после выделения его памяти. NDB Cluster 9.2 рассматриваетtrueилиfalseдля значения этого параметра как ошибку.ВажноНачиная с
glibc2.10,glibcиспользует арены на уровне потоков для уменьшения конкуренции за блокировки в общем пуле, что потребляет оперативную память. В общем случае процесс узла данных не нуждается в аренах на уровне потоков, поскольку он не выполняет никакого выделения памяти после запуска. (Это различие в аллокаторах, по-видимому, не оказывает существенного влияния на производительность.)Поведение
glibcдолжно быть конфигурируемым с помощью переменной средыMALLOC_ARENA_MAX, но ошибка в этом механизме доglibc2.16 означала, что эта переменная не могла быть установлена меньше 8, так что потерянную память нельзя было вернуть. (Ошибка #15907219; см. также http://sourceware.org/bugzilla/show_bug.cgi?id=13137 для получения дополнительной информации об этой проблеме.)Одним из возможных обходных путей этой проблемы является использование переменной среды
LD_PRELOADдля предварительной загрузки библиотеки выделения памятиjemalloc, чтобы заменить ту, которая поставляется сglibc. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы boolean Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Включение этого параметра заставляет
NDBпытаться использоватьO_DIRECTзаписи для LCP, резервных копий и журналов повторной записи, часто снижая использование kswapd и процессора. При использовании NDB Cluster в Linux включитеODirect, если вы используете ядро 2.6 или более поздней версии.ODirectотключен по умолчанию. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы boolean Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Когда этот параметр включен, записи журнала повторной записи выполняются таким образом, что каждое завершенное запись в файловой системе обрабатывается как вызов
fsync. Настройка этого параметра игнорируется, если выполняется хотя бы одно из следующих условий:ODirectне включен.InitFragmentLogFilesустановлен вSPARSE.
Отключен по умолчанию.
-
RequireCertificateВерсия (или более поздняя) NDB 9.2.0 Тип или единицы boolean Значение по умолчанию false Диапазон ... Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Если этот параметр установлен в
true, узел данных ищет ключ и действительный и актуальный сертификат в пути поиска TLS и не может запуститься, если не найдет их. -
RequireTlsВерсия (или более поздняя) NDB 9.2.0 Тип или единицы boolean Значение по умолчанию false Диапазон ... Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Если этот параметр установлен в
true, соединения с этим узлом данных должны быть аутентифицированы с использованием TLS. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы error code Значение по умолчанию 2 Диапазон 0 - 4 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Эта функция доступна только при сборке отладочной версии, где можно вставлять ошибки в выполнение отдельных блоков кода в рамках тестирования.
Эта функция отключена по умолчанию.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения boolean Значение по умолчанию 1 Диапазон 0, 1 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Данный параметр определяет, должен ли процесс узла данных завершиться или выполнить автоматический перезапуск при возникновении ошибки.
Значение параметра по умолчанию равно 1; это означает, что по умолчанию ошибка приводит к остановке процесса узла данных.
При возникновении ошибки и значении
StopOnErrorравном 0, процесс узла данных перезапускается.Пользователи MySQL Cluster Manager должны обратить внимание, что, когда
StopOnErrorравно 1, это предотвращает агент MySQL Cluster Manager от перезапуска узлов данных после выполнения собственного перезапуска и восстановления. См. Запуск и остановка агента в Linux для получения дополнительной информации. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения boolean Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Включить соединение с общим запоминающим устройством между данным узлом данных и узлом API, также работающим на этом узле. Установите 1 для включения.
Управление таймаутами, интервалами и кэшированием диска
Существует ряд [ndbd] параметров, определяющих таймауты и интервалы между различными действиями в узлах данных кластера. Большинство значений таймаутов указаны в миллисекундах. Любые исключения из этого правила упоминаются при необходимости.
-
Версия (или позже) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 6000 Диапазон 70 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 9.2.0)
Чтобы предотвратить зависание основного потока в бесконечном цикле, поток «сторож» проверяет основной поток. Этот параметр задает количество миллисекунд между проверками. Если процесс остается в том же состоянии после трех проверок, поток-сторож завершает его.
Этот параметр легко изменить в экспериментальных целях или для адаптации к местным условиям. Его можно указать для каждого узла, хотя, кажется, нет веских причин для этого.
Время ожидания по умолчанию составляет 6000 миллисекунд (6 секунд).
-
TimeBetweenWatchDogCheckInitialВерсия (или позже) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 6000 Диапазон 70 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 9.2.0)
Это похоже на параметр
TimeBetweenWatchDogCheck, за исключением того, чтоTimeBetweenWatchDogCheckInitialуправляет временем между проверками выполнения внутри узла хранения на ранних этапах запуска, когда выделяется память.Время ожидания по умолчанию составляет 6000 миллисекунд (6 секунд).
-
Версия (или позже) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 30000 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 9.2.0)
Этот параметр указывает, как долго кластер ожидает запуска всех узлов данных, прежде чем будет вызвана процедура инициализации кластера. Это время ожидания используется для предотвращения частичного запуска кластера, когда это возможно.
Этот параметр переопределяется при выполнении начального запуска или начального перезапуска кластера.
Значение по умолчанию составляет 30000 миллисекунд (30 секунд). 0 отключает время ожидания, в этом случае кластер может запуститься только если все узлы доступны.
-
Версия (или позже) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 9.2.0)
Если кластер готов к запуску после ожидания
StartPartialTimeoutмиллисекунд, но все еще может находиться в раздробленном состоянии, кластер ожидает, пока не истечет и это время ожидания. ЕслиStartPartitionedTimeoutустановлено в 0, кластер ожидает бесконечно (232−1 мс или приблизительно 49,71 дня).Этот параметр переопределяется при выполнении начального запуска или начального перезапуска кластера.
-
Версия (или позже) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 9.2.0)
Если узел данных не завершил свою процедуру запуска в течение времени, указанного этим параметром, запуск узла завершается неудачей. Установка этого параметра в 0 (значение по умолчанию) означает, что время ожидания узла данных не применяется.
Для ненулевых значений этот параметр измеряется в миллисекундах. Для узлов данных, содержащих очень большие объемы данных, этот параметр следует увеличить. Например, в случае узла данных, содержащего несколько гигабайт данных, для выполнения перезапуска узла может потребоваться период до 10-15 минут (то есть 600000-1000000 миллисекунд).
-
Версия (или позже) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 15000 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 9.2.0)
Когда узел данных настроен с помощью
Nodegroup = 65536, считается, что он не назначен ни одной группе узлов. После этого кластер ожидаетStartNoNodegroupTimeoutмиллисекунд, затем обрабатывает такие узлы так, как если бы они были добавлены в список, переданный в параметр--nowait-nodes, и запускается. Значение по умолчанию —15000(то есть сервер управления ожидает 15 секунд). Установка этого параметра равной0означает, что кластер будет ждать бесконечно.StartNoNodegroupTimeoutдолжно быть одинаковым для всех узлов данных в кластере; по этой причине его всегда следует устанавливать в разделе[ndbd default]файлаconfig.ini, а не для отдельных узлов данных.Для получения дополнительной информации см. Раздел 25.6.7, «Добавление узлов данных кластера NDB в режиме онлайн».
-
Версия (или позже) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 5000 Диапазон 10 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 9.2.0)
Одним из основных методов обнаружения неработающих узлов является использование сигналов «сердцебиения». Этот параметр указывает, как часто отправляются сигналы «сердцебиения» и как часто ожидается их получение. Сигналы «сердцебиения» нельзя отключить.
После пропуска четырех интервалов «сердцебиения» подряд узел объявляется нерабочим. Таким образом, максимальное время обнаружения отказа с помощью механизма «сердцебиения» составляет пять интервалов «сердцебиения».
Интервал «сердцебиения» по умолчанию составляет 5000 миллисекунд (5 секунд). Этот параметр не должен резко меняться и не должен сильно отличаться у разных узлов. Если один узел использует 5000 миллисекунд, а узел, за ним наблюдающий, использует 1000 миллисекунд, очевидно, что узел объявляется нерабочим очень быстро. Этот параметр может быть изменен во время онлайн-обновления программного обеспечения, но только с небольшими приращениями.
См. также сетевое взаимодействие и задержки, а также описание параметра конфигурации
ConnectCheckIntervalDelay.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения миллисекунды По умолчанию 1500 Диапазон 100 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Каждый узел данных отправляет сигналы о работоспособности каждому серверу MySQL (узлу SQL), чтобы убедиться, что он остается с ним в контакте. Если сервер MySQL не отправляет сигнал о работоспособности вовремя, он объявляется «мёртвым», в этом случае все текущие транзакции завершаются, и все ресурсы освобождаются. Узел SQL не может повторно подключиться, пока не завершены все действия, инициированные предыдущим экземпляром сервера MySQL. Три критерия для определения работоспособности такие же, как описано для
HeartbeatIntervalDbDb.Значение по умолчанию составляет 1500 миллисекунд (1,5 секунды). Этот интервал может отличаться у отдельных узлов данных, так как каждый узел данных наблюдает за подключенными к нему серверами MySQL независимо от других узлов данных.
Для получения дополнительной информации см. Сеть связи и задержка.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовое По умолчанию 0 Диапазон 0 - 65535 Тип перезапуска Перезапуск системы: Требуется полная остановка и перезапуск кластера. (NDB 9.2.0)
Узлы данных отправляют сигналы о работоспособности друг другу по кругу, при этом каждый узел данных отслеживает предыдущий. Если узел данных не обнаруживает сигнал о работоспособности от предыдущего узла, этот узел объявляет предыдущий узел в круге «мёртвым» (то есть больше не доступным для кластера). Определение того, что узел данных является мёртвым, происходит глобально; другими словами, как только узел данных объявлен мёртвым, все узлы в кластере так его и рассматривают.
Возможны ситуации, когда сигналы о работоспособности между узлами данных, находящимися на разных хостах, слишком медленные по сравнению с сигналами о работоспособности между другими парами узлов (например, из-за очень низкого интервала сигналов о работоспособности или временной проблемы с соединением), в результате чего узел данных объявляется мёртвым, даже если он по-прежнему может функционировать как часть кластера.
В такой ситуации порядок, в котором передаются сигналы о работоспособности между узлами данных, может иметь значение для того, объявляется ли конкретный узел данных мёртвым или нет. Если такое объявление происходит без необходимости, это может привести к ненужной потере группы узлов и, таким образом, к отказу кластера.
Рассмотрим конфигурацию с четырьмя узлами данных A, B, C и D, работающими на двух компьютерах
host1иhost2, и что эти узлы данных образуют две группы узлов, как показано в следующей таблице:Таблица 25.9 Четыре узла данных A, B, C, D, работающие на двух компьютерах host1, host2; каждый узел данных принадлежит одной из двух групп узлов.
Таблица 25.9 Четыре узла данных A, B, C, D, работающие на двух компьютерах host1, host2; каждый узел данных принадлежит одной из двух групп узлов. Группа узлов Узлы, работающие на host1Узлы, работающие на host2Группа узлов 0: Узел A Узел B Группа узлов 1: Узел C Узел D Предположим, что сигналы о работоспособности передаются в порядке A->B->C->D->A. В этом случае потеря сигнала о работоспособности между хостами приводит к тому, что узел B объявляет узел A мёртвым, а узел C объявляет узел B мёртвым. Это приводит к потере группы узлов 0, и кластер выходит из строя. С другой стороны, если порядок передачи — A->B->D->C->A (и все остальные условия остаются такими же, как и ранее), потеря сигнала о работоспособности приводит к тому, что узлы A и D объявляются мёртвыми; в этом случае каждая группа узлов имеет один уцелевший узел, и кластер остаётся работоспособным.
Параметр конфигурации
HeartbeatOrderпозволяет пользователю настроить порядок передачи сигналов о работоспособности. Значение по умолчанию дляHeartbeatOrder— ноль; использование значения по умолчанию на всех узлах данных приводит к тому, что порядок передачи сигналов о работоспособности определяетсяNDB. Если этот параметр используется, он должен быть установлен на ненулевое значение (максимум 65535) для каждого узла данных в кластере, и это значение должно быть уникальным для каждого узла данных; это приводит к тому, что передача сигналов о работоспособности происходит от узла данных к узлу данных в порядке их значенийHeartbeatOrderот наименьшего к наибольшему (а затем непосредственно от узла данных с наибольшим значениемHeartbeatOrderк узлу данных с наименьшим значением, чтобы завершить круг). Значения не обязательно должны быть последовательными. Например, чтобы принудительно установить порядок передачи сигналов о работоспособности A->B->D->C->A в описанном ранее сценарии, можно установить значенияHeartbeatOrder, как показано здесь:Таблица 25.10 Значения HeartbeatOrder для принудительного задания порядка перехода сигналов о работоспособности A->B->D->C->A.
Таблица 25.10 Значения HeartbeatOrder для принудительного задания порядка перехода сигналов о работоспособности A->B->D->C->A. Узел HeartbeatOrderЗначениеA 10 B 20 C 30 D 25 Чтобы использовать этот параметр для изменения порядка передачи сигналов о работоспособности в работающем кластере NDB, необходимо сначала установить
HeartbeatOrderдля каждого узла данных в кластере в глобальной конфигурации (config.ini) файле (или файлах). Чтобы изменения вступили в силу, необходимо выполнить одно из следующих действий:Полная остановка и перезапуск всего кластера.
Два поэтапных перезапуска кластера подряд. Все узлы должны быть перезапущены в том же порядке при обоих поэтапных перезапусках.
Вы можете использовать
DUMP 908для наблюдения за влиянием этого параметра в журналах узлов данных. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения миллисекунды По умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Этот параметр позволяет проверять подключения между узлами данных после того, как один из них не прошёл проверку сигналов о работоспособности в течение 5 интервалов до
HeartbeatIntervalDbDbмиллисекунд.Такой узел данных, который далее не отвечает в течение интервала
ConnectCheckIntervalDelayмиллисекунд, считается подозрительным и считается мёртвым после двух таких интервалов. Это может быть полезно в конфигурациях с известными проблемами задержки.Значение по умолчанию для этого параметра — 0 (отключено).
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы число 4-байтовых слов, как логарифм по основанию 2 Значение по умолчанию 20 Диапазон 0 - 31 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр является исключением, поскольку он не указывает время ожидания перед началом новой локальной контрольной точки; скорее, он используется для обеспечения того, чтобы локальные контрольные точки не выполнялись в кластере, где происходит относительно мало обновлений. В большинстве кластеров с высокой скоростью обновления, скорее всего, новая локальная контрольная точка запускается сразу после завершения предыдущей.
Размер всех операций записи, выполненных с момента начала предыдущих локальных контрольных точек, добавляется. Этот параметр также является исключительным, поскольку он указывается как логарифм по основанию 2 числа 4-байтовых слов, так что значение по умолчанию 20 означает 4 МБ (4 × 220) операций записи, 21 будет означать 8 МБ и так далее до максимального значения 31, что эквивалентно 8 ГБ операций записи.
Все операции записи в кластере суммируются. Установка
TimeBetweenLocalCheckpointsв значение 6 или меньше означает, что локальные контрольные точки выполняются непрерывно без паузы, независимо от рабочей нагрузки кластера. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 2000 Диапазон 20 - 32000 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Когда транзакция завершается, она завершается в основной памяти на всех узлах, на которых данные отображаются зеркально. Однако записи журнала транзакций не сбрасываются на диск как часть фиксации. Причина этого поведения заключается в том, что наличие транзакции, надежно зафиксированной как минимум на двух автономных хост-машинах, должно соответствовать разумным стандартам долговечности.
Также важно гарантировать, что даже в худшем случае — полном сбое кластера — все обрабатывается правильно. Чтобы гарантировать это, все транзакции, происходящие в течение заданного интервала, помещаются в глобальную контрольную точку, которую можно рассматривать как набор зафиксированных транзакций, который был сброшен на диск. Другими словами, как часть процесса фиксации, транзакция помещается в группу глобальных контрольных точек. Позже записи журнала этой группы сбрасываются на диск, а затем вся группа транзакций надежно фиксируется на диске на всех компьютерах в кластере.
Мы рекомендуем, при использовании твердотельных дисков (особенно тех, которые используют NVMe) с таблицами Disk Data, уменьшить это значение. В таких случаях следует также убедиться, что
MaxDiskDataLatencyустановлено на правильный уровень.Этот параметр определяет интервал между глобальными контрольными точками. Значение по умолчанию — 2000 миллисекунд.
-
TimeBetweenGlobalCheckpointsTimeoutВерсия (или более поздняя) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 120000 Диапазон 10 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр определяет минимальное время ожидания между глобальными контрольными точками. Значение по умолчанию — 120000 миллисекунд.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 100 Диапазон 0 - 32000 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр определяет интервал между эпохами синхронизации для репликации NDB Cluster. Значение по умолчанию — 100 миллисекунд.
TimeBetweenEpochsявляется частью реализации “микро-GCP”, которые могут быть использованы для повышения производительности репликации NDB Cluster. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы миллисекунды Значение по умолчанию 0 Диапазон 0 - 256000 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр определяет время ожидания для эпох синхронизации для репликации NDB Cluster. Если узел не может участвовать в глобальной контрольной точке в течение времени, определяемого этим параметром, узел выключается. Значение по умолчанию равно 0; другими словами, время ожидания отключено.
TimeBetweenEpochsTimeoutявляется частью реализации “микро-GCP”, которые могут быть использованы для повышения производительности репликации NDB Cluster.Текущее значение этого параметра и предупреждение записываются в журнал кластера всякий раз, когда сохранение GCP занимает более 1 минуты или фиксация GCP занимает более 10 секунд.
Установка этого параметра в ноль приводит к отключению остановок GCP, вызванных тайм-аутами сохранения, тайм-аутами фиксации или обоими. Максимальное возможное значение для этого параметра составляет 256000 миллисекунд.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы эпохи Значение по умолчанию 100 Диапазон 0 - 100000 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Количество необработанных эпох, на которое подписной узел может отставать. Превышение этого числа приводит к отключению отстающего подписчика.
Значения по умолчанию 100 достаточно для большинства обычных операций. Если подписной узел действительно отстает настолько, что это вызывает отключения, это обычно связано с проблемами сети или планирования в отношении процессов или потоков. (В редких случаях проблема может быть вызвана ошибкой в клиенте
NDB.) Может быть желательно установить значение ниже значения по умолчанию, когда эпохи длиннее.Отключение предотвращает влияние проблем клиента на обслуживание узла данных, исчерпание памяти для буферизации данных и, в конечном итоге, отключение. Вместо этого затрагивается только клиент в результате отключения (например, событиями gap в двоичном журнале), заставляя клиента переподключиться или перезапустить процесс.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы байты Значение по умолчанию 26214400 Диапазон 26214400 (0x01900000) - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Общее количество байтов, выделенных для буферизации эпох этим узлом.
-
TimeBetweenInactiveTransactionAbortCheckВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения миллисекунды Значение по умолчанию 1000 Диапазон 1000 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Обработка таймаута осуществляется путем проверки таймера каждой транзакции один раз для каждого интервала, указанного этим параметром. Таким образом, если этот параметр установлен в 1000 миллисекунд, каждая транзакция проверяется на таймаут один раз в секунду.
Значение по умолчанию составляет 1000 миллисекунд (1 секунда).
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения миллисекунды Значение по умолчанию 4294967039 (0xFFFFFEFF) Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр указывает максимальное время, которое может пройти между операциями в одной транзакции, прежде чем транзакция будет прервана.
Значение по умолчанию для этого параметра —
4G(также максимальное). Для базы данных реального времени, которой необходимо гарантировать, что ни одна транзакция не удерживает блокировки слишком долго, этот параметр следует установить в относительно небольшое значение. Установка его в 0 означает, что приложение никогда не истекает. Единица измерения — миллисекунды. -
TransactionDeadlockDetectionTimeoutВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения миллисекунды Значение по умолчанию 1200 Диапазон 50 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Когда узел выполняет запрос, включающий транзакцию, узел ожидает ответа от других узлов в кластере, прежде чем продолжить. Этот параметр устанавливает количество времени, которое транзакция может потратить на выполнение в узле данных, то есть время, которое координатор транзакций ожидает, пока каждый узел данных, участвующий в транзакции, выполнит запрос.
Невозможность ответить может произойти по одной из следующих причин:
Узел “мертв”
Операция вошла в очередь блокировки
Узел, которому было предложено выполнить действие, может быть сильно перегружен.
Этот параметр таймаута указывает, как долго координатор транзакций ожидает выполнения запроса другим узлом, прежде чем прервать транзакцию, и важен как для обработки сбоев узлов, так и для обнаружения взаимных блокировок.
Значение таймаута по умолчанию составляет 1200 миллисекунд (1,2 секунды).
Минимальное значение этого параметра составляет 50 миллисекунд.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 4M Диапазон 32K - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Это максимальное количество байтов для хранения перед записью данных в локальный файл контрольной точки. Это делается для предотвращения буферизации записи, которая может значительно снизить производительность. Этот параметр не предназначен для замены
TimeBetweenLocalCheckpoints.ПримечаниеКогда включен
ODirect, нет необходимости устанавливатьDiskSyncSize; фактически, в таких случаях его значение просто игнорируется.Значение по умолчанию — 4M (4 мегабайта).
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовое Значение по умолчанию 20M Диапазон 1M - 1024G Тип перезапуска Перезапуск системы: Требуется полное завершение работы и перезапуск кластера. (NDB 9.2.0)
Установите максимальную скорость записи на диск, в байтах в секунду, локальными контрольными точками и операциями резервного копирования, когда в этом кластере NDB не происходит перезапусков (этим узлом данных или любым другим узлом данных).
Для установки максимальной скорости записи на диск, разрешенной во время перезапуска этого узла данных, используйте
MaxDiskWriteSpeedOwnRestart. Для установки максимальной скорости записи на диск, разрешенной во время перезапуска других узлов данных, используйтеMaxDiskWriteSpeedOtherNodeRestart. Минимальную скорость записи на диск всеми LCP и операциями резервного копирования можно настроить, установивMinDiskWriteSpeed. -
MaxDiskWriteSpeedOtherNodeRestartВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовое Значение по умолчанию 50M Диапазон 1M - 1024G Тип перезапуска Перезапуск системы: Требуется полное завершение работы и перезапуск кластера. (NDB 9.2.0)
Установите максимальную скорость записи на диск, в байтах в секунду, локальными контрольными точками и операциями резервного копирования, когда один или несколько узлов данных в этом кластере NDB перезапускаются, кроме этого узла.
Для установки максимальной скорости записи на диск, разрешенной во время перезапуска этого узла данных, используйте
MaxDiskWriteSpeedOwnRestart. Для установки максимальной скорости записи на диск, разрешенной, когда ни один узел данных нигде в кластере не перезапускается, используйтеMaxDiskWriteSpeed. Минимальную скорость записи на диск всеми LCP и операциями резервного копирования можно настроить, установивMinDiskWriteSpeed. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовое Значение по умолчанию 200M Диапазон 1M - 1024G Тип перезапуска Перезапуск системы: Требуется полное завершение работы и перезапуск кластера. (NDB 9.2.0)
Установите максимальную скорость записи на диск, в байтах в секунду, локальными контрольными точками и операциями резервного копирования во время перезапуска этого узла данных.
Для установки максимальной скорости записи на диск, разрешенной во время перезапуска других узлов данных, используйте
MaxDiskWriteSpeedOtherNodeRestart. Для установки максимальной скорости записи на диск, разрешенной, когда ни один узел данных нигде в кластере не перезапускается, используйтеMaxDiskWriteSpeed. Минимальную скорость записи на диск всеми LCP и операциями резервного копирования можно настроить, установивMinDiskWriteSpeed.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовое значение По умолчанию 10М Диапазон 1М - 1024Г Тип перезапуска Перезапуск системы: Требует полного завершения работы и перезапуска кластера. (NDB 9.2.0)
Установите минимальную скорость записи на диск в байтах в секунду для локальных контрольных точек и операций резервного копирования.
Максимальные скорости записи на диск для LCP и резервного копирования в различных условиях настраиваются с помощью параметров
MaxDiskWriteSpeed,MaxDiskWriteSpeedOwnRestartиMaxDiskWriteSpeedOtherNodeRestart. Подробнее см. описания этих параметров. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения миллисекунды По умолчанию 7500 Диапазон 10 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Данный параметр определяет время ожидания узлами данных ответа от арбитра на сообщение об арбитраже. Если это время истечёт, считается, что сеть разорвана.
Значение по умолчанию составляет 7500 миллисекунд (7,5 секунд).
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения перечисление По умолчанию Default Диапазон Default, Disabled, WaitExternal Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Параметр
Arbitrationпозволяет выбрать схему арбитража, соответствующую одному из трёх возможных значений:Default. Это позволяет арбитражу проходить в обычном режиме, как определено настройками
ArbitrationRankдля узлов управления и API. Это значение по умолчанию.Disabled. Установка
Arbitration = Disabledв разделе[ndbd default]файлаconfig.iniвыполняет ту же задачу, что и установкаArbitrationRankв 0 на всех узлах управления и API. КогдаArbitrationустановлено таким образом, все настройкиArbitrationRankигнорируются.WaitExternal. Параметр
Arbitrationтакже позволяет настроить арбитраж таким образом, что кластер ожидает, пока не пройдёт время, заданное параметромArbitrationTimeout, для того, чтобы внешнее приложение-менеджер кластера выполнило арбитраж вместо внутренней обработки. Это можно сделать, установивArbitration = WaitExternalв разделе[ndbd default]файлаconfig.ini. Для достижения наилучших результатов с настройкойWaitExternalрекомендуется, чтобыArbitrationTimeoutбыло в 2 раза больше интервала, требуемого внешним менеджером кластера для выполнения арбитража.
ВажноЭтот параметр следует использовать только в разделе
[ndbd default]файла конфигурации кластера. Поведение кластера не определено, когдаArbitrationимеет разные значения для отдельных узлов данных.
Интервал сердцебиения между узлами управления и узлами данных всегда составляет 100 миллисекунд и не настраивается.
Буферизация и регистрация. Несколько параметров конфигурации [ndbd] предоставляют пользователю возможность более точно управлять ресурсами процессов узлов и настраивать различные размеры буферов по мере необходимости.
Эти буферы используются в качестве интерфейса к файловой системе при записи записей журнала на диск. Если узел работает в бескаркасном режиме, эти параметры можно установить в минимальные значения без потери производительности, поскольку запись на диск «имитируется» абстракцией файловой системы движка хранения NDB.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения беззнаковое По умолчанию 2М Диапазон 1М - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр ранее задавал размер буфера индекса отмены, но в текущих версиях NDB Cluster он не оказывает никакого влияния.
Использование этого параметра в файле конфигурации кластера вызывает предупреждение об устаревании; ожидается, что он будет удален в будущей версии NDB Cluster.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения беззнаковое По умолчанию 16М Диапазон 1М - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр ранее задавал размер буфера данных отмены, но в текущих версиях NDB Cluster он не оказывает никакого влияния.
Использование этого параметра в файле конфигурации кластера вызывает предупреждение об устаревании; ожидается, что он будет удален в будущей версии NDB Cluster.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты По умолчанию 32М Диапазон 1М - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Все операции обновления также должны быть записаны в журнал. Журнал REDO позволяет повторно применить эти обновления при каждом перезапуске системы. Алгоритм восстановления NDB использует «нечеткий» контрольный пункт данных вместе с журналом UNDO, а затем применяет журнал REDO, чтобы воспроизвести все изменения до точки восстановления.
RedoBufferзадаёт размер буфера, в котором записывается журнал REDO. Значение по умолчанию составляет 32 МБ; минимальное значение — 1 МБ.Если этот буфер слишком мал, движок хранения
NDBвозвращает код ошибки 1221 (Буферы журнала REDO переполнены). По этой причине следует быть осторожным, если вы пытаетесь уменьшить значениеRedoBufferв ходе онлайн-изменения конфигурации кластера.ndbmtd выделяет отдельный буфер для каждого потока LDM (см.
ThreadConfig). Например, при 4 потоках LDM узел данных ndbmtd фактически имеет 4 буфера и выделяетRedoBufferбайт для каждого, в общей сложности4 * RedoBufferбайт. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты По умолчанию 8192 Диапазон 0 - 64К Тип перезапуска Перезапуск системы: Требует полного выключения и перезапуска кластера. (NDB 9.2.0)
Управляет размером циклического буфера, используемого для событий журнала NDB в узлах данных.
Управление сообщениями журнала. При управлении кластером очень важно иметь возможность контролировать количество сообщений журнала, отправляемых для различных типов событий в stdout. Для каждой категории событий существует 16 возможных уровней событий (от 0 до 15). Установка отчётности о событиях для заданной категории событий на уровень 15 означает, что все отчёты об событиях в этой категории отправляются в stdout; установка на 0 означает, что отчёты об событиях в этой категории не генерируются.
По умолчанию, только сообщение о запуске отправляется в stdout, а остальные уровни отчётов о событиях установлены по умолчанию на 0. Причина в том, что эти сообщения также отправляются в журнал кластера сервера управления.
Аналогичный набор уровней может быть установлен для клиентского приложения управления, чтобы определить, какие уровни событий записывать в журнал кластера.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 1 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Уровень отчётности для событий, генерируемых во время запуска процесса.
Уровень по умолчанию — 1.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Уровень отчётности для событий, генерируемых в рамках корректного завершения работы узла.
Уровень по умолчанию — 0.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Уровень отчётности для статистических событий, таких как количество чтений первичных ключей, количество обновлений, количество вставок, информация, относящаяся к использованию буферов и так далее.
Уровень по умолчанию — 0.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы log level Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Уровень отчётности для событий, генерируемых локальными и глобальными контрольными точками.
Уровень по умолчанию — 0.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Уровень отчётности для событий, генерируемых во время перезапуска узла.
Уровень по умолчанию — 0.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Уровень отчётности для событий, генерируемых соединениями между узлами кластера.
Уровень по умолчанию — 0.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Уровень отчётности для событий, генерируемых ошибками и предупреждениями кластером в целом. Эти ошибки не вызывают сбоя узла, но всё же считаются достойными отчётности.
Уровень по умолчанию — 0.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы level Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Уровень отчётности для событий, генерируемых перегрузкой. Эти ошибки не вызывают сбоя узла, но всё же считаются достойными отчётности.
Уровень по умолчанию — 0.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Уровень отчётности для событий, генерируемых для информации об общем состоянии кластера.
Уровень по умолчанию — 0.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы unsigned Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр управляет частотой записи отчётов об использовании памяти узла данных в журнале кластера; это целое значение, представляющее количество секунд между отчётами.
Использование памяти данных и индексной памяти каждого узла данных регистрируется как в процентах, так и в количестве 32-килобайтных страниц
DataMemory, как установлено в файлеconfig.ini. Например, еслиDataMemoryравно 100 МБ, а данный узел данных использует 50 МБ для хранения данных в памяти, соответствующая строка в журнале кластера может выглядеть следующим образом:2006-12-24 01:18:16 [MgmSrvr] INFO -- Node 2: Data usage is 50%(1280 32K pages of total 2560)
MemReportFrequencyне является обязательным параметром. При использовании его можно установить для всех узлов данных кластера в разделе[ndbd default]файлаconfig.ini, а также установить или переопределить для отдельных узлов данных в соответствующих разделах[ndbd]файла конфигурации. Минимальное значение — которое также является значением по умолчанию — равно 0, в этом случае отчёты об использовании памяти регистрируются только тогда, когда использование памяти достигает определённых процентов (80%, 90% и 100%), как упоминалось в обсуждении статистических событий в разделе 25.6.3.2, «События журнала кластера NDB».
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения секунды Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
При запуске узла данных с помощью
--initial, он инициализирует файл журнала redo во время Фазы запуска 4 (см. Раздел 25.6.4, «Обзор фаз запуска кластера NDB»). Когда дляNoOfFragmentLogFiles,FragmentLogFileSizeили обоих параметров заданы очень большие значения, эта инициализация может занять много времени. Вы можете принудительно регистрировать отчеты о ходе этого процесса периодически с помощью параметра конфигурацииStartupStatusReportFrequency. В этом случае прогресс будет отображаться в журнале кластера, в том числе количество файлов и объем инициализированного пространства, как показано ниже:2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 1: Local redo log file initialization status: #Total files: 80, Completed: 60 #Total MBytes: 20480, Completed: 15557 2009-06-20 16:39:23 [MgmSrvr] INFO -- Node 2: Local redo log file initialization status: #Total files: 80, Completed: 60 #Total MBytes: 20480, Completed: 15570
Эти отчеты записываются каждые
StartupStatusReportFrequencyсекунд во время Фазы запуска 4. ЕслиStartupStatusReportFrequencyравен 0 (по умолчанию), тогда отчеты записываются в журнал кластера только в начале и в конце процесса инициализации файла журнала redo.
Параметры отладки узлов данных
Следующие параметры предназначены для использования во время тестирования или отладки узлов данных, а не для использования в рабочей среде.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию неопределено Диапазон 0 - 100 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Возможно, для регистрации трассировок событий, генерируемых при создании и удалении таблиц, можно использовать
DictTrace. Этот параметр полезен только для отладки кода ядра NDB.DictTraceпринимает целое значение. Значение 0 по умолчанию, означает, что регистрация не выполняется; 1 включает трассировку, а 2 включает регистрация дополнительногоDBDICTотладочного вывода. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения булево Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Вы можете заставить потоки убиваться немедленно всякий раз, когда возникают проблемы с системой мониторинга, включив параметр конфигурации узла данных
WatchdogImmediateKill. Этот параметр следует использовать только при отладке или устранении неполадок, чтобы получить файлы трассировки, точно отображающие то, что происходило в момент прекращения выполнения.
Параметры резервного копирования. Параметры [ndbd], обсуждаемые в этом разделе, определяют буферы памяти, выделенные для выполнения онлайн-резервных копий.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 16M Диапазон 512K - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 7.6) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
При создании резервной копии используются два буфера для отправки данных на диск. Буфер данных резервной копии используется для заполнения данных, записанных путем сканирования таблиц узла. После того, как этот буфер будет заполнен до уровня, указанного как
BackupWriteSize, страницы отправляются на диск. Во время очистки данных на диск процесс резервного копирования может продолжать заполнять этот буфер, пока не закончится место. Когда это произойдет, процесс резервного копирования приостанавливает сканирование и ожидает, пока не завершится запись некоторых данных на диск, освобождая память, чтобы можно было продолжить сканирование.Значение по умолчанию для этого параметра равно 16 МБ. Минимальное значение - 512 КБ.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения проценты Значение по умолчанию 50 Диапазон 0 - 90 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
BackupDiskWriteSpeedPctприменяется только когда резервное копирование однопоточное; поскольку NDB 9.2 поддерживает многопоточные резервные копии, обычно нет необходимости регулировать этот параметр, который не оказывает никакого влияния в многопоточном случае. Следующее обсуждение относится к однопоточным резервным копиям.В режиме нормальной работы узлы данных пытаются максимизировать скорость записи на диск, используемую для локальных контрольных точек и резервных копий, оставаясь в пределах, установленных параметрами
MinDiskWriteSpeedиMaxDiskWriteSpeed. Регулирование скорости записи на диск обеспечивает каждому потоку LDM равную долю от общего бюджета. Это позволяет выполнять параллельные LCP без превышения бюджета операций ввода-вывода на диске. Поскольку резервное копирование выполняется только одним потоком LDM, это фактически приводило к сокращению бюджета, что приводило к увеличению времени завершения резервного копирования и — если скорость изменения достаточно высока — к невозможности завершить резервное копирование, когда скорость заполнения буфера журнала резервной копии выше, чем достижимая скорость записи.Эту проблему можно решить, используя параметр конфигурации
BackupDiskWriteSpeedPct, который принимает значение в диапазоне от 0 до 90 (включительно), которое интерпретируется как процент от максимального бюджета скорости записи узла, который резервируется до распределения оставшейся части бюджета между потоками LDM для LCP. Поток LDM, выполняющий резервное копирование, получает весь бюджет скорости записи для резервного копирования, а также свою (уменьшенную) долю бюджета скорости записи для локальных контрольных точек.Значение по умолчанию для этого параметра равно 50 (интерпретируется как 50%).
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 16M Диапазон 2M - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Буфер журнала резервного копирования выполняет роль, аналогичную роли буфера данных резервного копирования, за исключением того, что он используется для создания журнала всех записей в таблице, сделанных во время выполнения резервного копирования. Те же принципы применяются для записи этих страниц, что и для буфера данных резервного копирования, за исключением того, что когда в буфере журнала резервного копирования больше нет места, резервное копирование завершается с ошибкой. По этой причине размер буфера журнала резервного копирования должен быть достаточно большим, чтобы справиться с нагрузкой, вызванной операциями записи, пока выполняется резервное копирование. См. Раздел 25.6.8.3, «Конфигурация резервных копий кластера NDB».
Значение по умолчанию для этого параметра должно быть достаточным для большинства приложений. На самом деле, гораздо более вероятно, что сбой резервного копирования будет вызван недостаточной скоростью записи на диск, чем тем, что буфер журнала резервного копирования будет заполнен. Если подсистема диска не настроена для нагрузки на запись, вызванной приложениями, кластер вряд ли сможет выполнить нужные операции.
Предпочтительнее настраивать узлы кластера таким образом, чтобы процессор стал узким местом, а не диски или сетевые соединения.
Значение по умолчанию для этого параметра равно 16 МБ.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 32M Диапазон 0 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 7.4) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр устарел и может быть удален в будущей версии NDB Cluster. Любая установка для него игнорируется.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения секунды Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр управляет тем, как часто публикуются отчеты о состоянии резервного копирования в клиенте управления во время резервного копирования, а также как часто такие отчеты записываются в журнал кластера (при условии, что ведение журнала событий кластера настроено для его разрешения — см. Ведение журнала и контрольные точки).
BackupReportFrequencyпредставляет время в секундах между отчетами о состоянии резервного копирования.Значение по умолчанию равно 0.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 256K Диапазон 32K - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 7.6) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр указывает размер сообщений по умолчанию, записываемых на диск буферами журнала резервного копирования и буферами данных резервного копирования.
Значение по умолчанию для этого параметра равно 256 КБ.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 1M Диапазон 256K - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 7.6) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 9.2.0)
Этот параметр указывает максимальный размер сообщений, записываемых на диск буферами журнала резервного копирования и буферами данных резервного копирования.
Значение по умолчанию для этого параметра равно 1 МБ.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы boolean По умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Включение этого параметра приводит к сжатию файлов резервных копий. Используемое сжатие эквивалентно gzip --fast и может сэкономить 50% или более места на узле данных для хранения нескомпрессированных резервных копий. Сжатые резервные копии можно включить для отдельных узлов данных или для всех узлов данных (установив этот параметр в разделе
[ndbd default]файлаconfig.ini).ВажноВы не можете восстановить сжатую резервную копию в кластер, работающий на версии MySQL, которая не поддерживает эту функцию.
Значение по умолчанию равно
0(выключено). -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer По умолчанию 0 Диапазон 0 - 1 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Если значение установлено в 1, резервные копии должны быть зашифрованы. Хотя можно установить этот параметр для каждого узла данных индивидуально, рекомендуется установить его в разделе
[ndbd default]файла глобальной конфигурацииconfig.ini. Дополнительную информацию о выполнении зашифрованных резервных копий см. в Разделе 25.6.8.2, «Использование клиента управления кластером NDB для создания резервной копии».
Расположение файлов резервных копий определяется параметром конфигурации узла данных BackupDataDir.
Дополнительные требования. При указании этих параметров должны соблюдаться следующие соотношения. В противном случае узел данных не сможет запуститься.
BackupDataBufferSize >= BackupWriteSize + 188KBBackupLogBufferSize >= BackupWriteSize + 16KBBackupMaxWriteSize >= BackupWriteSize
Параметры производительности NDB Cluster в реальном времени
Параметры [ndbd], обсуждаемые в этом разделе, используются в планировании и блокировке потоков для определенных процессоров на узлах данных с многопроцессорными хостами.
Для использования этих параметров процесс узла данных должен выполняться с правами суперпользователя.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы числовой Значение по умолчанию 128 Диапазон 0 - 128 Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Этот параметр определяет количество потоков, создаваемых при перестроении упорядоченных индексов во время запуска системы или узла, а также при запуске ndb_restore
--rebuild-indexes. Он поддерживается только тогда, когда для таблицы на каждом узле данных имеется более одного фрагмента (например, когдаCOMMENT="NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM_X_2"используется сCREATE TABLE).Установка этого параметра в 0 (значение по умолчанию) отключает многопоточное построение упорядоченных индексов.
Этот параметр поддерживается при использовании ndbd или ndbmtd.
Вы можете включить многопоточные сборки во время первоначальных перезапусков узла данных, установив параметр конфигурации узла данных
TwoPassInitialNodeRestartCopyвTRUE. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы набор идентификаторов ЦП Значение по умолчанию 0 Диапазон ... Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
При использовании с ndbd, этот параметр (теперь строка) указывает ID ЦП, назначенного для обработки потока выполнения
NDBCLUSTER. При использовании с ndbmtd, значение этого параметра представляет собой разделенный запятыми список идентификаторов ЦП, назначенных для обработки потоков выполнения. Каждый идентификатор ЦП в списке должен быть целым числом в диапазоне от 0 до 65535 (включительно).Количество указанных ID должно соответствовать количеству потоков выполнения, определяемых параметром
MaxNoOfExecutionThreads. Однако нет гарантии, что потоки будут назначены ЦП в каком-либо определенном порядке при использовании этого параметра. Вы можете получить более тонкий контроль над этим типом, используяThreadConfig.LockExecuteThreadToCPUне имеет значения по умолчанию. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы ID ЦП Значение по умолчанию 0 Диапазон 0 - 64K Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Этот параметр указывает ID ЦП, назначенного для обработки потоков обслуживания
NDBCLUSTER.Значение этого параметра представляет собой целое число в диапазоне от 0 до 65535 (включительно). Значение по умолчанию отсутствует.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы числовой Значение по умолчанию 1 Диапазон ... Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Этот параметр определяет, управляется ли неравномерный доступ к памяти (NUMA) операционной системой или процессом узла данных, использует ли узел данных ndbd или ndbmtd. По умолчанию,
NDBпытается использовать политику чередующегося распределения памяти NUMA на любом узле данных, где поддерживается NUMA операционной системой хоста.Установка
Numa = 0означает, что сам процесс узла данных не пытается установить политику распределения памяти и позволяет определить это поведение операционной системой, которая может быть дополнительно направлена отдельным инструментом numactl. То есть,Numa = 0обеспечивает поведение по умолчанию системы, которое может быть настроено с помощью numactl. Для многих систем Linux поведение по умолчанию системы заключается в выделении локальной памяти сокета любому процессу во время выделения. Это может быть проблематично при использовании ndbmtd; это связано с тем, что nbdmtd выделяет всю память при запуске, что приводит к дисбалансу, обеспечивая различную скорость доступа для разных сокетов, особенно при блокировке страниц в основной памяти.Установка
Numa = 1означает, что процесс узла данных используетlibnumaдля запроса чередующегося распределения памяти. (Это также может быть сделано вручную, на уровне операционной системы, с помощью numactl.) Использование чередующегося распределения по существу говорит процессу узла данных игнорировать неравномерный доступ к памяти, но не пытается использовать преимущества быстрой локальной памяти; вместо этого процесс узла данных пытается избежать дисбаланса из-за медленной удаленной памяти. Если чередующееся распределение нежелательно, установитеNumaв 0, чтобы желаемое поведение могло быть определено на уровне операционной системы.Параметр конфигурации
Numaподдерживается только в системах Linux, где доступенlibnuma.so. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы булево Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Установка этого параметра в 1 включает планирование в реальном времени потоков узла данных.
Значение по умолчанию — 0 (планирование отключено).
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы µs Значение по умолчанию 50 Диапазон 0 - 11000 Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 9.2.0)
Этот параметр указывает время в микросекундах для выполнения потоков в планировщике перед отправкой. Установка его в 0 минимизирует время отклика; для достижения большей производительности вы можете увеличить значение за счет увеличения времени отклика.
Значение по умолчанию — 50 мкс, что, как показывают наши тесты, немного увеличивает производительность в условиях высокой нагрузки, не вызывая существенной задержки запросов.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число По умолчанию 5 Диапазон 0 - 10 Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 9.2.0)
Установите баланс в планировщике между скоростью и пропускной способностью. Этот параметр принимает целое число в диапазоне от 0 до 10 включительно, по умолчанию 5. Более высокие значения обеспечивают лучшие времена отклика по отношению к пропускной способности. Более низкие значения обеспечивают увеличенную пропускную способность за счет более длительных времен отклика.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения мкс По умолчанию 0 Диапазон 0 - 500 Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 9.2.0)
Этот параметр задаёт время в микросекундах, в течение которого потоки будут выполняться в планировщике перед переходом в режим ожидания.
ПримечаниеЕсли
SpinMethodустановлен, любое значение этого параметра игнорируется. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения перечисление По умолчанию StaticSpinning Диапазон CostBasedSpinning, LatencyOptimisedSpinning, DatabaseMachineSpinning, StaticSpinning Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 9.2.0)
Этот параметр предоставляет простой интерфейс для управления адаптивным вращением на узлах данных, с четырьмя возможными значениями, предоставляющими предустановки для значений параметров вращения, как показано в следующем списке:
StaticSpinning(по умолчанию): УстанавливаетEnableAdaptiveSpinningвfalseиSchedulerSpinTimerв 0. (SetAllowedSpinOverheadв этом случае не актуально.)CostBasedSpinning: УстанавливаетEnableAdaptiveSpinningвtrue,SchedulerSpinTimerв 100 иSetAllowedSpinOverheadв 200.LatencyOptimisedSpinning: УстанавливаетEnableAdaptiveSpinningвtrue,SchedulerSpinTimerв 200 иSetAllowedSpinOverheadв 1000.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для этого, гдеoverheadoverhead— это значение от 0 до 10000 включительно; см. описание командыDUMPдля получения подробностей.
На платформах, не имеющих полезных инструкций вращения, таких как PowerPC и некоторые платформы SPARC, время вращения устанавливается в 0 во всех ситуациях, а значения для
SpinMethod, отличные отStaticSpinning, игнорируются. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения булево По умолчанию true Диапазон true, false Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 9.2.0)
Многопоточное построение упорядоченных индексов можно включить для начальных перезапусков узлов данных, установив этот параметр конфигурации в
true(значение по умолчанию), что включает двухэтапную копию данных во время начальных перезапусков узлов.Также необходимо установить
BuildIndexThreadsна ненулевое значение.
Параметры конфигурации многопоточности (ndbmtd). ndbmtd по умолчанию работает как однопоточный процесс и должен быть настроен на использование нескольких потоков, используя один из двух методов, оба из которых требуют установки параметров конфигурации в файле config.ini. Первый метод — просто установить подходящее значение для параметра конфигурации MaxNoOfExecutionThreads. Второй метод позволяет установить более сложные правила для многопоточности ndbmtd с помощью ThreadConfig. В следующих разделах приводится информация об этих параметрах и их использовании с многопоточными узлами данных.
Резервное копирование с использованием параллелизма на узлах данных требует, чтобы на всех узлах данных в кластере использовалось несколько LDM перед выполнением резервного копирования. Для получения дополнительной информации см. Раздел 25.6.8.5, «Выполнение резервного копирования NDB с параллельными узлами данных», а также .
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения boolean Значение по умолчанию false Диапазон true, false Тип перезапуска Первоначальный перезапуск системы: Требует полного завершения работы кластера, удаления и восстановления файловой системы кластера из бэкапа, а затем перезапуска кластера. (NDB 9.2.0)
При установке в 1, включает автоматическую настройку потоков, используя количество доступных процессоров для узла данных, учитывая любые ограничения, установленные
taskset,numactl, виртуальными машинами, Docker и другими средствами управления доступными процессорами для данного приложения (в платформах Windows автоматическая настройка потоков использует все активные процессоры); в качестве альтернативы, вы можете установитьNumCPUsдо необходимого количества процессоров (до 1024, максимальное количество процессоров, которое может обрабатывать автоматическая настройка потоков). Любые настройки дляThreadConfigиMaxNoOfExecutionThreadsбудут игнорироваться. Кроме того, включение этого параметра автоматически отключаетClassicFragmentation. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения boolean Значение по умолчанию true Диапазон true, false Тип перезапуска Перезапуск узла: Требует пошагового перезапуска кластера. (NDB 9.2.0)
При включении (установке в
true),NDBраспределяет фрагменты среди LDMs таким образом, что количество партиций на узел по умолчанию равно минимальному количеству потоков локального менеджера данных (LDM) на узел данных.Для новых кластеров, установка
ClassicFragmentationвfalseпри первой настройке кластера предпочтительнее; это приводит к количеству партиций на узел, равному значениюPartitionsPerNode, гарантируя равномерное распределение партиций между всеми LDM.Этот параметр и
AutomaticThreadConfigявляются взаимоисключающими; включениеAutomaticThreadConfigавтоматически отключаетClassicFragmentation. -
EnableMultithreadedBackupВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения unsigned Значение по умолчанию 1 Диапазон 0 - 1 Тип перезапуска Перезапуск узла: Требует пошагового перезапуска кластера. (NDB 9.2.0)
Включает многопоточный бэкап. Если каждый узел данных имеет как минимум 2 LDM, все потоки LDM участвуют в бэкапе, который создаётся с использованием одной поддиректории на поток LDM, и каждая поддиректория содержит файлы бэкапа
.ctl,.Dataи.log.Этот параметр обычно включен (установлен в 1) для ndbmtd. Чтобы принудительно выполнить однопоточный бэкап, который можно легко восстановить с помощью более старых версий ndb_restore, отключите многопоточный бэкап, установив этот параметр в 0. Это необходимо сделать для каждого узла данных в кластере.
См. Раздел 25.6.8.5, «Выполнение бэкапа NDB с параллельными узлами данных», для получения дополнительной информации.
-
MaxNoOfExecutionThreadsВерсия (или более поздняя) NDB 9.2.0 Тип или единицы целое число Значение по умолчанию 2 Диапазон 2 - 72 Тип перезапуска Перезапуск системы: Требуется полное завершение работы и перезапуск кластера. (NDB 9.2.0)
Этот параметр напрямую управляет количеством потоков выполнения, используемых ndbmtd, максимум до 72. Хотя этот параметр задается в разделах
[ndbd]или[ndbd default]файлаconfig.ini, он предназначен исключительно для ndbmtd и не применяется к ndbd.Включение
AutomaticThreadConfigприводит к игнорированию любых настроек для этого параметра.Установка
MaxNoOfExecutionThreadsустанавливает количество потоков для каждого типа, определяемое матрицей в файлеstorage/ndb/src/common/mt_thr_config.cpp. Эта таблица показывает количество потоков для возможных значенийMaxNoOfExecutionThreads.Таблица 25.11 Значения MaxNoOfExecutionThreads и соответствующее количество потоков по типу потока (LQH, TC, Send, Receive).
Table 25.11 MaxNoOfExecutionThreads values and the corresponding number of threads by thread type (LQH, TC, Send, Receive). MaxNoOfExecutionThreadsValueLDM 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 или репликации)
Для значения
MaxNoOfExecutionThreads8 или меньше потоки TC не создаются, а обработка TC выполняется главным потоком.Изменение количества потоков LDM обычно требует перезапуска системы, независимо от того, изменяется ли оно с помощью этого параметра или
ThreadConfig, но изменение возможно с помощью начального перезапуска узла (NI), при условии выполнения следующих двух условий:Каждый поток LDM обрабатывает максимум 8 фрагментов, и
Общее количество фрагментов таблицы является целым кратным количеству потоков LDM.
-
MaxSendDelayВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения микросекунды Значение по умолчанию 0 Диапазон 0 - 11000 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр можно использовать для временной задержки узлов данных перед отправкой данных узлам API; в некоторых случаях, описанных в следующих абзацах, это может привести к более эффективной отправке больших объемов данных и более высокой общей пропускной способности.
MaxSendDelayможет быть полезен, когда имеется большое количество узлов API в состоянии насыщения или близком к нему, что может привести к колебаниям производительности. Это происходит, когда узлы данных могут отправлять результаты обратно узлам API относительно быстро, с множеством небольших пакетов для обработки, что может занять больше времени на обработку на байт по сравнению с большими пакетами, тем самым замедляя узлы API; впоследствии узлы данных начинают снова отправлять более крупные пакеты.Для обработки такого сценария можно установить
MaxSendDelayна ненулевое значение, что помогает гарантировать, что ответы не отправляются обратно узлам API так быстро. При этом ответы отправляются немедленно, когда нет другой конкурирующей активности, но когда она есть, установкаMaxSendDelayзаставляет узлы данных ждать достаточно долго, чтобы гарантировать отправку более крупных пакетов. По сути, это вводит искусственную задержку в процесс отправки, что может значительно улучшить пропускную способность. -
NoOfFragmentLogPartsВерсия (или более поздняя) NDB 9.2.0 Тип или единицы измерения числовое Значение по умолчанию 4 Диапазон 4, 6, 8, 10, 12, 16, 20, 24, 32 Тип перезапуска Начальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с
--initial. (NDB 9.2.0)Установите количество групп файлов журнала для журналов отката, относящихся к этому ndbmtd. Значение этого параметра должно быть равно количеству потоков LDM, используемых ndbmtd, как определено значением
MaxNoOfExecutionThreads. Конфигурация с более чем 4 группами журналов отката на поток LDM запрещена.См. описание
MaxNoOfExecutionThreadsдля получения дополнительной информации. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 0 Диапазон 0 - 1024 Тип перезапуска Полный перезапуск системы: Требует полного отключения кластера, удаления и восстановления файловой системы кластера из резервной копии, а затем перезапуска кластера. (NDB 9.2.0)
Принудительно использовать только указанное количество ЦП для автоматической настройки потоков. Не имеет эффекта, если
AutomaticThreadConfigне включен. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения целое число Значение по умолчанию 2 Диапазон 1 - 32 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Устанавливает количество партиций, используемых на каждом узле при создании новой таблицы
NDB. Это позволяет избежать излишнего разделения таблиц на части, когда количество локальных менеджеров данных (LDM) становится высоким.Хотя можно устанавливать этот параметр с разными значениями на разных узлах данных, и никаких известных проблем с этим нет, это также маловероятно, что это даст какие-либо преимущества; по этой причине рекомендуется просто установить его один раз для всех узлов данных в разделе
[ndbd default]глобального файлаconfig.ini.Если
ClassicFragmentationвключен, любое значение для этого параметра игнорируется. (Помните, что включениеAutomaticThreadConfigотключаетClassicFragmentation.)
-
ThreadConfigВерсия (или более поздняя) NDB 9.2.0 Тип или единицы строка Значение по умолчанию '' Диапазон ... Тип перезапуска Перезапуск системы: Требуется полная остановка и перезапуск кластера. (NDB 9.2.0)
Этот параметр используется с ndbmtd для назначения потоков различных типов на различные ЦП. Его значение — это строка, формат которой имеет следующий синтаксис:
ThreadConfig :=
entry[,entry[,...]]entry:=type={param[,param[,...]]}type:= ldm | query | recover | main | recv | send | rep | io | tc | watchdog | idxbldparam:= count=number| cpubind=cpu_list| cpuset=cpu_list| spintime=number| realtime={0|1} | nosend={0|1} | thread_prio={0..10} | cpubind_exclusive=cpu_list| cpuset_exclusive=cpu_listФигурные скобки (
{...}), окружающие список параметров, обязательны, даже если в списке только один параметр.param(параметр) указывает любую или все из следующих сведений:Количество потоков данного типа (
count).-
Набор ЦП, к которым потоки данного типа должны быть привязаны неисключительно. Это определяется одним из
cpubindилиcpuset).cpubindприводит к тому, что каждый поток привязывается (неисключительно) к ЦП в наборе;cpusetозначает, что каждый поток привязывается (неисключительно) к набору указанных ЦП.В Solaris можно вместо этого указать набор ЦП, к которым потоки данного типа должны быть привязаны исключительно.
cpubind_exclusiveприводит к тому, что каждый поток привязывается исключительно к ЦП в наборе;cpuset_exclsuiveозначает, что каждый поток привязывается исключительно к набору указанных ЦП.В одном конфигурационном файле может быть указан только один из
cpubind,cpuset,cpubind_exclusiveилиcpuset_exclusive. -
spintimeопределяет время ожидания в микросекундах, которое поток тратит на вращение, прежде чем перейти в режим ожидания.Значение по умолчанию для
spintime— это значение параметра конфигурации узла данныхSchedulerSpinTimer.spintimeне применяется к потокам Ввода/Вывода, потокам-сторожам или потокам построения автономных индексов, поэтому его нельзя установить для этих типов потоков. -
realtimeможно установить в 0 или 1. Если оно установлено в 1, потоки работают с приоритетом реального времени. Это также означает, чтоthread_prioнельзя установить.Параметр
realtimeпо умолчанию установлен на значение параметра конфигурации узла данныхRealtimeScheduler.realtimeнельзя установить для потоков построения автономных индексов. Установив
nosendв 1, можно предотвратить помощь потокаmain,ldm,repилиtcпотокам отправки. По умолчанию этот параметр равен 0, и его нельзя использовать с другими типами потоков.-
thread_prio— это уровень приоритета потока, который можно установить от 0 до 10, где 10 соответствует наивысшему приоритету. Значение по умолчанию — 5. Точное влияние этого параметра зависит от платформы и описано позднее в этом разделе.Уровень приоритета потока нельзя установить для потоков построения автономных индексов.
Параметры thread_prio и их влияние на платформы. Реализация
thread_prioотличается в Linux/FreeBSD, Solaris и Windows. В следующем списке мы обсудим их влияние на каждую из этих платформ:-
Linux и FreeBSD: Мы сопоставляем
thread_prioсо значением, которое необходимо передать системному вызовуnice. Поскольку меньшее значение niceness для процесса означает более высокий приоритет процесса, увеличениеthread_prioприводит к снижению значенияnice.Таблица 25.12 Сопоставление thread_prio со значениями nice в Linux и FreeBSD
Таблица 25.12 Сопоставление thread_prio со значениями nice в Linux и FreeBSD Значение thread_prioЗначение nice0 19 1 16 2 12 3 8 4 4 5 0 6 -4 7 -8 8 -12 9 -16 10 -20 Некоторые операционные системы могут предоставлять максимальный уровень niceness процесса 20, но это не поддерживается всеми целевыми версиями; по этой причине мы выбираем 19 в качестве максимального значения
nice, которое можно установить. -
Solaris: Установка
thread_prioв Solaris устанавливает приоритет Solaris FX, сопоставления приведены в следующей таблице:Таблица 25.13 Сопоставление thread_prio с приоритетом FX в Solaris
Таблица 25.13 Сопоставление thread_prio с приоритетом FX в Solaris Значение thread_prioПриоритет Solaris FX0 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 APISetThreadPriority(). Это сопоставление показано в следующей таблице:Таблица 25.14 Сопоставление thread_prio с приоритетом потока Windows
Таблица 25.14 Сопоставление thread_prio с приоритетом потока Windows Значение thread_prioПриоритет потока Windows 0 - 1 THREAD_PRIORITY_LOWEST2 - 3 THREAD_PRIORITY_BELOW_NORMAL4 - 5 THREAD_PRIORITY_NORMAL6 - 7 THREAD_PRIORITY_ABOVE_NORMAL8 - 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), при условии выполнения двух следующих условий:
Каждый поток LDM обрабатывает не более 8 фрагментов, и
Общее количество фрагментов таблицы является целым кратным числу потоков 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, включают следующие:
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 64 МБ Диапазон 4 МБ - 16 ТБ Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Это количество записей страниц (ссылок на страницы) для выделения. Оно указывается как число страниц по 32 КБ в
DiskPageBufferMemory. Значение по умолчанию достаточно для большинства случаев, но может потребоваться увеличить это значение, если возникают проблемы с очень большими транзакциями в таблицах на диске. Каждая запись страницы требует примерно 100 байтов. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 64 МБ Диапазон 4 МБ - 16 ТБ Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Это определяет объем памяти в байтах, используемый для кэширования страниц на диске, и настраивается в разделе
[ndbd]или[ndbd default]файлаconfig.ini.Если значение для
DiskPageBufferMemoryустановлено слишком низким в сочетании с использованием большего, чем по умолчанию, количества потоков LDM вThreadConfig(например,{ldm=6...}), могут возникнуть проблемы при попытке добавления большого (например, 500 ГБ) файла данных в таблицу на дискеNDB, где процесс будет занимать неопределенно долгое время, используя один из ядер процессора.Это происходит потому, что при добавлении файла данных в табличное пространство страницы области выделения блокируются в памяти в дополнительном потоке PGMAN, для быстрого доступа к метаданным. При добавлении большого файла у этого потока недостаточно памяти для всех метаданных файла данных. В таких случаях необходимо либо увеличить
DiskPageBufferMemory, либо добавить файлы табличного пространства меньшего размера. Возможно, также потребуется настроитьDiskPageBufferEntries.Вы можете запросить таблицу
ndbinfo.diskpagebuffer, чтобы определить, следует ли увеличить значение этого параметра для минимизации ненужных обращений к диску. Дополнительную информацию см. в разделе 25.6.17.31, «Таблица ndbinfo diskpagebuffer». -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения байты Значение по умолчанию 128 МБ Диапазон 0 - 64 ТБ Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр определяет объем памяти, используемой для буферов журнала, операций с диском (таких как запросы страниц и очереди ожидания), и метаданных для табличных пространств, групп файлов журнала,
UNDOфайлов и файлов данных. Общий пул общей памяти также предоставляет память, необходимую для удовлетворения требований к памяти параметраUNDO_BUFFER_SIZE, используемого сCREATE LOGFILE GROUPиALTER LOGFILE GROUP, включая любое значение по умолчанию, подразумеваемое для этого параметра настройкой параметра конфигурации узла данныхInitialLogFileGroup.SharedGlobalMemoryможно установить в разделе[ndbd]или[ndbd default]файла конфигурацииconfig.ini, и измеряется в байтах.Значение по умолчанию —
128M. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения потоки Значение по умолчанию 2 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр определяет количество несвязанных потоков, используемых для доступа к файлам данных на диске. До введения
DiskIOThreadPool, для каждого файла данных на диске создавался ровно один поток, что могло привести к проблемам с производительностью, особенно при использовании очень больших файлов данных. СDiskIOThreadPoolвы можете, например, получить доступ к одному большому файлу данных, используя несколько потоков, работающих параллельно.Этот параметр относится только к потокам ввода-вывода данных на диске.
Оптимальное значение этого параметра зависит от вашего оборудования и конфигурации, и включает следующие факторы:
-
Физическое расположение файлов данных на диске. Вы можете получить лучшую производительность, разместив файлы данных, файлы журнала отката и файловую систему узла данных на отдельных физических дисках. Если вы сделаете это для некоторых или всех этих наборов файлов, то вы можете (и должны) установить
DiskIOThreadPoolвыше, чтобы разрешить работу отдельных потоков с файлами на каждом диске.Вы также должны отключить
DiskDataUsingSameDiskпри использовании отдельного диска или дисков для файлов данных на диске; это увеличивает скорость выполнения контрольных точек табличных пространств данных на диске. -
Производительность и типы дисков. Количество потоков, которые могут быть использованы для обработки файлов данных на диске, также зависит от скорости и пропускной способности дисков. Более быстрые диски и большая пропускная способность позволяют использовать больше потоков ввода-вывода с диска. Результаты наших тестов показывают, что твердотельные накопители могут обрабатывать намного больше потоков ввода-вывода с диска, чем обычные диски, поэтому можно установить более высокие значения для
DiskIOThreadPool.Также рекомендуется уменьшить
TimeBetweenGlobalCheckpointsпри использовании твердотельных накопителей, особенно тех, которые используют NVMe. См. также параметры задержки данных на диске.
Значение по умолчанию для этого параметра равно 2.
-
-
Параметры файловой системы Дисковых данных. Параметры в следующем списке позволяют размещать файлы NDB Cluster Дисковых данных в определенных каталогах без необходимости использования символических ссылок.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы имя файла Значение по умолчанию FileSystemPath Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с использованием
--initial. (NDB 9.2.0)Если этот параметр указан, файлы данных и файлы журнала отката Дисковых данных кластера NDB размещаются в указанном каталоге. Это можно переопределить для файлов данных, файлов журнала отката или обоих, указав значения для
FileSystemPathDataFiles,FileSystemPathUndoFilesили обоих, как объяснено для этих параметров. Его также можно переопределить для файлов данных, указав путь в частиADD DATAFILEоператораCREATE TABLESPACEилиALTER TABLESPACE, и для файлов журнала отката — указав путь в частиADD UNDOFILEоператораCREATE LOGFILE GROUPилиALTER LOGFILE GROUP. ЕслиFileSystemPathDDне указан, используетсяFileSystemPath.Если для данного узла данных указан каталог
FileSystemPathDD(в том числе в случае, когда параметр указан в разделе[ndbd default]файлаconfig.ini), то при запуске этого узла данных с помощью--initialвсе файлы в каталоге будут удалены. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы имя файла Значение по умолчанию FileSystemPathDD Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с использованием
--initial. (NDB 9.2.0)Если этот параметр указан, файлы данных кластера NDB Дисковых данных размещаются в указанном каталоге. Это переопределяет любое значение, заданное для
FileSystemPathDD. Этот параметр может быть переопределён для данного файла данных, указав путь в частиADD DATAFILEоператораCREATE TABLESPACEилиALTER TABLESPACE, используемого для создания этого файла данных. ЕслиFileSystemPathDataFilesне указан, используетсяFileSystemPathDD(илиFileSystemPath, еслиFileSystemPathDDтакже не задано).Если для данного узла данных указан каталог
FileSystemPathDataFiles(в том числе в случае, когда параметр указан в разделе[ndbd default]файлаconfig.ini), то при запуске этого узла данных с помощью--initialвсе файлы в каталоге будут удалены. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы имя файла Значение по умолчанию FileSystemPathDD Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с использованием
--initial. (NDB 9.2.0)Если этот параметр указан, файлы журнала отката Дисковых данных кластера NDB размещаются в указанном каталоге. Это переопределяет любое значение, заданное для
FileSystemPathDD. Этот параметр может быть переопределён для данного файла данных, указав путь в частиADD UNDOоператораCREATE LOGFILE GROUPилиALTER LOGFILE GROUP, используемого для создания этого файла данных. ЕслиFileSystemPathUndoFilesне указан, используетсяFileSystemPathDD(илиFileSystemPath, еслиFileSystemPathDDтакже не задано).Если для данного узла данных указан каталог
FileSystemPathUndoFiles(в том числе в случае, когда параметр указан в разделе[ndbd default]файлаconfig.ini), то при запуске этого узла данных с помощью--initialвсе файлы в каталоге будут удалены.
Дополнительную информацию см. в разделе 25.6.11.1, «Объекты Дисковых данных кластера NDB».
-
-
Параметры создания объекта Disk Data. Следующие два параметра позволяют — при первом запуске кластера — создать группу файлов журнала Disk Data, табличное пространство или оба без использования SQL-запросов.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения строка Значение по умолчанию [см. документацию] Диапазон ... Тип перезапуска Перезапуск системы: Требуется полная остановка и перезапуск кластера. (NDB 9.2.0)
Этот параметр может использоваться для указания группы файлов журнала, которая создается при первоначальном запуске кластера.
InitialLogFileGroupуказывается следующим образом:InitialLogFileGroup = [name=
name;] [undo_buffer_size=size;]file-specification-listfile-specification-list:file-specification[;file-specification[; ...]]file-specification:filename:sizenameгруппы файлов журнала необязательны и по умолчанию равны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 при различных значениях на разных узлах данных не определено. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения строка Значение по умолчанию [см. документацию] Диапазон ... Тип перезапуска Перезапуск системы: Требуется полная остановка и перезапуск кластера. (NDB 9.2.0)
Этот параметр может использоваться для указания табличного пространства NDB Cluster Disk Data, которое создается при первоначальном запуске кластера.
InitialTablespaceуказывается следующим образом:InitialTablespace = [name=
name;] [extent_size=size;]file-specification-listnameтабличного пространства необязательны и по умолчанию равны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.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения мс Значение по умолчанию 0 Диапазон 0 - 8000 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Этот параметр контролирует максимальную допустимую среднюю задержку доступа к диску (максимум 8000 миллисекунд). Когда этот лимит достигается,
NDBначинает прерывать транзакции, чтобы снизить нагрузку на подсистему ввода-вывода Disk Data. Используйте0, чтобы отключить проверку задержек. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы измерения логический Значение по умолчанию true Диапазон ... Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 9.2.0)
Установите этот параметр в
false, если ваши табличные пространства Disk Data используют один или несколько отдельных дисков. Это позволит выполнять контрольные точки в табличные пространства с большей скоростью, чем обычно используется для совместных дисков.Когда
DiskDataUsingSameDiskравенtrue,NDBснижает скорость создания контрольных точек Disk Data, когда активна контрольная точка в оперативной памяти, чтобы обеспечить постоянную нагрузку на диск.
-
Ошибки Disk Data и GCP Stop. Ошибки, возникающие при использовании таблиц Disk Data, такие как Узел nodeid убил этот узел, так как обнаружена остановка GCP (ошибка 2303), часто называются «“ошибки GCP stop”». Такие ошибки возникают, когда журнал перегенерации не достаточно быстро записывается на диск; это обычно связано с медленными дисками и недостаточной пропускной способностью диска.
Вы можете помочь предотвратить эти ошибки, используя более быстрые диски и разместив файлы Disk Data на отдельном диске от файловой системы узла данных. Уменьшение значения TimeBetweenGlobalCheckpoints имеет тенденцию уменьшать количество данных, которые нужно записать для каждого глобального контрольного пункта, и, таким образом, может обеспечить некоторую защиту от переполнения буфера журнала отката при попытке записи глобального контрольного пункта; однако, уменьшение этого значения также позволяет меньше времени на запись GCP, поэтому это необходимо делать с осторожностью.
В дополнение к соображениям, данным для DiskPageBufferMemory, как объяснялось ранее, очень важно, чтобы параметр конфигурации DiskIOThreadPool был настроен правильно; установка DiskIOThreadPool слишком высоким очень вероятно приведет к ошибкам остановки GCP (Ошибка #37227).
Остановки GCP могут быть вызваны таймаутами сохранения или фиксации; параметр конфигурации узла данных TimeBetweenEpochsTimeout определяет таймаут для фиксации. Однако, можно отключить оба типа таймаутов, установив этот параметр в 0.
Параметры для настройки выделения памяти буфера отправки. Память буфера отправки выделяется динамически из пула памяти, совместно используемого всеми транспортерами, что означает, что размер буфера отправки может быть изменен по мере необходимости. (Ранее ядро NDB использовало буфер отправки фиксированного размера для каждого узла в кластере, который выделялся при запуске узла и не мог быть изменен во время работы узла.) Параметры конфигурации узла данных TotalSendBufferMemory и OverLoadLimit позволяют устанавливать ограничения на это выделение памяти. Более подробную информацию об использовании этих параметров (а также SendBufferMemory) см. в разделе 25.4.3.14 «Настройка параметров буфера отправки NDB Cluster».
-
Этот параметр задает количество памяти буфера отправки транспортера для выделения дополнительно к любому, установленным с помощью
TotalSendBufferMemory,SendBufferMemoryили обоими. -
Этот параметр используется для определения общего объема памяти для выделения на данном узле для общей памяти буфера отправки среди всех настроенных транспортеров.
Если этот параметр задан, его минимально допустимое значение составляет 256 КБ; 0 указывает, что параметр не задан. Более подробную информацию см. в разделе 25.4.3.14 «Настройка параметров буфера отправки NDB Cluster».
См. также раздел 25.6.7 «Добавление узлов данных NDB Cluster онлайн».
Обработка чрезмерной фиксации журнала переопределения. Можно управлять обработкой операций узлом данных, когда на запись журнала переопределения в диск затрачивается слишком много времени. Это происходит, когда запись конкретного журнала переопределения занимает более RedoOverCommitLimit секунд, более RedoOverCommitCounter раз, что приводит к прерыванию всех ожидающих транзакций. В этом случае узел API, который отправил транзакцию, может обработать операции, которые должны были быть зафиксированы, либо поместив операции в очередь и повторно их выполнив, либо прервав их, в зависимости от значения DefaultOperationRedoProblemAction.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы числовое По умолчанию 3 Диапазон 1 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Когда
RedoOverCommitLimitпревышен при попытке записи данного журнала переопределения в диск такое количество раз или более, все транзакции, которые не были зафиксированы в результате, прерываются, а узел API, где возникли эти транзакции, обрабатывает операции, составляющие эти транзакции, в соответствии со значениемDefaultOperationRedoProblemAction(либо поместив операции в очередь для повторного выполнения, либо прервав их). -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы секунды По умолчанию 20 Диапазон 1 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Этот параметр устанавливает максимальное время в секундах, в течение которого происходит попытка записи данного журнала переопределения в диск до истечения времени ожидания. Количество попыток сброса журнала данных, но время, потраченное на сброс, превышает
RedoOverCommitLimit, сохраняется и сравнивается сRedoOverCommitCounter, и когда сброс занимает слишком много времени более, чем указанное в параметре количество раз, все транзакции, которые не были зафиксированы в результате таймаута сброса, прерываются. При этом узел API, где возникла любая из этих транзакций, обрабатывает операции, составляющие эти транзакции, в соответствии с настройкойDefaultOperationRedoProblemAction(помещая операции в очередь для повторного выполнения или прерывая их).
Управление попытками перезапуска. Можно тонко управлять попытками перезапуска узлов данных, когда они не могут запуститься, используя параметры конфигурации узла данных MaxStartFailRetries и StartFailRetryDelay.
MaxStartFailRetries ограничивает общее количество попыток перезапуска до отказа запуска узла данных, StartFailRetryDelay устанавливает количество секунд между попытками перезапуска. Эти параметры перечислены здесь:
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы unsigned По умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Используйте этот параметр для установки количества секунд между попытками перезапуска узла данных в случае сбоя при запуске. По умолчанию значение равно 0 (без задержки).
И этот параметр, и
MaxStartFailRetriesигнорируются, еслиStopOnErrorравно 0. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы unsigned По умолчанию 3 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 9.2.0)
Используйте этот параметр для ограничения количества попыток перезапуска узла данных в случае сбоя при запуске. По умолчанию – 3 попытки.
И этот параметр, и
StartFailRetryDelayигнорируются, еслиStopOnErrorравно 0.
Параметры статистики индексов NDB. Параметры в следующей таблице относятся к генерации статистики индексов NDB.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 1 Диапазон 0, 1 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 9.2.0)
Включить (установить равным 1) или отключить (установить равным 0) автоматический сбор статистики при создании индексов.
-
Версия (или более поздняя) NDB 9.2.0 Тип или единицы integer Значение по умолчанию 1 Диапазон 0, 1 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 9.2.0)
Включить (установить равным 1) или отключить (установить равным 0) мониторинг индексов на наличие изменений и запускать автоматическое обновление статистики при их обнаружении. Степень изменения, необходимая для запуска обновлений, определяется настройками параметров
IndexStatTriggerPctиIndexStatTriggerScale. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы bytes Значение по умолчанию 32768 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)Максимальный объем памяти в байтах, разрешенный для сохраненной статистики любого данного индекса в системных таблицах
NDBи в кэше памяти mysqld.Независимо от любого ограничения размера всегда создается как минимум один образец. Этот размер масштабируется с помощью
IndexStatSaveScale.Размер, указанный параметром
IndexStatSaveSize, масштабируется значениемIndexStatTriggerPctдля большого индекса, умноженного на 0,01. Это дополнительно умножается на логарифм по основанию 2 размера индекса. УстановкаIndexStatTriggerPctравной 0 отключает эффект масштабирования. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы percentage Значение по умолчанию 100 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)Размер, указанный параметром
IndexStatSaveSize, масштабируется значениемIndexStatTriggerPctдля большого индекса, умноженного на 0,01. Это дополнительно умножается на логарифм по основанию 2 размера индекса. УстановкаIndexStatTriggerPctравной 0 отключает эффект масштабирования. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы percentage Значение по умолчанию 100 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)Процентное изменение обновлений, которое запускает обновление статистики индекса. Значение масштабируется с помощью
IndexStatTriggerScale. Вы можете полностью отключить этот триггер, установивIndexStatTriggerPctравным 0. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы percentage Значение по умолчанию 100 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)Масштабировать
IndexStatTriggerPctна это значение, умноженное на 0,01 для большого индекса. Значение 0 отключает масштабирование. -
Версия (или более поздняя) NDB 9.2.0 Тип или единицы seconds Значение по умолчанию 60 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 9.2.0)Минимальная задержка в секундах между автоматическими обновлениями статистики индекса для данного индекса. Установка этого параметра равной 0 отключает любую задержку. Значение по умолчанию — 60 секунд.
Типы перезапуска. Информация о типах перезапуска, используемых в описаниях параметров в этом разделе, приведена в следующей таблице:
Таблица 25.15 Типы перезапуска NDB Cluster
| Символ | Тип перезапуска | Описание |
|---|---|---|
| N | Узел | Параметр можно обновить, используя последовательный перезапуск (см. Раздел 25.6.5, «Выполнение последовательного перезапуска кластера NDB») |
| S | Система | Для изменения этого параметра необходимо полностью выключить все узлы кластера, а затем перезапустить их. |
| I | Начальный | Узлы данных должны быть перезапущены с помощью параметра --initial |
© 2025 Oracle
Licensed under the GPLv2 License.