21.4.3.6 Определение узлов данных кластера NDB
Разделы [ndbd] и [ndbd
default] используются для настройки поведения узлов данных кластера.
[ndbd] и [ndbd default] всегда используются в качестве имён разделов, независимо от того, используете ли вы бинарные файлы ndbd или ndbmtd для процессов узлов данных.
Существует множество параметров, которые контролируют размеры буферов, размеры пулов, таймауты и так далее. Единственный обязательный параметр — HostName; он должен быть определён в локальном разделе [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 Server my.cnf или my.ini, где они чувствительны к регистру.
Сведения о параметрах конфигурации, специфичных для таблиц данных NDB Cluster Disk, см. далее в этом разделе (см. Параметры конфигурации данных на диске).
Все эти параметры также применяются к ndbmtd (многопоточная версия ndbd). Три дополнительных параметра конфигурации узла данных — MaxNoOfExecutionThreads, ThreadConfig и NoOfFragmentLogParts — применяются только к ndbmtd; они не имеют никакого эффекта при использовании с ndbd. Более подробную информацию см. в разделе Параметры конфигурации многопоточности (ndbmtd). См. также Раздел 21.5.3, “ndbmtd — Демон узла данных кластера NDB (многопоточный)”.
Идентификация узлов данных. Значение NodeId или Id (то есть идентификатор узла данных) можно назначить в командной строке при запуске узла или в файле конфигурации.
-
NodeIdВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения unsigned По умолчанию [...] Диапазон 1 - 48 Тип перезапуска Первоначальный перезапуск системы: Требует полного выключения кластера, очистки и восстановления файловой системы кластера из резервной копии, а затем перезапуска кластера. (NDB 7.5.0)
Уникальный идентификатор узла используется в качестве адреса узла для всех внутренних сообщений кластера. Для узлов данных это целое число в диапазоне от 1 до 48 включительно. Каждый узел в кластере должен иметь уникальный идентификатор.
NodeId— единственное поддерживаемое имя параметра для идентификации узлов данных. (Idбыл удален в NDB 7.5.0.) -
ExecuteOnComputerВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения имя По умолчанию [...] Диапазон ... Устаревший NDB 7.5.0 Тип перезапуска Перезапуск системы: Требует полного выключения и перезапуска кластера. (NDB 7.5.0)
Это относится к набору
Idдля одного из компьютеров, определенных в разделе[computer].ВажноЭтот параметр устарел начиная с NDB 7.5.0 и может быть удален в будущих версиях. Используйте параметр
HostNameвместо него. -
HostNameВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения имя или IP-адрес По умолчанию localhost Диапазон ... Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 7.5.0)
Указание этого параметра определяет имя хоста компьютера, на котором должен находиться узел данных. Используйте
HostNameдля указания имени хоста, отличного отlocalhost. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения unsigned По умолчанию [...] Диапазон 1 - 64K Тип перезапуска Перезапуск системы: Требует полного выключения и перезапуска кластера. (NDB 7.5.0)
Каждый узел в кластере использует порт для подключения к другим узлам. По умолчанию этот порт распределяется динамически таким образом, чтобы два узла на одном компьютере не получали одинаковый номер порта, поэтому обычно нет необходимости указывать значение для этого параметра.
Однако, если вам нужно открыть определенные порты в брандмауэре для обеспечения связи между узлами данных и API-узлами (включая узлы SQL), вы можете установить этот параметр на номер нужного порта в разделе
[ndbd]или (если вам нужно сделать это для нескольких узлов данных) в разделе[ndbd default]файлаconfig.ini, а затем открыть порт с этим номером для входящих подключений от узлов SQL, API-узлов или обоих.ПримечаниеПодключения от узлов данных к управляющим узлам осуществляются через порт управляющего сервера ndb_mgmd (управляющего сервера
PortNumber), поэтому исходящие подключения к этому порту со стороны любого узла данных должны всегда разрешаться. -
TcpBind_INADDR_ANYУстановка этого параметра на
TRUEили1связываетIP_ADDR_ANYтаким образом, что подключения могут быть установлены от любого места (для автоматически сгенерированных подключений). По умолчанию устанавливается значениеFALSE(0). -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения unsigned По умолчанию [...] Диапазон 0 - 65536 Тип перезапуска Первоначальный перезапуск системы: Требует полного выключения кластера, очистки и восстановления файловой системы кластера из резервной копии, а затем перезапуска кластера. (NDB 7.5.0)
Этот параметр может использоваться для назначения узла данных определенной группе узлов. Он читается только при первом запуске кластера и не может быть использован для повторного назначения узла данных в другую группу узлов онлайн. Обычно не рекомендуется использовать этот параметр в разделе
[ndbd default]файлаconfig.ini, и необходимо следить за тем, чтобы узлы не были назначены группам узлов таким образом, чтобы в любую группу узлов было назначено неверное количество узлов.Параметр
NodeGroupпредназначен главным образом для добавления новой группы узлов в работающий кластер NDB без необходимости выполнения постепенного перезапуска. Для этой цели следует установить его значение в 65536 (максимальное значение). Вам не требуется устанавливать значениеNodeGroupдля всех узлов данных кластера, только для тех узлов, которые должны быть запущены и добавлены в кластер в качестве новой группы узлов впоследствии. Дополнительную информацию см. в разделе 21.6.7.3, “Добавление узлов данных NDB Cluster онлайн: подробный пример”. -
Версия (или более поздняя) NDB 7.6.4 Тип или единицы измерения целое число По умолчанию 0 Диапазон 0 - 16 Добавлен NDB 7.6.4 Тип перезапуска Перезапуск системы: Требует полного выключения и перезапуска кластера. (NDB 7.5.0)
Назначает узел данных определенной домене доступности (также известной как зона доступности) в облаке. Предоставляя
NDBинформацию о расположении узлов в соответствующих доменах доступности, производительность в облачной среде может быть улучшена следующим образом:Если запрашиваемые данные не найдены на том же узле, чтение может быть перенаправлено на другой узел в том же домене доступности.
Связь между узлами в разных доменах доступности гарантированно использует поддержку WAN-транспортеров без дополнительного ручного вмешательства.
Номер группы транспортера может основываться на используемом домене доступности, таким образом узлы SQL и другие API-узлы связываются с локальными узлами данных в том же домене доступности по возможности.
Арбитр может быть выбран из домена доступности, в котором нет узлов данных, или, если такой домен доступности не найден, из третьего домена доступности.
LocationDomainIdпринимает целое значение от 0 до 16 включительно, при этом 0 является значением по умолчанию; использование 0 эквивалентно отсутствию параметра.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения целое число Значение по умолчанию 2 Диапазон 1 - 2 Тип перезапуска Первоначальный перезапуск системы: Требует полного выключения кластера, удаления и восстановления файловой системы кластера из резервной копии, а затем перезапуска кластера. (NDB 7.5.0)
Этот глобальный параметр может быть задан только в разделе
[ndbd default]и определяет количество реплик фрагментов для каждой таблицы, хранящейся в кластере. Этот параметр также определяет размер групп узлов. Группа узлов — это набор узлов, все хранящие одну и ту же информацию.Группы узлов формируются неявно. Первая группа узлов формируется набором узлов данных с наименьшими идентификаторами узлов, следующая группа узлов — набором следующих по величине идентификаторов узлов и так далее. Например, предположим, что у нас есть 4 узла данных и что
NoOfReplicasустановлено в 2. Четыре узла данных имеют идентификаторы узлов 2, 3, 4 и 5. Тогда первая группа узлов формируется из узлов 2 и 3, а вторая группа узлов — из узлов 4 и 5. Важно настроить кластер таким образом, чтобы узлы в одной группе узлов не размещались на одном компьютере, так как отказ одного аппаратного обеспечения приведет к отказу всего кластера.Если идентификаторы узлов не указаны, порядок узлов данных определяет группу узлов. Независимо от того, выполняются ли явные назначения, их можно увидеть в выводе команды управления клиентом
SHOW.Значение по умолчанию и рекомендуемое максимальное значение для
NoOfReplicasсоставляет 2. Это рекомендуемое значение для большинства производственных сред.ВажноХотя теоретически возможно установить значение этого параметра в 3 или 4, NDB Cluster 7.5 и NDB Cluster 7.6 не поддерживают установку
NoOfReplicasв производственной среде со значением больше 2.ПредупреждениеУстановка
NoOfReplicasв 1 означает, что существует только одна копия всех данных кластера; в этом случае потеря одного узла данных приводит к отказу кластера, так как нет дополнительных копий данных, хранящихся на этом узле.Количество узлов данных в кластере должно быть кратно значению этого параметра. Например, если есть два узла данных, тогда
NoOfReplicasдолжно быть равно либо 1, либо 2, так как 2/3 и 2/4 дают дробные значения; если есть четыре узла данных, тоNoOfReplicasдолжно быть равно 1, 2 или 4. -
DataDirВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения путь Значение по умолчанию . Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует постепенного перезапуска кластера; каждый узел данных должен быть перезапущен с
--initial. (NDB 7.5.0)Этот параметр указывает каталог, в котором размещаются файлы трассировки, журналы, файлы pid и журналы ошибок.
Значение по умолчанию — это рабочий каталог процесса узла данных.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения путь Значение по умолчанию DataDir Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует постепенного перезапуска кластера; каждый узел данных должен быть перезапущен с
--initial. (NDB 7.5.0)Этот параметр указывает каталог, в котором размещаются все файлы, созданные для метаданных, журналов REDO, журналов UNDO (для таблиц данных на диске) и файлов данных. Значение по умолчанию — каталог, указанный параметром
DataDir.ПримечаниеЭтот каталог должен существовать до запуска процесса ndbd.
Рекомендуемая иерархия каталогов для NDB Cluster включает в себя
/var/lib/mysql-cluster, в котором создается каталог для файловой системы узла. Название этого подкаталога содержит идентификатор узла. Например, если идентификатор узла равен 2, этот подкаталог называетсяndb_2_fs. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения путь Значение по умолчанию FileSystemPath Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует постепенного перезапуска кластера; каждый узел данных должен быть перезапущен с
--initial. (NDB 7.5.0)Этот параметр указывает каталог, в котором размещаются резервные копии.
ВажноК этому значению всегда добавляется строка '
/BACKUP'. Например, если вы установили значениеBackupDataDirв/var/lib/cluster-data, то все резервные копии хранятся в/var/lib/cluster-data/BACKUP. Это также означает, что фактическое расположение резервной копии по умолчанию — это каталог, названныйBACKUPв расположении, указанном параметромFileSystemPath.
Память данных, память индексов и память строк
DataMemory и IndexMemory являются параметрами [ndbd], определяющими размер сегментов памяти, используемых для хранения фактических записей и их индексов. При установке значений важно понять, как используются DataMemory и IndexMemory, так как обычно их необходимо обновлять, чтобы отразить фактическое использование кластером.
IndexMemory устарел в NDB 7.6 и может быть удален в будущих версиях NDB Cluster. См. описания ниже для получения дополнительной информации.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 80М Диапазон 1М - 1Т Версия (или более поздняя) NDB 7.6.2 Тип или единицы измерения байты Значение по умолчанию 98М Диапазон 1М - 1Т Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр определяет объём памяти (в байтах), выделенный для хранения записей базы данных. Весь указанный объём выделяется в памяти, поэтому крайне важно, чтобы у машины было достаточно физической памяти для его размещения.
Память, выделенная параметром
DataMemory, используется для хранения как самих записей, так и индексов. На каждую запись приходится 16-байтный накладной расход; дополнительная часть для каждой записи возникает из-за хранения в 32КБ странице с накладными расходами 128 байт на страницу (см. ниже). Также небольшое количество памяти тратится на страницу из-за того, что каждая запись хранится только на одной странице.Для атрибутов таблицы с переменной длиной данные хранятся на отдельных страницах данных, выделенных из
DataMemory. Записи переменной длины используют фиксированную часть с дополнительными накладными расходами в 4 байта для ссылки на переменную часть. Переменная часть имеет накладные расходы в 2 байта плюс 2 байта на атрибут.Максимальный размер записи составляет 14000 байт.
В NDB 7.5 (и более ранних версиях) выделенная параметром
DataMemoryпамять также используется для хранения упорядоченных индексов, которые занимают около 10 байт на запись. В упорядоченном индексе представлена каждая строка таблицы. Распространённая ошибка пользователей заключается в предположении, что все индексы хранятся в памяти, выделенной параметромIndexMemory, но это не так: только первичные ключи и уникальные хеш-индексы используют эту память; упорядоченные индексы используют память, выделенную параметромDataMemory. Однако создание первичного ключа или уникального хеш-индекса также создаёт упорядоченный индекс по тем же ключам, если вы не укажетеUSING HASHв инструкции создания индекса. Это можно проверить, запустив ndb_desc -ddb_nametable_name.В NDB 7.6 ресурсы, выделенные для
DataMemory, используются для хранения всех данных и индексов; любая память, сконфигурированная какIndexMemory, автоматически добавляется к той, что используетсяDataMemory, образуя общий пул ресурсов.Выделенная параметром
DataMemoryпамять состоит из 32КБ страниц, которые выделяются для фрагментов таблиц. Каждая таблица обычно разбивается на такое же количество фрагментов, как и узлов данных в кластере. Таким образом, для каждого узла существует такое же количество фрагментов, как и установлено вNoOfReplicas.После выделения страницы её в настоящее время нельзя вернуть в пул свободных страниц, за исключением удаления таблицы. (Это также означает, что страницы
DataMemory, после выделения для данной таблицы, не могут быть использованы другими таблицами.) Восстановление узла данных также сжимает раздел, так как все записи вставляются в пустые разделы с других активных узлов.В памяти
DataMemoryтакже содержится информация UNDO: для каждого обновления копия неизменённой записи выделяется вDataMemory. В упорядоченных индексах таблиц также есть ссылка на каждую копию. Уникальные хеш-индексы обновляются только при обновлении столбцов уникального индекса, в этом случае при подтверждении новая запись в таблице индекса вставляется, а старая удаляется. По этой причине также необходимо выделить достаточно памяти для обработки наибольших транзакций, выполняемых приложениями, использующими кластер. В любом случае, выполнение нескольких больших транзакций не имеет преимуществ перед использованием многих меньших, по следующим причинам:Большие транзакции не быстрее, чем маленькие
Большие транзакции увеличивают количество операций, которые теряются и должны быть повторены в случае сбоя транзакции
Большие транзакции используют больше памяти
В NDB 7.5 (и более ранних версиях) значение по умолчанию для
DataMemoryсоставляет 80 МБ; в NDB 7.6 — 98 МБ. Минимальное значение — 1 МБ. Максимального размера нет, но на практике максимальный размер должен быть подобран таким образом, чтобы процесс не начал подкачку, когда достигнет предела. Этот предел определяется количеством доступной физической оперативной памяти на машине и количеством памяти, которое операционная система может задействовать для одного процесса. 32-битные операционные системы, как правило, ограничены 2−4 ГБ на процесс; 64-битные операционные системы могут использовать больше. Для больших баз данных по этой причине предпочтительнее использовать 64-битную операционную систему. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 18М Диапазон 1М - 1Т Версия (или более поздняя) NDB 7.6.2 Тип или единицы измерения байты Значение по умолчанию 0 Диапазон 1М - 1Т Устаревший NDB 7.6.2 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
В NDB 7.5 и более ранних версиях этот параметр управляет объёмом памяти, используемой для хеш-индексов в NDB Cluster. Хеш-индексы всегда используются для первичных ключей, уникальных индексов и уникальных ограничений. При определении первичного ключа или уникального индекса создаются два индекса, один из которых является хеш-индексом, используемым для всех обращений к кортежам и обработки блокировок. Этот индекс также используется для обеспечения уникальных ограничений.
В NDB 7.6.2 параметр
IndexMemoryустарел (и подлежит будущему удалению); любая память, выделенная дляIndexMemory, вместо этого выделяется в тот же пул, что иDataMemory, который становится единственным ответственным за все ресурсы, необходимые для хранения данных и индексов в памяти. В NDB 7.6 использованиеIndexMemoryв конфигурационном файле кластера генерирует предупреждение от сервера управления.Вы можете оценить размер хеш-индекса, используя эту формулу:
size = ( (
fragments* 32K) + (rows* 18) ) *fragment_replicasfragments— количество фрагментов,fragment_replicas— количество реплик фрагментов (обычно два), а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, по двум четырёхбайтным целым числам. Предположим также, что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 байт.
До NDB 7.6 значение по умолчанию для
IndexMemoryсоставляет 18 МБ, а минимум — 1 МБ; в NDB 7.6 минимальное и значение по умолчанию для этого параметра — 0 (ноль). Это имеет последствия для понижающих обновлений с NDB 7.6 до более ранних версий NDB Cluster; см. Раздел 21.3.7, «Обновление и понижающее обновление NDB Cluster», для получения дополнительной информации.
-
Version (or later) NDB 7.5.0 Type or units % или байты Default 25 Range 0 - 4294967039 (0xFFFFFEFF) Restart Type Перезагрузка системы: Требуется полная остановка и перезагрузка кластера. (NDB 7.5.0)
Этот параметр определяет, сколько памяти выделяется для строк, таких как имена таблиц, и задаётся в разделе
[ndbd]или[ndbd default]файлаconfig.ini. Значение от0до100включительно интерпретируется как процент от максимального значения по умолчанию, которое рассчитывается на основе ряда факторов, включая количество таблиц, максимальный размер имени таблицы, максимальный размер файлов.FRM,MaxNoOfTriggers, максимальный размер имени колонки и максимальное значение колонки по умолчанию.Значение, большее чем
100, интерпретируется как количество байтов.Значение по умолчанию равно 25 — то есть 25 процентов от максимального значения по умолчанию.
В большинстве случаев значения по умолчанию должно быть достаточно, но при большом количестве таблиц
NDB(1000 или более) может появиться ошибка 773 Недостаточно памяти для строк, пожалуйста, измените параметр StringMemory: Постоянная ошибка: ошибка схемы, в таком случае необходимо увеличить это значение. Значение по умолчанию (25 процентов) не избыточно и должно предотвратить появление этой ошибки за исключением самых экстремальных случаев.
Следующий пример иллюстрирует, как используется память для таблицы. Рассмотрим следующее определение таблицы:
CREATE TABLE example (
a INT NOT NULL,
b INT NOT NULL,
c INT NOT NULL,
PRIMARY KEY(a),
UNIQUE(b)
) ENGINE=NDBCLUSTER;
Для каждой записи есть 12 байтов данных плюс 12 байтов накладных расходов. Отсутствие nullable столбцов экономит 4 байта накладных расходов. Кроме того, у нас есть два упорядоченных индекса по столбцам a и b, потребляющих приблизительно 10 байтов на запись. Есть первичный индекс хеширования по основной таблице, использующий примерно 29 байтов на запись. Уникальное ограничение реализовано отдельной таблицей с b в качестве первичного ключа и a в качестве столбца. Эта дополнительная таблица потребляет дополнительные 29 байтов индексной памяти на запись в таблице example а также 8 байтов данных записи плюс 12 байтов накладных расходов.
Таким образом, для одного миллиона записей нам нужно 58 МБ индексной памяти для обработки индексов хеширования первичного ключа и уникального ограничения. Нам также нужно 64 МБ для записей основной таблицы и таблицы уникального индекса, плюс две таблицы упорядоченных индексов.
Вы можете видеть, что индексы хеширования занимают значительное количество памяти, но в свою очередь обеспечивают очень быстрый доступ к данным. Они также используются в NDB Cluster для обработки ограничений уникальности.
В настоящее время единственный алгоритм разбиения — хеширование, а упорядоченные индексы локальны для каждого узла. Поэтому упорядоченные индексы не могут использоваться для обработки ограничений уникальности в общем случае.
Важный момент как для IndexMemory, так и для DataMemory заключается в том, что общий размер базы данных является суммой всей памяти данных и всей индексной памяти для каждой группы узлов. Каждая группа узлов используется для хранения дублированных данных, поэтому если есть четыре узла с двумя репликами фрагмента, то есть две группы узлов. Таким образом, общая доступная память данных составляет 2 × DataMemory для каждого узла данных.
Настоятельно рекомендуется установить DataMemory и IndexMemory в одинаковые значения для всех узлов. Распределение данных равномерно по всем узлам кластера, поэтому максимальное количество доступного места для любого узла не может превышать наименьшего узла в кластере.
DataMemory (и в NDB 7.5 и более ранних версиях IndexMemory) можно изменить, но уменьшение этого параметра может быть рискованным; это может легко привести к тому, что узел или даже весь NDB Cluster не смогут перезапуститься из-за недостатка места в памяти. Увеличение должно быть приемлемо, но рекомендуется проводить такие обновления так же, как и обновление программного обеспечения, начиная с обновления файла конфигурации, а затем перезапуска сервера управления, а затем поочередно перезапускать каждый узел данных.
MinFreePct. Доля (5% по умолчанию) ресурсов узла данных, включая DataMemory (и в NDB 7.5 и более ранних версиях IndexMemory) резервируется, чтобы гарантировать, что узел данных не исчерпает память при перезапуске. Это можно настроить с помощью параметра конфигурации узла данных MinFreePct (по умолчанию 5).
| Version (or later) | NDB 7.5.0 |
|---|---|
| Type or units | unsigned |
| Default | 5 |
| Range | 0 - 100 |
| Restart Type | Перезагрузка узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0) |
Обновления не увеличивают используемую индексную память. Вставки действуют немедленно; однако строки фактически не удаляются до тех пор, пока транзакция не будет подтверждена.
Параметры транзакций. Следующие несколько [ndbd] параметров, которые мы обсудим, важны, потому что они влияют на количество параллельных транзакций и размеры транзакций, которые может обработать система. MaxNoOfConcurrentTransactions задает количество возможных параллельных транзакций в узле. MaxNoOfConcurrentOperations задает количество записей, которые могут быть в фазе обновления или заблокированы одновременно.
Оба этих параметра (особенно MaxNoOfConcurrentOperations) вероятно будут изменены пользователями, а не будут использоваться значения по умолчанию. Значение по умолчанию установлено для систем с небольшими транзакциями, чтобы гарантировать, что они не используют чрезмерно много памяти.
MaxDMLOperationsPerTransaction устанавливает максимальное количество операций DML, которые могут быть выполнены в данной транзакции.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию 4096 Диапазон 32 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.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 7.5.0 Тип или единицы целое число Значение по умолчанию 32К Диапазон 32 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Рекомендуется настроить значение этого параметра в зависимости от размера и количества транзакций. При выполнении транзакций, включающих только несколько операций и записей, значение по умолчанию для этого параметра обычно достаточно. Выполнение больших транзакций, включающих множество записей, обычно требует увеличения его значения.
Записи хранятся для каждой транзакции, обновляющей данные кластера, как в координаторе транзакций, так и в узлах, где выполняются фактические обновления. Эти записи содержат информацию о состоянии, необходимую для поиска записей UNDO для отката, очередей блокировок и других целей.
Этот параметр должен быть установлен как минимум на количество записей, которые одновременно обновляются в транзакциях, делённое на количество узлов данных кластера. Например, в кластере с четырьмя узлами данных, который, как ожидается, будет обрабатывать один миллион одновременных обновлений с помощью транзакций, вы должны установить это значение на 1000000 / 4 = 250000. Для повышения устойчивости к сбоям рекомендуется установить этот параметр на значение, достаточно высокое, чтобы позволить одному узлу данных обрабатывать нагрузку для своей группы узлов. Другими словами, вы должны установить значение, равное
total number of concurrent operations / number of node groups. (В случае одной группы узлов это то же самое, что и общее количество одновременных операций для всего кластера.)Так как каждая транзакция всегда включает как минимум одну операцию, значение
MaxNoOfConcurrentOperationsдолжно всегда быть больше или равно значениюMaxNoOfConcurrentTransactions.Запросы чтения, которые устанавливают блокировки, также приводят к созданию записей операций. Некоторая дополнительная память выделяется внутри отдельных узлов для случаев, когда распределение не идеально по узлам.
Когда запросы используют уникальный индекс хеширования, фактически используется две записи операций на запись в транзакции. Первая запись представляет чтение в таблице индекса, а вторая обрабатывает операцию в основной таблице.
Значение по умолчанию составляет 32768.
Этот параметр фактически обрабатывает два значения, которые можно настроить отдельно. Первое из них указывает, сколько записей операций должно быть размещено у координатора транзакций. Вторая часть указывает, сколько записей операций должно быть локально для базы данных.
Очень большая транзакция, выполненная в кластере из восьми узлов, требует столько же записей операций в координаторе транзакции, сколько чтений, обновлений и удалений, участвующих в транзакции. Однако записи операций распределены по всем восьми узлам. Таким образом, если необходимо настроить систему для одной очень большой транзакции, рекомендуется настроить две части отдельно.
MaxNoOfConcurrentOperationsвсегда используется для расчета количества записей операций в части координатора транзакций узла.Также важно иметь представление о требованиях к памяти для записей операций. Они потребляют около 1 КБ на запись.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию UNDEFINED Диапазон 32 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
По умолчанию этот параметр вычисляется как 1,1 ×
MaxNoOfConcurrentOperations. Это подходит для систем с множеством одновременных транзакций, ни одна из которых не является очень большой. Если необходимо обрабатывать одну очень большую транзакцию за раз и много узлов, рекомендуется переопределить значение по умолчанию, явно указав этот параметр. -
MaxDMLOperationsPerTransactionВерсия (или более поздняя) NDB 7.5.0 Тип или единицы операции (DML) Значение по умолчанию 4294967295 Диапазон 32 - 4294967295 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр ограничивает размер транзакции. Транзакция прерывается, если для неё требуется больше этого количества операций DML.
Временное хранилище транзакций. Следующий набор параметров [ndbd] используется для определения временного хранилища при выполнении оператора, который является частью транзакции кластера. Все записи освобождаются при завершении оператора, и кластер ожидает подтверждения или отката.
Значения по умолчанию для этих параметров подходят для большинства случаев. Однако пользователям, которым необходимо поддерживать транзакции, включающие большое количество строк или операций, может потребоваться увеличить эти значения для лучшей параллельности в системе, тогда как пользователи, приложения которых требуют относительно небольшие транзакции, могут уменьшить значения для экономии памяти.
-
MaxNoOfConcurrentIndexOperationsВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения целое число Значение по умолчанию 8К Диапазон 0 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Для запросов, использующих уникальный индекс хэширования, во время выполнения запроса используется другой временный набор записей операций. Этот параметр устанавливает размер этого пула записей. Таким образом, эта запись выделяется только во время выполнения части запроса. Как только эта часть будет выполнена, запись освобождается. Состояние, необходимое для обработки отказов и подтверждений, обрабатывается обычными записями операций, где размер пула устанавливается параметром
MaxNoOfConcurrentOperations.Значение этого параметра по умолчанию составляет 8192. В редких случаях очень высокой параллельности с использованием уникальных индексов хэширования может потребоваться увеличение этого значения. Использование меньшего значения возможно и может сэкономить память, если DBA уверен, что высокая степень параллельности для кластера не требуется.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения целое число Значение по умолчанию 4000 Диапазон 0 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Значение по умолчанию параметра
MaxNoOfFiredTriggersсоставляет 4000, что достаточно для большинства ситуаций. В некоторых случаях его можно уменьшить, если DBA уверен, что потребность в параллельности в кластере не высока.Запись создается, когда выполняется операция, влияющая на уникальный индекс хэширования. Вставка или удаление записи в таблице с уникальными индексами хэширования или обновление столбца, являющегося частью уникального индекса хэширования, вызывает срабатывание вставки или удаления в таблице индексов. Результирующая запись используется для представления операции таблицы индексов в ожидании завершения исходной операции, которая её инициировала. Эта операция кратковременна, но всё же может потребовать большого количества записей в своём пуле в ситуациях с многими параллельными операциями записи в базовой таблице, содержащей набор уникальных индексов хэширования.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 1М Диапазон 1К - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Память, на которую влияет этот параметр, используется для отслеживания операций, срабатывающих при обновлении таблиц индексов и чтении уникальных индексов. Эта память используется для хранения ключа и информации о столбце для этих операций. Очень редко возникает необходимость изменить значение этого параметра от значения по умолчанию.
Значение по умолчанию для
TransactionBufferMemoryсоставляет 1 МБ.Обычные операции чтения и записи используют аналогичный буфер, использование которого еще более кратковременное. Параметр компиляции
ZATTRBUF_FILESIZE(находящийся вndb/src/kernel/blocks/Dbtc/Dbtc.hpp) установлен на 4000 × 128 байт (500 КБ). Аналогичный буфер для информации о ключе,ZDATABUF_FILESIZE(также вDbtc.hpp), содержит 4000 × 16 = 62,5 КБ буферного пространства.Dbtc— модуль, который обрабатывает координацию транзакций.
Сканирование и буферизация. Существуют дополнительные [ndbd] параметры в модуле Dblqh (в ndb/src/kernel/blocks/Dblqh/Dblqh.hpp), которые влияют на чтение и обновление. К ним относятся ZATTRINBUF_FILESIZE, установленный по умолчанию на 10000 × 128 байт (1250 КБ) и ZDATABUF_FILE_SIZE, установленный по умолчанию на 10000*16 байт (приблизительно 156 КБ) буферного пространства. На сегодняшний день ни от пользователей, ни от результатов наших собственных обширных тестов не поступало сообщений о необходимости увеличения этих временных ограничений.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения целое число Значение по умолчанию 256 Диапазон 1 - 992 Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр используется для расчета количества записей блокировок, используемых для обработки одновременных операций сканирования.
BatchSizePerLocalScanтесно связан с параметромBatchSize, определенным в узлах SQL. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 64М Диапазон 512К - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Это внутренний буфер, используемый для передачи сообщений внутри отдельных узлов и между ними. Значение по умолчанию — 64 МБ.
Этот параметр редко требует изменения от значения по умолчанию.
-
Версия (или более поздняя) NDB 7.6.4 Тип или единицы измерения целое число Значение по умолчанию 64 Диапазон 16 - 512 Добавлена NDB 7.6.4 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Максимальный размер пакет сканирования, используемый для построения внешних ключей. Увеличение значения этого параметра может ускорить построение внешних ключей, но при этом увеличится нагрузка на текущий трафик.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения целое число Значение по умолчанию 256 Диапазон 2 - 500 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр используется для управления количеством параллельных сканирований, которые могут выполняться в кластере. Каждый координатор транзакций может обрабатывать количество параллельных сканирований, определенное для этого параметра. Каждое запросы сканирования выполняются путем параллельного сканирования всех разделов. Каждое сканирование раздела использует запись сканирования в узле, где находится раздел, количество записей равняется значению этого параметра, умноженному на количество узлов. Кластер должен быть в состоянии поддерживать
MaxNoOfConcurrentScansсканирований одновременно со всех узлов в кластере.Сканирования фактически выполняются в двух случаях. Первый из этих случаев возникает, когда нет хэш-индексов или индексов по порядку для обработки запроса, в этом случае запрос выполняется путем полного сканирования таблицы. Второй случай возникает, когда нет хэш-индекса для поддержки запроса, но есть индекс по порядку. Использование индекса по порядку означает выполнение параллельного диапазонного сканирования. Порядок сохраняется только в локальных разделах, поэтому необходимо выполнить сканирование индекса по всем разделам.
Значение по умолчанию для
MaxNoOfConcurrentScansсоставляет 256. Максимальное значение — 500. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения целое число Значение по умолчанию 4 * MaxNoOfConcurrentScans * [# узлов данных] + 2 Диапазон 32 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 8.0) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Указывает количество записей локального сканирования, если многие сканирования не полностью паралелизованы. Когда количество записей локального сканирования не указано, оно рассчитывается следующим образом:
4 *
MaxNoOfConcurrentScans* [# data nodes] + 2Минимальное значение — 32.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения целое число Значение по умолчанию 0 Диапазон 0 - 64 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр задает параллелизм, используемый в фазе копирования при перезапуске узла или перезапуске системы, когда узел, который только что начал работу, синхронизируется с узлом, который уже содержит актуальные данные, копируя любые изменённые записи с обновлённого узла. Поскольку полная параллельность в таких случаях может привести к перегрузке,
MaxParallelCopyInstancesпредоставляет возможность уменьшить её. Значение по умолчанию этого параметра — 0. Это значение означает, что эффективный параллелизм равен количеству экземпляров LDM в узле, который только что начал работу, а также в узле, который его обновляет. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 256 Диапазон 1 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Можно настроить максимальное количество параллельных сканирований (
TUPсканирования иTUXсканирования), разрешенных до начала очереди для последовательной обработки. Можно увеличить это значение, чтобы использовать любой неиспользуемый процессор при выполнении большого количества сканирований параллельно и улучшить их производительность. -
Версия (или более поздняя) NDB 7.6.4 Тип или единицы измерения целое число Значение по умолчанию 64 Диапазон 16 - 512 Добавлена NDB 7.6.4 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Максимальный размер пакет сканирования, используемый для реорганизации разделов таблицы. Увеличение значения этого параметра может ускорить реорганизацию, но при этом увеличится нагрузка на текущий трафик.
-
Версия (или более поздняя) NDB 7.6.4 Тип или единицы целое число Значение по умолчанию 64 Диапазон 16 - 512 Добавлена NDB 7.6.4 Тип перезапуска Перезапуск узла: Требуется постепенный перезапуск кластера. (NDB 7.5.0)
Максимальный размер пакета сканирования, используемый для построения уникальных ключей. Увеличение значения этого параметра может ускорить такие построения, но при этом негативно скажется на текущем трафике.
Распределение памяти
| Версия (или более поздняя) | NDB 7.5.0 |
|---|---|
| Тип или единицы | беззнаковое |
| Значение по умолчанию | 32М |
| Диапазон | 1М - 1Г |
| Устаревший | Да (в NDB 8.0) |
| Тип перезапуска | Перезапуск узла: Требуется постепенный перезапуск кластера. (NDB 7.5.0) |
Этот параметр использовался в более старых версиях NDB Cluster, но не оказывает никакого влияния в NDB 7.5 или NDB 7.6.
Размер хеш-таблицы
| Версия (или более поздняя) | NDB 7.5.0 |
|---|---|
| Тип или единицы | потоки LDM |
| Значение по умолчанию | 240 |
| Диапазон | 0 - 3840 |
| Тип перезапуска | Перезапуск узла: Требуется постепенный перезапуск кластера. (NDB 7.5.0) |
Размер табличных хеш-таблиц, используемых NDB, настраивается с помощью этого параметра. DefaultHashMapSize может принимать любое из трёх возможных значений (0, 240, 3840).
Изначально этот параметр предназначался для облегчения обновлений, особенно понижения до и с очень старых релизов с различными значениями по умолчанию размера хеш-таблиц. Это не проблема при обновлении с NDB Cluster 7.3 (или более поздней версии) до более поздних версий.
Онлайн-уменьшение этого параметра после создания или изменения таблиц с DefaultHashMapSize равным 3840 не поддерживается.
Ведение журнала и создание контрольных точек. Следующие параметры [ndbd] контролируют поведение журналов и контрольных точек.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы байты Значение по умолчанию 16M Диапазон 4M - 1G Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Установка этого параметра позволяет напрямую управлять размером файлов журнала redo. Это может быть полезно в ситуациях, когда кластер NDB работает под высокой нагрузкой и не может достаточно быстро закрыть файлы журнала фрагментов, прежде чем попытаться открыть новые (одновременно могут быть открыты только 2 файла журнала фрагментов); увеличение размера файлов журнала фрагментов дает кластеру больше времени до того, как ему потребуется открыть каждый новый файл журнала фрагментов. Значение по умолчанию для этого параметра равно 16M.
Для получения дополнительной информации о файлах журнала фрагментов см. описание для
NoOfFragmentLogFiles. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы файлы Значение по умолчанию 27 Диапазон 20 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Этот параметр устанавливает начальное количество внутренних потоков для выделения для открытых файлов.
Значение по умолчанию равно 27.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы [см. значения] Значение по умолчанию SPARSE Диапазон SPARSE, FULL Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)По умолчанию файлы журнала фрагментов создаются разреженно при выполнении начального запуска узла данных — то есть, в зависимости от используемой операционной системы и файловой системы, не все байты обязательно записываются на диск. Однако можно переопределить это поведение и принудительно записать все байты, независимо от используемого типа платформы и файловой системы, с помощью этого параметра.
InitFragmentLogFilesпринимает одно из двух значений:SPARSE. Файлы журнала фрагментов создаются разреженно. Это значение по умолчанию.FULL. Принудительно записываются все байты файла журнала фрагментов на диск.
В зависимости от вашей операционной системы и файловой системы, установка
InitFragmentLogFiles=FULLможет помочь устранить ошибки ввода-вывода при записи в журнал REDO. -
Версия (или более поздняя) NDB 7.6.4 Тип или единицы булево Значение по умолчанию true Диапазон ... Добавлено NDB 7.6.4 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Когда
true, включены частичные локальные контрольные точки: это означает, что каждая LCP записывает только часть полной базы данных, плюс любые записи, содержащие строки, измененные с момента последней LCP; если строки не изменились, LCP обновляет только файл управления LCP и не обновляет файлы данных.Если
EnablePartialLcpотключено (false), каждая LCP использует только один файл и записывает полную контрольную точку; это требует минимального количества дискового пространства для LCP, но увеличивает нагрузку на запись для каждой LCP. Значение по умолчанию включено (true). Долю пространства, используемого частичными LCPS, можно изменить с помощью параметра для параметра конфигурацииRecoveryWork.Для получения дополнительной информации о файлах и каталогах, используемых для полных и частичных LCP, см. NDB Cluster Data Node File System Directory.
В NDB 7.6.7 и более поздних версиях установка этого параметра в
falseтакже отключает вычисление скорости записи на диск, используемой адаптивным механизмом управления LCP. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы секунда Значение по умолчанию 60 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Контроллер фрагмента сканирования локальной контрольной точки периодически проверяет отсутствие прогресса в каждом сканировании фрагмента, выполняемом в рамках локальной контрольной точки, и выключает узел, если прогресса нет после истечения заданного времени. Этот интервал можно установить с помощью параметра конфигурации узла данных
LcpScanProgressTimeout, который устанавливает максимальное время, в течение которого локальная контрольная точка может быть заблокирована, прежде чем контроллер сканирования фрагмента LCP выключит узел.Значение по умолчанию — 60 секунд (обеспечивает совместимость с предыдущими выпусками). Установка этого параметра в 0 полностью отключает контроллер сканирования фрагмента LCP.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы без знака Значение по умолчанию 0 Диапазон 20 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Этот параметр устанавливает верхний предел количества внутренних потоков для выделения для открытых файлов. Любая ситуация, требующая изменения этого параметра, должна быть сообщена как ошибка.
Значение по умолчанию равно 0. Однако минимальное значение, которое можно установить для этого параметра, равно 20.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию 25 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Этот параметр устанавливает максимальное количество ошибок, записываемых в журнал ошибок, а также максимальное количество файлов трассировки, которые хранятся до перезаписи существующих. Файлы трассировки создаются, когда узел по какой-либо причине выходит из строя.
Значение по умолчанию равно 25, что устанавливает эти максимумы для 25 сообщений об ошибках и 25 файлов трассировки.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы секунды Значение по умолчанию 0 Диапазон 0 - 600 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
При параллельном восстановлении узла данных фактически копируются и синхронизируются только данные таблиц; синхронизация метаданных, таких как словарь и информация о контрольных точках, выполняется последовательно. Кроме того, восстановление информации о словаре и контрольных точках не может выполняться параллельно с выполнением локальных контрольных точек. Это означает, что при одновременном запуске или перезапуске многих узлов данных узлы данных могут быть вынуждены ждать выполнения локальной контрольной точки, что может привести к увеличению времени восстановления узла.
Можно принудительно задать задержку в локальной контрольной точке, чтобы позволить большему (и, возможно, всем) узлам данных завершить синхронизацию метаданных; после завершения синхронизации метаданных каждого узла данных все узлы данных могут восстанавливать данные таблиц параллельно, даже во время выполнения локальной контрольной точки. Чтобы принудительно задать такую задержку, установите
MaxLCPStartDelay, который определяет количество секунд, в течение которых кластер может ждать начала локальной контрольной точки, пока узлы данных продолжают синхронизировать метаданные. Этот параметр должен быть установлен в разделе[ndbd default]файлаconfig.ini, чтобы он был одинаковым для всех узлов данных. Максимальное значение равно 600; значение по умолчанию — 0. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию 16 Диапазон 3 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Этот параметр устанавливает количество файлов журнала REDO для узла и, следовательно, объем памяти, выделенный для ведения журнала REDO. Поскольку файлы журнала REDO организованы в кольце, крайне важно, чтобы первый и последний файлы журнала в наборе (иногда называемые файлами журнала “head” и “tail” соответственно) не пересекались. Когда они слишком приближаются друг к другу, узел начинает прерывать все транзакции, включающие обновления, из-за нехватки места для новых записей журнала.
Запись журнала
REDOне удаляется до тех пор, пока не будут завершены обе необходимые локальные контрольные точки после вставки этой записи журнала. Частота контрольных точек определяется собственным набором параметров конфигурации, обсуждаемых в других разделах этой главы.Значение параметра по умолчанию равно 16, что по умолчанию означает 16 наборов из 4 файлов по 16 МБ каждый, в общей сложности 1024 МБ. Размер отдельных файлов журнала можно настроить с помощью параметра
FragmentLogFileSize. В сценариях, требующих большого количества обновлений, значениеNoOfFragmentLogFilesможет потребоваться установить на значение 300 или даже выше, чтобы обеспечить достаточное пространство для журналов REDO.Если контрольные точки выполняются медленно и в базу данных записывается так много данных, что файлы журнала заполнены, а хвост журнала не может быть обрезан без ущерба для восстановления, все обновляющие транзакции прерываются с внутренним кодом ошибки 410 (
Out of log file space temporarily). Это состояние сохраняется до тех пор, пока не будет завершена контрольная точка и хвост журнала не сможет быть перемещен вперед.ВажноЭтот параметр нельзя изменить «“на лету”; необходимо перезапустить узел с помощью
--initial. Если вы хотите изменить это значение для всех узлов данных в работающем кластере, вы можете сделать это, используя последовательный перезапуск узлов (используя--initialпри запуске каждого узла данных). -
Версия (или более поздняя) NDB 7.6.4 Тип или единицы целое число Значение по умолчанию 50 Диапазон 25 - 100 Версия (или более поздняя) NDB 7.6.5 Тип или единицы целое число Значение по умолчанию 60 Диапазон 25 - 100 Добавлено NDB 7.6.4 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Процентная доля служебных данных для файлов LCP. Этот параметр оказывает влияние только тогда, когда
EnablePartialLcpистинно, то есть только когда включены частичные локальные контрольные точки. Большее значение означает:Меньше записей записывается для каждой LCP, LCP занимают больше места
Требуется больше работы во время перезапусков
Меньшее значение для
RecoveryWorkозначает:Больше записей записывается во время каждой LCP, но LCP требуют меньше места на диске.
Меньше работы во время перезапуска и, следовательно, более быстрые перезапуски за счет увеличения работы во время нормальной работы
Например, установка
RecoveryWorkна 60 означает, что общий размер LCP примерно в 1 + 0,6 = 1,6 раза больше размера данных, которые необходимо проверить. Это означает, что на 60% больше работы требуется на этапе восстановления перезапуска по сравнению с работой, выполняемой во время перезапуска, который использует полные контрольные точки. (Это более чем компенсируется на других этапах перезапуска, так что перезапуск в целом все еще быстрее при использовании частичных LCP, чем при использовании полных LCP.) Чтобы не заполнять журнал redo, необходимо писать в 1 + (1 /RecoveryWork) раз больше скорости изменения данных во время контрольных точек — таким образом, когдаRecoveryWork= 60, необходимо писать примерно в 1 + (1 / 0,6) = 2,67 раза больше скорости изменения. Другими словами, если изменения записываются со скоростью 10 МБ в секунду, контрольная точка должна записываться примерно со скоростью 26,7 МБ в секунду.Установка
RecoveryWork= 40 означает, что требуется только 1,4 раза больше общего размера LCP (и, следовательно, фаза восстановления занимает на 10–15 процентов меньше времени. В этом случае скорость записи контрольной точки в 3,5 раза больше скорости изменения.Дистрибутив исходного кода NDB включает в себя тестовую программу для моделирования LCP.
lcp_simulator.ccможно найти вstorage/ndb/src/kernel/blocks/backup/. Для компиляции и запуска на платформах Unix выполните показанные здесь команды:$>
gcc lcp_simulator.cc$>./a.outЭта программа не имеет других зависимостей, кроме
stdio.h, и не требует подключения к кластеру NDB или серверу MySQL. По умолчанию он моделирует 300 LCP (три набора по 100 LCP, каждый из которых состоит из вставок, обновлений и удалений по очереди), сообщая размер LCP после каждого из них. Вы можете изменить моделирование, изменив значенияrecovery_work,insert_workиdelete_workв исходном коде и перекомпилировав его. Для получения дополнительной информации см. исходный код программы. -
Версия (или более поздняя) NDB 7.6.5 Тип или единицы целое число Значение по умолчанию 40 Диапазон 0 - 70 Добавлено NDB 7.6.5 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Процент
RecoveryWork, используемый для вставленных строк. Большее значение увеличивает количество записей во время локальной контрольной точки и уменьшает общий размер LCP. Меньшее значение уменьшает количество записей во время LCP, но приводит к тому, что для LCP используется больше места, а это означает, что восстановление занимает больше времени. Этот параметр оказывает влияние только тогда, когдаEnablePartialLcpистинно, то есть только когда включены частичные локальные контрольные точки.
-
Версия (или более поздняя) NDB 7.6.7 Тип или единицы логическое значение По умолчанию false Диапазон ... Добавлен NDB 7.6.7 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Включить адаптивную скорость контрольных точек для управления использованием журнала переигрывания. Установите в значение
false, чтобы отключить (по умолчанию). Установка значенияEnablePartialLcpв значениеfalseтакже отключает адаптивный расчёт.При включении
EnableRedoControlпозволяет узлам данных получить большую гибкость относительно скорости записи LCP на диск. Более конкретно, включение данного параметра означает, что можно использовать более высокие скорости записи, чтобы LCP завершились и журналы переигрывания были обрезаны быстрее, тем самым сокращая время восстановления и потребности в дисковом пространстве. Данная функция позволяет узлам данных эффективнее использовать более высокую скорость ввода-вывода и большую пропускную способность, доступные от современных устройств хранения на твердотельных накопителях и протоколах, таких как твердотельные накопители (SSD) с использованием NVMe (Non-Volatile Memory Express).В настоящее время параметр по умолчанию равен
false(выключен), посколькуNDBвсё ещё широко используется на системах, в которых ввод-вывод или пропускная способность ограничены по сравнению с системами, использующими твердотельные технологии, например, с использованием обычных жёстких дисков (HDD). В таких настройках механизмEnableRedoControlможет легко привести к насыщению подсистемы ввода-вывода, увеличивая время ожидания для ввода-вывода узла данных. В частности, это может вызвать проблемы с таблицами NDB Disk Data, у которых пространства таблиц или группы файлов журнала используют ограниченную подсистему ввода-вывода совместно с файлами LCP и журнала переигрывания узла данных; такие проблемы потенциально включают отказ узла или кластера из-за ошибок остановки GCP.
Объекты метаданных. Следующий набор [ndbd] параметров определяет размеры пулов для объектов метаданных, используемых для определения максимального количества атрибутов, таблиц, индексов и объектов триггеров, используемых индексами, событиями и репликацией между кластерами.
Они служат лишь “предложениями” для кластера, и любые не указанные параметры возвращаются к значениям по умолчанию, показанным.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию 1000 Диапазон 32 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Этот параметр задает рекомендуемое максимальное количество атрибутов, которые могут быть определены в кластере; как и
MaxNoOfTables, он не предназначен для работы в качестве жесткого верхнего предела.(В более старых выпусках NDB Cluster этот параметр иногда рассматривался как жесткий предел для некоторых операций. Это вызывало проблемы с репликацией NDB Cluster, когда можно было создать больше таблиц, чем можно было реплицировать, и иногда приводило к путанице, когда можно было [или нельзя было, в зависимости от обстоятельств] создать больше, чем
MaxNoOfAttributesатрибутов.)Значение по умолчанию равно 1000, а минимальное возможное значение — 32. Максимальное значение — 4294967039. Каждый атрибут потребляет около 200 байт памяти на узел из-за того, что все метаданные полностью реплицируются на серверах.
При установке
MaxNoOfAttributesважно заранее подготовиться к любым операциямALTER TABLE, которые вы можете захотеть выполнить в будущем. Это связано с тем, что во время выполненияALTER TABLEдля таблицы кластера используется в 3 раза больше атрибутов, чем в исходной таблице, и хорошей практикой является разрешение удвоить это количество. Например, если таблица NDB Cluster, имеющая наибольшее количество атрибутов (greatest_number_of_attributes), имеет 100 атрибутов, хорошей отправной точкой для значенияMaxNoOfAttributesбудет6 *.greatest_number_of_attributes= 600Следует также оценить среднее количество атрибутов на таблицу и умножить это значение на
MaxNoOfTables. Если это значение больше, чем значение, полученное в предыдущем абзаце, следует использовать вместо него большее значение.Предполагая, что вы можете создать все необходимые таблицы без каких-либо проблем, вам также следует проверить, достаточно ли этого числа, попытавшись выполнить фактическое
ALTER TABLEпосле настройки параметра. Если это не удается, увеличьтеMaxNoOfAttributesеще на кратноеMaxNoOfTablesи протестируйте его снова. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию 128 Диапазон 8 - 20320 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Объект таблицы выделяется для каждой таблицы и для каждого уникального хеш-индекса в кластере. Этот параметр задает рекомендуемое максимальное количество объектов таблиц для всего кластера; как и
MaxNoOfAttributes, он не предназначен для работы в качестве жесткого верхнего предела.(В более старых выпусках NDB Cluster этот параметр иногда рассматривался как жесткий предел для некоторых операций. Это вызывало проблемы с репликацией NDB Cluster, когда можно было создать больше таблиц, чем можно было реплицировать, и иногда приводило к путанице, когда можно было [или нельзя было, в зависимости от обстоятельств] создать больше, чем
MaxNoOfTablesтаблиц.)Для каждого атрибута, имеющего тип данных
BLOB, используется дополнительная таблица для хранения большей части данныхBLOB. Эти таблицы также необходимо учитывать при определении общего числа таблиц.Значение этого параметра по умолчанию равно 128. Минимум — 8, а максимум — 20320. Каждый объект таблицы потребляет приблизительно 20 КБ на узел.
ПримечаниеСумма
MaxNoOfTables,MaxNoOfOrderedIndexesиMaxNoOfUniqueHashIndexesне должна превышать232 − 2(4294967294). -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию 128 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Для каждого упорядоченного индекса в кластере выделяется объект, описывающий индексируемые данные и его сегменты хранения. По умолчанию каждый так определенный индекс также определяет упорядоченный индекс. Каждый уникальный индекс и первичный ключ имеют как упорядоченный, так и хеш-индекс.
MaxNoOfOrderedIndexesустанавливает общее количество упорядоченных индексов, которые могут использоваться в системе в любой момент времени.Значение этого параметра по умолчанию равно 128. Каждый объект индекса потребляет приблизительно 10 КБ данных на узел.
ПримечаниеСумма
MaxNoOfTables,MaxNoOfOrderedIndexesиMaxNoOfUniqueHashIndexesне должна превышать232 − 2(4294967294). -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию 64 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Для каждого уникального индекса, который не является первичным ключом, выделяется специальная таблица, которая сопоставляет уникальный ключ с первичным ключом индексируемой таблицы. По умолчанию для каждого уникального индекса также определяется упорядоченный индекс. Чтобы предотвратить это, необходимо указать параметр
USING HASHпри определении уникального индекса.Значение по умолчанию равно 64. Каждый индекс потребляет приблизительно 15 КБ на узел.
ПримечаниеСумма
MaxNoOfTables,MaxNoOfOrderedIndexesиMaxNoOfUniqueHashIndexesне должна превышать232 − 2(4294967294). -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию 768 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Внутренние триггеры обновления, вставки и удаления выделяются для каждого уникального хеш-индекса. (Это означает, что для каждого уникального хеш-индекса создаются три триггера.) Однако упорядоченному индексу требуется только один объект триггера. Резервные копии также используют три объекта триггера для каждой обычной таблицы в кластере.
Репликация между кластерами также использует внутренние триггеры.
Этот параметр устанавливает максимальное количество объектов триггеров в кластере.
Значение по умолчанию равно 768.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения unsigned Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Каждая
NDBтаблица в кластере NDB требует подписки в ядре NDB. Для некоторых приложений API NDB может потребоваться или быть желательным изменить этот параметр. Однако для нормального использования с серверами MySQL, работающими в качестве узлов SQL, это не требуется.Значение по умолчанию для
MaxNoOfSubscriptionsравно 0, что эквивалентноMaxNoOfTables. Каждая подписка потребляет 108 байт. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения unsigned Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр представляет интерес только при использовании репликации NDB Cluster. Значение по умолчанию 0, что обрабатывается как
2 * MaxNoOfTables; то есть, на каждуюNDBтаблицу для каждого из двух серверов MySQL (один в качестве источника репликации, другой как реплика) существует одна подписка. Каждый подписчик использует 16 байт памяти.При использовании циклической репликации, репликации с несколькими источниками и других конфигураций репликации, включающих более 2 серверов MySQL, вы должны увеличить этот параметр до количества процессов mysqld, включенных в репликацию (часто, но не всегда, это то же самое, что и количество кластеров). Например, если у вас есть конфигурация циклической репликации с тремя кластерами NDB, с одним mysqld присоединенным к каждому кластеру, и каждый из этих процессов mysqld выступает в качестве источника и реплики, вы должны установить
MaxNoOfSubscribersравным3 * MaxNoOfTables.Для получения дополнительной информации см. Раздел 21.7, «Репликация NDB Cluster».
-
MaxNoOfConcurrentSubOperationsВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения unsigned Значение по умолчанию 256 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр устанавливает предел количества операций, которые могут выполняться всеми узлами API в кластере одновременно. Значение по умолчанию (256) достаточно для обычных операций и может потребовать корректировки только в сценариях, где имеется большое количество узлов API, каждый из которых выполняет большое количество операций одновременно.
Булевы параметры. Поведение узлов данных также зависит от набора [ndbd] параметров, принимающих булевы значения. Эти параметры могут быть указаны как TRUE, установив их равными 1 или Y, и как FALSE, установив их равными 0 или N.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы boolean Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Установка этого параметра в значение
1приводит к сжатию локальных файлов контрольных точек. Используемое сжатие эквивалентно gzip --fast, и может сэкономить 50% или более пространства, необходимого на узле данных для хранения несжатых файлов контрольных точек. Сжатые LCP могут быть включены для отдельных узлов данных или для всех узлов данных (путем установки этого параметра в разделе[ndbd default]файлаconfig.ini).ВажноНевозможно восстановить сжатую локальную контрольную точку в кластер, работающий под управлением версии MySQL, которая не поддерживает эту функцию.
Значение по умолчанию —
0(отключено).На платформах Windows этот параметр не оказывает никакого влияния в NDB 7.5 или NDB 7.6.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы boolean Значение по умолчанию true Диапазон true, false Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Когда этот параметр включен, он принудительно останавливает узел данных всякий раз, когда он сталкивается с поврежденным кортежем. В NDB 7.5 он включен по умолчанию.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы true|false (1|0) Значение по умолчанию false Диапазон true, false Тип перезапуска Первоначальный перезапуск системы: Требуется полное выключение кластера, очистка и восстановление файловой системы кластера из резервной копии, а затем перезапуск кластера. (NDB 7.5.0)
Можно указать таблицы NDB Cluster как бездисковые, это означает, что таблицы не сохраняются в контрольных точках на диск и что не ведется регистрация. Такие таблицы существуют только в оперативной памяти. Следствием использования бездисковых таблиц является то, что ни таблицы, ни записи в этих таблицах не сохраняются после сбоя. Однако, при работе в бездисковом режиме можно запускать ndbd на бездисковом компьютере.
ВажноЭта функция заставляет весь кластер работать в бездисковом режиме.
Когда эта функция включена, онлайн-резервное копирование кластера отключено. Кроме того, частичный запуск кластера невозможен.
Disklessотключен по умолчанию. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы numeric Значение по умолчанию 1 Диапазон 0 - 1 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Выделить память для этого узла данных после установления соединения с сервером управления. Включено по умолчанию.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы numeric Значение по умолчанию 0 Диапазон 0 - 2 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.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 7.5 рассматривает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 7.5.0 Тип или единицы boolean Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Включение этого параметра заставляет
NDBпытаться использоватьO_DIRECTзаписи для LCP, резервных копий и журналов повторной записи, часто снижая использование kswapd и ЦП. При использовании NDB Cluster в Linux включитеODirect, если вы используете ядро версии 2.6 или более поздней.ODirectотключен по умолчанию.
-
Версия (или более поздняя) NDB 7.6.4 Тип или единицы измерения логический По умолчанию false Диапазон true, false Добавлен NDB 7.6.4 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
При включении этого параметра записи в журнал повторных действий выполняются таким образом, что каждая завершенная запись в файловую систему обрабатывается как вызов
fsync. Значение этого параметра игнорируется, если истинно хотя бы одно из следующих условий:ODirectне включён.InitFragmentLogFilesимеет значениеSPARSE.
Отключен по умолчанию.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения код ошибки По умолчанию 2 Диапазон 0 - 4 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр доступен только при построении отладочной версии, где можно вставлять ошибки в выполнение отдельных блоков кода в рамках тестирования.
Этот параметр отключён по умолчанию.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения логический По умолчанию 1 Диапазон 0, 1 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр определяет, должен ли процесс узла данных завершаться или выполнять автоматический перезапуск при возникновении условия ошибки.
Значение параметра по умолчанию равно 1; это означает, что по умолчанию ошибка приводит к остановке процесса узла данных.
При возникновении ошибки и значении
StopOnErrorравном 0, процесс узла данных перезапускается.До версии NDB Cluster 7.5.5, если процесс узла данных завершается неуправляемым образом (например, из-за выполнения kill -9 на процессе узла данных во время выполнения запроса или из-за сегментационной ошибки), и
StopOnErrorимеет значение 0, процесс ангела пытается перезапустить его таким же образом, как он был запущен ранее — то есть с использованием тех же параметров запуска, которые были использованы в последний раз при запуске узла. Таким образом, если процесс узла данных изначально запускался с использованием параметра--initial, он также перезапускается с параметром--initial. Это означает, что в таких случаях, если ошибка возникает на достаточном количестве узлов данных в очень короткий промежуток времени, эффект такой же, как при первоначальном перезапуске всего кластера, что приводит к потере всех данных. Эта проблема решена в NDB Cluster 7.5.5 и более поздних версиях NDB 7.5 (Ошибка #83510, Ошибка #24945638).Пользователи MySQL Cluster Manager должны учесть, что, когда
StopOnErrorравно 1, это предотвращает агент MySQL Cluster Manager от перезапуска узлов данных после выполнения собственного перезапуска и восстановления. См. Запуск и остановка агента в Linux для получения дополнительной информации. -
Версия (или более поздняя) NDB 7.6.6 Тип или единицы измерения логический По умолчанию false Диапазон true, false Добавлен NDB 7.6.6 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Использовать сокеты shared memory между этим узлом данных и узлом API, также работающим на этом хосте. Установить значение 1 для активации.
Смотрите Раздел 21.4.3.12, «Подключения NDB Cluster к общей памяти» для получения дополнительной информации.
Управление тайм-аутами, интервалами и кэшированием диска
Существует ряд параметров [ndbd], определяющих тайм-ауты и интервалы между различными действиями в узлах данных кластера. Большинство значений тайм-аутов указаны в миллисекундах. Любые исключения из этого правила указаны в соответствующих местах.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 6000 Диапазон 70 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Чтобы предотвратить зависание основного потока в бесконечном цикле, поток «контроллера» проверяет основной поток. Этот параметр задает количество миллисекунд между проверками. Если процесс остается в том же состоянии после трех проверок, поток «контроллера» завершает его.
Этот параметр можно легко изменить в экспериментальных целях или для адаптации к локальным условиям. Его можно указать для каждого узла, хотя, кажется, мало оснований для этого.
Время ожидания по умолчанию составляет 6000 миллисекунд (6 секунд).
-
TimeBetweenWatchDogCheckInitialВерсия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 6000 Диапазон 70 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Это аналогично параметру
TimeBetweenWatchDogCheck, за исключением того, чтоTimeBetweenWatchDogCheckInitialуправляет временем между проверками выполнения внутри узла хранения на ранних этапах запуска, во время которых выделяется память.Время ожидания по умолчанию составляет 6000 миллисекунд (6 секунд).
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 30000 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Этот параметр указывает, как долго кластер ожидает запуска всех узлов данных, прежде чем будет вызвана процедура инициализации кластера. Это время ожидания используется, чтобы по возможности избежать частичного запуска кластера.
Этот параметр переопределяется при выполнении начального запуска или начального перезапуска кластера.
Значение по умолчанию составляет 30000 миллисекунд (30 секунд). 0 отключает время ожидания, в этом случае кластер может запуститься только в том случае, если доступны все узлы.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 60000 Диапазон 0 - 4294967039 (0xFFFFFEFF) Версия (или более поздняя) NDB 7.6.4 Тип или единицы миллисекунды Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Если кластер готов к запуску после ожидания
StartPartialTimeoutмиллисекунд, но, возможно, все еще находится в раздробленном состоянии, кластер ожидает, пока не истечет и это время ожидания. ЕслиStartPartitionedTimeoutустановлено равным 0, кластер ожидает бесконечно (232−1 мс или приблизительно 49,71 дня).Этот параметр переопределяется при выполнении начального запуска или начального перезапуска кластера.
Значение по умолчанию в NDB 7.6 равно 0; ранее оно было 60000 (60 секунд).
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Если узел данных не завершил свою последовательность запуска в течение времени, указанного этим параметром, запуск узла завершается неудачей. Установка этого параметра в 0 (значение по умолчанию) означает, что время ожидания узла данных не применяется.
Для ненулевых значений этот параметр измеряется в миллисекундах. Для узлов данных, содержащих очень большие объемы данных, этот параметр следует увеличить. Например, в случае узла данных, содержащего несколько гигабайт данных, для выполнения перезапуска узла может потребоваться период до 10–15 минут (то есть 600000–1000000 миллисекунд).
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 15000 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Когда узел данных настроен с помощью
Nodegroup = 65536, он считается не присвоенным ни одной группе узлов. Когда это сделано, кластер ждетStartNoNodegroupTimeoutмиллисекунд, затем обрабатывает такие узлы так, как если бы они были добавлены в список, переданный в параметр--nowait-nodes, и запускается. Значение по умолчанию —15000(то есть сервер управления ожидает 15 секунд). Установка этого параметра равного0означает, что кластер ожидает бесконечно.StartNoNodegroupTimeoutдолжно быть одинаковым для всех узлов данных в кластере; по этой причине его всегда следует устанавливать в разделе[ndbd default]файлаconfig.ini, а не для отдельных узлов данных.Дополнительную информацию см. в разделе 21.6.7, «Добавление узлов данных кластера NDB в режиме онлайн».
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 5000 Диапазон 10 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Одним из основных методов обнаружения неисправных узлов является использование сигналов «сердцебиения». Этот параметр указывает, как часто отправляются сигналы «сердцебиения» и как часто ожидается их получение. Сигналы «сердцебиения» нельзя отключить.
После пропуска четырех интервалов «сердцебиения» подряд узел объявляется неработоспособным. Таким образом, максимальное время обнаружения сбоя с помощью механизма «сердцебиения» в пять раз превышает интервал «сердцебиения».
Интервал «сердцебиения» по умолчанию составляет 5000 миллисекунд (5 секунд). Этот параметр не должен резко изменяться и не должен сильно отличаться между узлами. Если один узел использует 5000 миллисекунд, а узел, наблюдающий за ним, использует 1000 миллисекунд, очевидно, что узел объявляется неработоспособным очень быстро. Этот параметр можно изменить во время онлайн-обновления программного обеспечения, но только с небольшими приращениями.
См. также сетевое взаимодействие и задержки, а также описание параметра конфигурации
ConnectCheckIntervalDelay.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения миллисекунды Значение по умолчанию 1500 Диапазон 100 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Каждый узел данных отправляет сигналы сердечных ударов каждому серверу MySQL (узлу SQL), чтобы убедиться, что он остается на связи. Если сервер MySQL не успевает отправить сигнал сердечного удара вовремя, он объявляется “мертвым,” в этом случае все текущие транзакции завершаются, и все ресурсы освобождаются. Узел SQL не может подключиться снова до тех пор, пока все действия, начатые предыдущей экземпляром MySQL, не будут завершены. Три критерия сердечных ударов для этого определения такие же, как описаны для
HeartbeatIntervalDbDb.Интервал по умолчанию составляет 1500 миллисекунд (1,5 секунды). Этот интервал может варьироваться между отдельными узлами данных, потому что каждый узел данных отслеживает подключенные к нему серверы MySQL независимо от всех других узлов данных.
Дополнительную информацию см. в разделе Сеть и задержка.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения числовое Значение по умолчанию 0 Диапазон 0 - 65535 Тип перезапуска Перезапуск системы: Требует полного выключения и перезапуска кластера. (NDB 7.5.0)
Узлы данных отправляют сердечные удары друг другу по кругу, при этом каждый узел данных отслеживает предыдущий. Если узел данных не обнаруживает сердечный удар, он объявляет предыдущий узел в круге “мертвым” (то есть больше не доступным для кластера). Определение того, что узел данных мертв, выполняется глобально; другими словами, после объявления узла данных мертвым, он считается таковым всеми узлами в кластере.
Возможны ситуации, когда сердечные удары между узлами данных, находящимися на разных хостах, могут быть слишком медленными по сравнению с сердечными ударами между другими парами узлов (например, из-за очень низкого интервала сердечных ударов или временной проблемы с подключением), в результате чего узел данных объявляется мертвым, даже если узел все еще может функционировать как часть кластера.
В такой ситуации порядок передачи сердечных ударов между узлами данных может повлиять на то, объявляется ли конкретный узел данных мертвым или нет. Если это объявление происходит ненужно, это может привести к ненужной потере группы узлов и, как следствие, к отказу кластера.
Рассмотрим конфигурацию с 4 узлами данных A, B, C и D, работающими на 2 компьютерах
host1иhost2, и что эти узлы данных составляют 2 группы узлов, как показано в следующей таблице:Таблица 21.9 Четыре узла данных A, B, C, D, работающие на двух компьютерах host1, host2; каждый узел данных принадлежит одной из двух групп узлов.
Таблица 21.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следующим образом:Таблица 21.10 Значения HeartbeatOrder для принудительного перехода сердечного удара A->B->D->C->A.
Таблица 21.10 Значения HeartbeatOrder для принудительного перехода сердечного удара A->B->D->C->A. Узел HeartbeatOrderЗначениеA 10 B 20 C 30 D 25 Чтобы использовать этот параметр для изменения порядка передачи сердечных ударов в работающем кластере NDB, необходимо сначала установить
HeartbeatOrderдля каждого узла данных в кластере в глобальной конфигурации (config.ini) файл (или файлы). Для того, чтобы изменения вступили в силу, необходимо выполнить одно из следующих действий:Полное выключение и перезапуск всего кластера.
Два поэтапных перезапуска кластера один за другим. Все узлы должны быть перезапущены в том же порядке при обоих поэтапных перезапусках.
Для наблюдения за влиянием этого параметра в журналах узлов данных можно использовать
DUMP 908. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения миллисекунды Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр позволяет проверять соединение между узлами данных после того, как один из них не прошел проверки сердечных ударов в течение 5 интервалов до
HeartbeatIntervalDbDbмиллисекунд.Такой узел данных, который в дальнейшем не отвечает в течение интервала
ConnectCheckIntervalDelayмиллисекунд, считается подозрительным и считается мертвым после двух таких интервалов. Это может быть полезно в настройках с известными проблемами задержек.Значение по умолчанию для этого параметра — 0 (отключено).
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы число 4-байтовых слов, как двоичный логарифм Значение по умолчанию 20 Диапазон 0 - 31 Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 7.5.0)
Этот параметр является исключением, поскольку он не указывает время ожидания перед началом новой локальной контрольной точки; вместо этого он используется для обеспечения того, чтобы локальные контрольные точки не выполнялись в кластере, где происходит относительно мало обновлений. В большинстве кластеров с высокой частотой обновлений, вероятно, новая локальная контрольная точка запускается сразу после завершения предыдущей.
Размер всех операций записи, выполненных с момента начала предыдущих локальных контрольных точек, добавляется. Этот параметр также является исключительным, поскольку он задается как двоичный логарифм числа 4-байтовых слов, так что значение по умолчанию 20 означает 4 МБ (4 × 220) операций записи, 21 будет означать 8 МБ и так далее до максимального значения 31, что эквивалентно 8 ГБ операций записи.
Все операции записи в кластере суммируются. Установка
TimeBetweenLocalCheckpointsв значение 6 или меньше означает, что локальные контрольные точки выполняются непрерывно без паузы, независимо от рабочей нагрузки кластера. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 2000 Диапазон 20 - 32000 Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 7.5.0)
Когда транзакция подтверждается, она подтверждается в оперативной памяти во всех узлах, на которых данные зеркально отражаются. Однако записи журнала транзакций не очищаются на диск как часть подтверждения. Причина такого поведения заключается в том, что безопасное подтверждение транзакции как минимум на двух автономных хост-машинах должно соответствовать разумным стандартам долговечности.
Также важно обеспечить правильную обработку даже худшего из возможных случаев — полного сбоя кластера. Для гарантии этого все транзакции, происходящие в течение заданного интервала, помещаются в глобальную контрольную точку, которую можно рассматривать как набор подтвержденных транзакций, которые были очищены на диск. Другими словами, как часть процесса подтверждения транзакция помещается в группу глобальных контрольных точек. Позже записи журнала этой группы очищаются на диск, а затем вся группа транзакций безопасно подтверждается на диске на всех компьютерах в кластере.
Этот параметр определяет интервал между глобальными контрольными точками. Значение по умолчанию — 2000 миллисекунд.
-
TimeBetweenGlobalCheckpointsTimeoutВерсия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 120000 Диапазон 10 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 7.5.0)
Этот параметр определяет минимальное время ожидания между глобальными контрольными точками. Значение по умолчанию — 120000 миллисекунд.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 100 Диапазон 0 - 32000 Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 7.5.0)
Этот параметр определяет интервал между эпохами синхронизации для репликации NDB Cluster. Значение по умолчанию — 100 миллисекунд.
TimeBetweenEpochsявляется частью реализации “micro-GCPs”, которая может использоваться для повышения производительности репликации NDB Cluster. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы миллисекунды Значение по умолчанию 0 Диапазон 0 - 256000 Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 7.5.0)
Этот параметр определяет тайм-аут для эпох синхронизации для репликации NDB Cluster. Если узел не участвует в глобальной контрольной точке в течение времени, определяемого этим параметром, узел выключается. Значение по умолчанию — 0; другими словами, тайм-аут отключен.
TimeBetweenEpochsTimeoutявляется частью реализации “micro-GCPs”, которая может использоваться для повышения производительности репликации NDB Cluster.Текущее значение этого параметра и предупреждение записываются в журнал кластера всякий раз, когда сохранение GCP занимает более 1 минуты или подтверждение GCP занимает более 10 секунд.
Установка этого параметра в ноль приводит к отключению остановок GCP, вызванных тайм-аутами сохранения, тайм-аутами подтверждения или обоими. Максимально возможное значение этого параметра составляет 256000 миллисекунд.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы эпохи Значение по умолчанию 100 Диапазон 0 - 100000 Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 7.5.0)
Количество необработанных эпох, на которые подписывающийся узел может отставать. Превышение этого числа приводит к отключению отстающего подписчика.
Значение по умолчанию 100 достаточно для большинства обычных операций. Если подписывающийся узел действительно отстает настолько, что это вызывает отключения, это обычно связано с проблемами сети или планирования в отношении процессов или потоков. (В редких случаях проблема может быть вызвана ошибкой в клиенте
NDB.) Может быть желательно установить значение ниже, чем по умолчанию, когда эпохи длиннее.Отключение предотвращает влияние проблем клиента на службу узла данных, исчерпание памяти для буферизации данных и, в конечном итоге, отключение. Вместо этого только клиент затрагивается в результате отключения (например, событиями gap в двоичном журнале), заставляя клиента повторно подключиться или перезапустить процесс.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы байты Значение по умолчанию 26214400 Диапазон 26214400 (0x01900000) - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется пошаговая перезагрузка кластера. (NDB 7.5.0)
Общее количество байтов, выделенных для буферизации эпох этим узлом.
-
TimeBetweenInactiveTransactionAbortCheckВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения миллисекунды Значение по умолчанию 1000 Диапазон 1000 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Обработка тайм-аута осуществляется путем проверки таймера каждой транзакции один раз для каждого интервала, указанного этим параметром. Таким образом, если этот параметр установлен в 1000 миллисекунд, каждая транзакция проверяется на тайм-аут один раз в секунду.
Значение по умолчанию составляет 1000 миллисекунд (1 секунда).
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения миллисекунды Значение по умолчанию 4294967039 (0xFFFFFEFF) Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Этот параметр указывает максимальное время, которое может пройти между операциями в одной транзакции, прежде чем транзакция будет прервана.
Значение по умолчанию для этого параметра равно
4G(также максимальное). Для базы данных реального времени, которая должна гарантировать, что ни одна транзакция не удерживает блокировки слишком долго, этот параметр следует установить в относительно небольшое значение. Установка его в 0 означает, что приложение никогда не истекает по времени. Единица измерения — миллисекунды. -
TransactionDeadlockDetectionTimeoutВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения миллисекунды Значение по умолчанию 1200 Диапазон 50 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Когда узел выполняет запрос, включающий транзакцию, узел ожидает ответа от других узлов в кластере, прежде чем продолжить. Этот параметр устанавливает количество времени, которое транзакция может тратить на выполнение в узле данных, то есть время, которое координатор транзакций ожидает выполнения запроса каждым узлом данных, участвующим в транзакции.
Отсутствие ответа может произойти по любой из следующих причин:
Узел “мертв”
Операция вошла в очередь блокировки
Узел, которому было предложено выполнить действие, может быть сильно перегружен.
Этот параметр тайм-аута указывает, как долго координатор транзакций ожидает выполнения запроса другим узлом, прежде чем прервать транзакцию, и важен как для обработки сбоев узлов, так и для обнаружения тупиковых ситуаций.
Значение тайм-аута по умолчанию составляет 1200 миллисекунд (1,2 секунды).
Минимальное значение для этого параметра составляет 50 миллисекунд.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 4M Диапазон 32K - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Это максимальное количество байтов для хранения перед записью данных в локальный файл контрольной точки. Это делается для предотвращения буферизации записи, которая может значительно снизить производительность. Этот параметр не предназначен для замены
TimeBetweenLocalCheckpoints.ПримечаниеКогда включен
ODirect, нет необходимости устанавливатьDiskSyncSize; фактически, в таких случаях его значение просто игнорируется.Значение по умолчанию — 4M (4 мегабайта).
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения числовое Значение по умолчанию 20M Диапазон 1M - 1024G Тип перезапуска Перезапуск системы: Требуется полное выключение и перезапуск кластера. (NDB 7.5.0)
Установите максимальную скорость записи на диск, в байтах в секунду, локальными контрольными точками и операциями резервного копирования, когда в этом кластере NDB не происходит перезапусков (этим узлом данных или любым другим узлом данных).
Для установки максимальной скорости записи на диск, разрешенной во время перезапуска этого узла данных, используйте
MaxDiskWriteSpeedOwnRestart. Для установки максимальной скорости записи на диск, разрешенной во время перезапуска других узлов данных, используйтеMaxDiskWriteSpeedOtherNodeRestart. Минимальную скорость записи на диск всеми LCP и операциями резервного копирования можно настроить, установивMinDiskWriteSpeed. -
MaxDiskWriteSpeedOtherNodeRestartВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения числовое Значение по умолчанию 50M Диапазон 1M - 1024G Тип перезапуска Перезапуск системы: Требуется полное выключение и перезапуск кластера. (NDB 7.5.0)
Установите максимальную скорость записи на диск, в байтах в секунду, локальными контрольными точками и операциями резервного копирования, когда один или несколько узлов данных в этом кластере NDB перезапускаются, кроме этого узла.
Для установки максимальной скорости записи на диск, разрешенной во время перезапуска этого узла данных, используйте
MaxDiskWriteSpeedOwnRestart. Для установки максимальной скорости записи на диск, разрешенной, когда ни один узел данных нигде в кластере не перезапускается, используйтеMaxDiskWriteSpeed. Минимальную скорость записи на диск всеми LCP и операциями резервного копирования можно настроить, установивMinDiskWriteSpeed. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения числовое Значение по умолчанию 200M Диапазон 1M - 1024G Тип перезапуска Перезапуск системы: Требуется полное выключение и перезапуск кластера. (NDB 7.5.0)
Установите максимальную скорость записи на диск, в байтах в секунду, локальными контрольными точками и операциями резервного копирования во время перезапуска этого узла данных.
Для установки максимальной скорости записи на диск, разрешенной во время перезапуска других узлов данных, используйте
MaxDiskWriteSpeedOtherNodeRestart. Для установки максимальной скорости записи на диск, разрешенной, когда ни один узел данных нигде в кластере не перезапускается, используйтеMaxDiskWriteSpeed. Минимальную скорость записи на диск всеми LCP и операциями резервного копирования можно настроить, установивMinDiskWriteSpeed.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения числовое значение По умолчанию 10М Диапазон 1М - 1024Г Тип перезапуска Перезапуск системы: Требуется полная остановка и перезапуск кластера. (NDB 7.5.0)
Установите минимальную скорость записи на диск в байтах в секунду для локальных контрольных точек и операций резервного копирования.
Максимальные скорости записи на диск для LCP и резервного копирования в различных условиях можно настроить с помощью параметров
MaxDiskWriteSpeed,MaxDiskWriteSpeedOwnRestartиMaxDiskWriteSpeedOtherNodeRestart. См. описания этих параметров для получения дополнительной информации. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения миллисекунды По умолчанию 7500 Диапазон 10 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр определяет, как долго узлы данных ожидают ответа от арбитра на сообщение об арбитраже. Если это значение превышено, предполагается, что сеть разорвана.
Значение по умолчанию составляет 7500 миллисекунд (7,5 секунд).
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения перечисление По умолчанию По умолчанию Диапазон По умолчанию, Выключено, WaitExternal Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Параметр
Arbitrationпредоставляет возможность выбора схемы арбитража, соответствующей одному из 3 возможных значений:По умолчанию. Это позволяет арбитражу происходить в обычном режиме, как определено параметрами
ArbitrationRankдля узлов управления и API. Это значение по умолчанию.Выключено. Установка
Arbitration = Disabledв разделе[ndbd default]файлаconfig.iniвыполняет ту же задачу, что и установкаArbitrationRankв 0 на всех узлах управления и API. КогдаArbitrationзадано таким образом, любые настройкиArbitrationRankигнорируются.WaitExternal. Параметр
Arbitrationтакже позволяет настроить арбитраж таким образом, что кластер ждет, пока не пройдет время, определяемое параметромArbitrationTimeout, для внешнего приложения-менеджера кластера для выполнения арбитража вместо внутреннего обработки. Это можно сделать, установивArbitration = WaitExternalв разделе[ndbd default]файлаconfig.ini. Для наилучших результатов при настройкеWaitExternalрекомендуется, чтобыArbitrationTimeoutбыл в 2 раза больше интервала, необходимого внешнему менеджеру кластера для выполнения арбитража.
ВажноЭтот параметр следует использовать только в разделе
[ndbd default]файла конфигурации кластера. Поведение кластера не определено, когдаArbitrationимеет разные значения для отдельных узлов данных. -
RestartSubscriberConnectTimeoutВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения мс По умолчанию 12000 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр определяет время, в течение которого узел данных ожидает подключения подписывающихся API-узлов. После истечения этого таймаута любые «отсутствующие» API-узлы отключаются от кластера. Для отключения этого таймаута установите
RestartSubscriberConnectTimeoutв 0.Хотя этот параметр указан в миллисекундах, сам таймаут округляется до ближайшего целого секунды.
Интервал сердцебиения между узлами управления и узлами данных всегда составляет 100 миллисекунд и не настраивается.
Буферизация и регистрация. Несколько параметров конфигурации [ndbd] позволяют пользователю более детально управлять ресурсами, используемыми процессами узлов, и по мере необходимости настраивать различные размеры буферов.
Эти буферы используются как интерфейс к файловой системе при записи записей журнала на диск. Если узел работает в режиме без диска, эти параметры можно установить на минимальные значения без потери производительности, так как запись на диск «имитируется» абстракцией файловой системы хранилища NDB.
-
Version (or later) NDB 7.5.0 Type or units unsigned Default 2M Range 1M - 4294967039 (0xFFFFFEFF) Deprecated Yes (in NDB 8.0) Restart Type Node Restart: Требует поэтапной перезагрузки кластера. (NDB 7.5.0)
Этот параметр ранее определял размер буфера индекса отмены, но в текущих версиях NDB Cluster не имеет эффекта.
-
Version (or later) NDB 7.5.0 Type or units unsigned Default 16M Range 1M - 4294967039 (0xFFFFFEFF) Deprecated Yes (in NDB 8.0) Restart Type Node Restart: Требует поэтапной перезагрузки кластера. (NDB 7.5.0)
Этот параметр ранее определял размер буфера данных отмены, но в текущих версиях NDB Cluster не имеет эффекта.
-
Version (or later) NDB 7.5.0 Type or units bytes Default 32M Range 1M - 4294967039 (0xFFFFFEFF) Restart Type Node Restart: Требует поэтапной перезагрузки кластера. (NDB 7.5.0)
Все операции обновления также должны быть залогированы. Журнал REDO позволяет повторно применить эти обновления при перезапуске системы. Алгоритм восстановления NDB использует «нечёткую» точку сохранения данных вместе с журналом UNDO, а затем применяет журнал REDO, чтобы воспроизвести все изменения до точки восстановления.
RedoBufferзадаёт размер буфера, в который записывается журнал REDO. Значение по умолчанию — 32 МБ, минимальное значение — 1 МБ.Если этот буфер слишком мал, движок хранилища
NDBвыдает код ошибки 1221 (буферы журнала REDO переполнены). По этой причине следует проявлять осторожность, если вы пытаетесь уменьшить значениеRedoBufferв рамках онлайн-изменений в конфигурации кластера.ndbmtd выделяет отдельный буфер для каждого потока LDM (см.
ThreadConfig). Например, с 4 потоками LDM узел данных ndbmtd фактически имеет 4 буфера и выделяетRedoBufferбайт на каждый, в общей сложности4 * RedoBufferбайт. -
Version (or later) NDB 7.5.0 Type or units bytes Default 8192 Range 0 - 64K Restart Type System Restart: Требует полной остановки и перезапуска кластера. (NDB 7.5.0)
Управляет размером кольцевого буфера, используемого для событий журнала NDB в узлах данных.
Управление сообщениями журнала. При управлении кластером очень важно иметь возможность контролировать количество сообщений журнала, отправляемых для различных типов событий в stdout. Для каждой категории событий доступно 16 уровней событий (от 0 до 15). Установка отчётности по событиям для данной категории на уровень 15 означает, что все сообщения об событиях в этой категории отправляются в stdout; установка на 0 означает, что сообщения об событиях этой категории не отправляются.
По умолчанию сообщение о запуске отправляется в stdout, а остальные уровни отчётности событий устанавливаются по умолчанию в 0. Причина в том, что эти сообщения также отправляются в журнал кластера сервера управления.
Аналогичный набор уровней может быть установлен для клиента управления, чтобы определить, какие уровни событий записывать в журнал кластера.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы integer Значение по умолчанию 1 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Уровень отчетности для событий, генерируемых во время запуска процесса.
Уровень по умолчанию равен 1.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Уровень отчетности для событий, генерируемых в рамках корректного завершения работы узла.
Уровень по умолчанию равен 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Уровень отчетности для статистических событий, таких как количество чтений первичных ключей, количество обновлений, количество вставок, информация, связанная с использованием буфера, и так далее.
Уровень по умолчанию равен 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы log level Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Уровень отчетности для событий, генерируемых локальными и глобальными контрольными точками.
Уровень по умолчанию равен 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Уровень отчетности для событий, генерируемых во время перезапуска узла.
Уровень по умолчанию равен 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Уровень отчетности для событий, генерируемых соединениями между узлами кластера.
Уровень по умолчанию равен 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Уровень отчетности для событий, генерируемых ошибками и предупреждениями кластером в целом. Эти ошибки не приводят к сбою узла, но все же считаются достойными сообщения.
Уровень по умолчанию равен 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы level Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Уровень отчетности для событий, генерируемых перегрузкой. Эти ошибки не приводят к сбою узла, но все же считаются достойными сообщения.
Уровень по умолчанию равен 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0 - 15 Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Уровень отчетности для событий, генерируемых для информации об общем состоянии кластера.
Уровень по умолчанию равен 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы unsigned Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется повторный запуск кластера. (NDB 7.5.0)
Этот параметр управляет частотой записи отчетов об использовании памяти узла данных в журнале кластера; это целое число, представляющее количество секунд между отчетами.
Использование памяти данных и индексной памяти каждого узла данных регистрируется как в процентах, так и в количестве страниц по 32 КБ
DataMemoryи (NDB 7.5 и ранее)IndexMemoryсоответственно, установленных в файле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%), как упоминалось в обсуждении статистических событий в разделе 21.6.3.2, «События журнала кластера NDB».
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения секунды По умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапная перезагрузка кластера. (NDB 7.5.0)
При запуске узла данных с
--initial, он инициализирует файл журнала повторения во время фазы запуска 4 (см. раздел 21.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 (значение по умолчанию), отчеты записываются в журнал кластера только в начале и в конце процесса инициализации файла журнала повторения.
Параметры отладки узла данных
Следующие параметры предназначены для использования во время тестирования или отладки узлов данных, а не для использования в рабочей среде.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты По умолчанию неопределено Диапазон 0 - 100 Тип перезапуска Перезапуск узла: Требуется поэтапная перезагрузка кластера. (NDB 7.5.0)
Возможна регистрация трассировок событий, созданных и удаленных таблиц с помощью
DictTrace. Этот параметр полезен только при отладке кода ядра NDB.DictTraceпринимает целое значение. 0 отключает регистрацию; 1 включает ее; установка этого параметра в 2 включает регистрацию дополнительногоDBDICTотладочного вывода (Ошибка #20368450). -
Версия (или более поздняя) NDB 7.6.7 Тип или единицы измерения логический По умолчанию false Диапазон true, false Добавлен NDB 7.6.7 Тип перезапуска Перезапуск узла: Требуется поэтапная перезагрузка кластера. (NDB 7.5.0)
В NDB 7.6.7 и более поздних версиях вы можете заставить потоки убиваться немедленно при возникновении проблем с защитой, включив параметр конфигурации узла данных
WatchdogImmediateKill. Этот параметр следует использовать только при отладке или устранении неполадок для получения файлов трассировки, точно отображающих события в момент прекращения выполнения.
Параметры резервного копирования. Параметры [ndbd], обсуждаемые в этом разделе, определяют буферы памяти, зарезервированные для выполнения онлайн-резервных копий.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 16М Диапазон 2М - 4294967039 (0xFFFFFEFF) Версия (или более поздняя) NDB 7.5.1 Тип или единицы измерения байты Значение по умолчанию 16М Диапазон 512К - 4294967039 (0xFFFFFEFF) Устарело NDB 7.6.4 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
При создании резервной копии используются два буфера для передачи данных на диск. Буфер резервной копии используется для заполнения данных, записанных при сканировании таблиц узла. После заполнения этого буфера до уровня, указанного в
BackupWriteSize, страницы отправляются на диск. Во время записи данных на диск процесс резервного копирования может продолжать заполнять этот буфер до тех пор, пока не закончится место. В этом случае процесс резервного копирования приостанавливает сканирование и ожидает завершения некоторых записей на диск, освобождая память для продолжения сканирования. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения процент Значение по умолчанию 50 Диапазон 0 - 90 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Во время нормальной работы узлы данных пытаются максимизировать скорость записи на диск, используемую для локальных контрольных точек и резервных копий, оставаясь в пределах границ, установленных параметрами
MinDiskWriteSpeedиMaxDiskWriteSpeed. Сброс скорости записи на диск обеспечивает каждому потоку LDM равную долю общего бюджета. Это позволяет параллельным LCP осуществлять свою работу без превышения бюджета ввода-вывода на диске. Поскольку резервное копирование выполняется только одним потоком LDM, это эффективно приводит к сокращению бюджета, что приводит к более длительному времени завершения резервного копирования, а в случае достаточно высокой скорости изменения — к невозможности завершения резервного копирования, когда скорость заполнения буфера журнала резервного копирования выше достижимой скорости записи.Эту проблему можно решить, используя параметр конфигурации
BackupDiskWriteSpeedPct, который принимает значение в диапазоне 0-90 (включительно), которое интерпретируется как процент от максимального бюджета скорости записи узла, резервируемого перед распределением остальной части бюджета между потоками LDM для LCP. Поток LDM, выполняющий резервное копирование, получает весь бюджет скорости записи для резервного копирования, плюс свою (уменьшенную) долю бюджета скорости записи для локальных контрольных точек. (Это делает бюджет скорости записи на диск аналогичным тому, как он обрабатывался в NDB Cluster 7.3 и более ранних версиях.)Значение по умолчанию для этого параметра составляет 50 (интерпретируется как 50%).
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 16М Диапазон 2М - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Буфер журнала резервной копии выполняет роль, аналогичную роли буфера данных резервной копии, за исключением того, что он используется для создания журнала всех записей таблиц, выполненных во время выполнения резервного копирования. Те же принципы применяются для записи этих страниц, что и для буфера данных резервной копии, за исключением того, что при отсутствии места в буфере журнала резервной копии резервное копирование завершается неудачей. По этой причине размер буфера журнала резервной копии должен быть достаточно большим, чтобы справиться с нагрузкой, вызванной операциями записи во время создания резервной копии. См. Раздел 21.6.8.3, “Настройка резервного копирования NDB Cluster”.
Значение по умолчанию для этого параметра должно быть достаточным для большинства приложений. На самом деле, резервное копирование скорее всего завершится неудачей из-за недостаточной скорости записи на диск, чем из-за заполнения буфера журнала резервного копирования. Если подсистема дисков не настроена для нагрузки записи, вызванной приложениями, кластер вряд ли сможет выполнить необходимые операции.
Предпочтительно настраивать узлы кластера таким образом, чтобы процессор становился узким местом, а не диски или сетевые соединения.
Значение по умолчанию для этого параметра составляет 16МБ.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 32М Диапазон 0 - 4294967039 (0xFFFFFEFF) Устарело Да (в NDB 7.4) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр устарел и может быть удален в будущей версии NDB Cluster. Любое заданное для него значение игнорируется.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения секунды Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр определяет, как часто в клиентском менедженте выдаются отчеты о статусе резервного копирования во время резервного копирования, а также как часто такие отчеты записываются в журнал кластера (при условии, что ведение журнала событий кластера настроено соответствующим образом — см. Ведение журнала и создание контрольных точек).
BackupReportFrequencyпредставляет собой время в секундах между отчетами о статусе резервного копирования.Значение по умолчанию — 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 256К Диапазон 32К - 4294967039 (0xFFFFFEFF) Устарело NDB 7.6.4 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр определяет размер сообщений, записываемых на диск буферами журнала резервной копии и буферами данных резервной копии по умолчанию.
Значение по умолчанию для этого параметра составляет 256 КБ.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения байты Значение по умолчанию 1М Диапазон 256К - 4294967039 (0xFFFFFEFF) Устарело NDB 7.6.4 Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр определяет максимальный размер сообщений, записываемых на диск буферами журнала резервной копии и буферами данных резервной копии.
Значение по умолчанию для этого параметра составляет 1 МБ.
-
Version (or later) NDB 7.5.0 Type or units boolean Default false Range true, false Restart Type Node Restart: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Включение этого параметра приводит к сжатию файлов резервных копий. Используемое сжатие эквивалентно gzip --fast и может сократить занимаемое место на узле данных для хранения несжатых резервных копий на 50% или более. Сжатые резервные копии можно включить для отдельных узлов данных или для всех узлов данных (установив этот параметр в разделе
[ndbd default]файлаconfig.ini).ImportantВосстановление сжатой резервной копии в кластер, работающий с версией MySQL, не поддерживающей эту функцию, невозможно.
Значение по умолчанию —
0(выключено).
Расположение файлов резервных копий определяется параметром конфигурации узла данных BackupDataDir.
Дополнительные требования. При указании этих параметров должны соблюдаться следующие отношения. В противном случае узел данных не сможет запуститься.
BackupDataBufferSize >= BackupWriteSize + 188KBBackupLogBufferSize >= BackupWriteSize + 16KBBackupMaxWriteSize >= BackupWriteSize
Параметры реального времени производительности NDB кластера
Параметры [ndbd], обсуждаемые в этом разделе, используются для планирования и блокировки потоков на определенных ЦП на узлах данных с несколькими процессорами.
Для использования этих параметров процесс узла данных должен выполняться от имени системного root.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы числовой Значение по умолчанию 0 Диапазон 0 - 128 Версия (или более поздняя) NDB 7.6.4 Тип или единицы числовой Значение по умолчанию 128 Диапазон 0 - 128 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр определяет количество потоков, создаваемых при перестроении упорядоченных индексов во время запуска системы или узла, а также при выполнении ndb_restore
--rebuild-indexes. Он поддерживается только в том случае, если для таблицы на каждом узле данных имеется более одного фрагмента (например, когдаCOMMENT="NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM_X_2"используется сCREATE TABLE).Установка этого параметра в 0 (значение по умолчанию) отключает многопоточное построение упорядоченных индексов.
Этот параметр поддерживается при использовании ndbd или ndbmtd.
Вы можете включить многопоточные сборки во время начальных перезапусков узла данных, установив параметр конфигурации узла данных
TwoPassInitialNodeRestartCopyвTRUE. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы набор идентификаторов ЦП Значение по умолчанию 0 Диапазон ... Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
При использовании с ndbd, этот параметр (теперь строка) указывает идентификатор ЦП, назначенный для обработки потока выполнения
NDBCLUSTER. При использовании с ndbmtd, значение этого параметра представляет собой разделенный запятыми список идентификаторов ЦП, назначенных для обработки потоков выполнения. Каждый идентификатор ЦП в списке должен быть целым числом в диапазоне от 0 до 65535 (включительно).Количество указанных идентификаторов должно соответствовать количеству потоков выполнения, определяемых параметром
MaxNoOfExecutionThreads. Однако нет гарантии, что потоки будут назначены ЦП в каком-либо заданном порядке при использовании этого параметра. Вы можете получить более точный контроль над этим типом, используяThreadConfig.LockExecuteThreadToCPUне имеет значения по умолчанию. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы идентификатор ЦП Значение по умолчанию 0 Диапазон 0 - 64K Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр указывает идентификатор ЦП, назначенный для обработки потоков обслуживания
NDBCLUSTER.Значение этого параметра представляет собой целое число в диапазоне от 0 до 65535 (включительно). Значение по умолчанию отсутствует.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы числовой Значение по умолчанию 1 Диапазон ... Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.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 7.5.0 Тип или единицы логическое Значение по умолчанию false Диапазон true, false Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Установка этого параметра в 1 включает планирование в реальном времени потоков узла данных.
Значение по умолчанию — 0 (планирование отключено).
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы мкс Значение по умолчанию 50 Диапазон 0 - 11000 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр указывает время в микросекундах для выполнения потоков в планировщике перед отправкой. Установка его в 0 сводит к минимуму время отклика; для достижения более высокой производительности вы можете увеличить значение за счет увеличения времени отклика.
Значение по умолчанию составляет 50 мкс, что, как показывают наши тесты, незначительно увеличивает производительность в условиях высокой нагрузки, не вызывая существенной задержки запросов.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения целое число Значение по умолчанию 5 Диапазон 0 - 10 Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 7.5.0)
Установите баланс в планировщике
NDBмежду скоростью и пропускной способностью. Этот параметр принимает целое число в диапазоне от 0 до 10 включительно, по умолчанию 5. Более высокие значения обеспечивают лучшие времена отклика по сравнению с пропускной способностью. Более низкие значения обеспечивают повышенную пропускную способность за счет увеличения времени отклика. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения мкс Значение по умолчанию 0 Диапазон 0 - 500 Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 7.5.0)
Этот параметр задает время в микросекундах, в течение которого потоки выполняются в планировщике перед переходом в состояние ожидания.
Значение по умолчанию равно 0.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения булево Значение по умолчанию false Диапазон true, false Версия (или более поздняя) NDB 7.6.4 Тип или единицы измерения булево Значение по умолчанию true Диапазон true, false Тип перезапуска Перезапуск узла: Требует постепенного перезапуска кластера. (NDB 7.5.0)
Многопоточное построение упорядоченных индексов может быть включено для начального перезапуска узлов данных, установив этот параметр конфигурации в
true, что включает двухэтапную копию данных во время начального перезапуска узлов. В NDB 7.6 это значение по умолчанию (Ошибка #26704312, Ошибка #27109117).Также необходимо установить
BuildIndexThreadsна ненулевое значение.
Параметры конфигурации многопоточности (ndbmtd). ndbmtd по умолчанию работает как однопоточный процесс и должен быть настроен на использование нескольких потоков, используя один из двух методов, оба из которых требуют установки параметров конфигурации в файле config.ini. Первый метод заключается в установке соответствующего значения для параметра конфигурации MaxNoOfExecutionThreads. Второй метод позволяет установить более сложные правила для многопоточности ndbmtd с помощью ThreadConfig. В следующих нескольких абзацах представлена информация об этих параметрах и их использовании с многопоточными узлами данных.
-
MaxNoOfExecutionThreadsВерсия (или более поздняя) NDB 7.5.0 Тип или единицы целое число Значение по умолчанию 2 Диапазон 2 - 72 Тип перезапуска Первоначальный перезапуск системы: Требуется полное выключение кластера, очистка и восстановление файловой системы кластера из резервной копии, а затем перезапуск кластера. (NDB 7.5.0)
Перезапуск системы: Требуется полное выключение и перезапуск кластера. (NDB 7.6.1)
Этот параметр напрямую управляет количеством потоков выполнения, используемых ndbmtd, максимум до 72. Хотя этот параметр задается в разделах
[ndbd]или[ndbd default]файлаconfig.ini, он предназначен исключительно для ndbmtd и не применяется к ndbd.Установка
MaxNoOfExecutionThreadsзадает количество потоков для каждого типа, определяемое матрицей в файлеstorage/ndb/src/kernel/vm/mt_thr_config.cpp. В этой таблице показано количество потоков для возможных значенийMaxNoOfExecutionThreads.Таблица 21.11 Значения MaxNoOfExecutionThreads и соответствующее количество потоков по типу потока (LQH, TC, Send, Receive).
Table 21.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; начиная с NDB 7.5.7, конфигурация, в которой это имеет место, специально запрещена. (Ошибка #25333414)Количество потоков LDM также определяет количество разделов, используемых таблицей
NDB, которая не разделена явно; это количество потоков LDM, умноженное на количество узлов данных в кластере. (Если ndbd используется на узлах данных вместо ndbmtd, то всегда существует один поток LDM; в этом случае количество автоматически созданных разделов просто равно количеству узлов данных. См. Раздел 21.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 выполняется основным потоком.До версии NDB 7.6 изменение количества потоков LDM всегда требовало перезагрузки системы, независимо от того, изменялось ли это значение с помощью данного параметра или
ThreadConfig. В NDB 7.6 и более поздних версиях можно произвести это изменение с помощью первоначальной перезагрузки узла (NI), при соблюдении следующих условий:Если после изменения количество потоков LDM остается таким же, как и раньше, для реализации изменения требуется только простая перезагрузка узла (поэтапная перезагрузка или N).
-
В противном случае (то есть, если количество потоков LDM меняется), можно произвести изменение с помощью первоначальной перезагрузки узла (NI) при соблюдении следующих двух условий:
Каждый поток LDM обрабатывает максимальное количество фрагментов — 8, и
Общее количество фрагментов таблиц является целым кратным количеству потоков LDM.
До версии NDB 7.6, если использование памяти индексов кластера (
IndexMemory) превышает 50%, для изменения этого параметра требуется первоначальная перезагрузка кластера. (В таких случаях рекомендуется максимальное использование памяти индексов 30-35%IndexMemory). В противном случае, использование ресурсов и распределение потоков LDM между узлами не может быть сбалансировано, что может привести к недоиспользованию и перегрузке потоков LDM, а в конечном итоге — к отказам узлов данных. В NDB 7.6 и более поздних версиях первоначальная перезагрузка не требуется для изменения этого параметра.-
MaxSendDelayВерсия (или более поздняя) NDB 7.5.0 Тип или единицы микросекунды Значение по умолчанию 0 Диапазон 0 - 11000 Тип перезагрузки Перезагрузка узла: Требуется поэтапная перезагрузка кластера. (NDB 7.5.0)
Этот параметр может быть использован для того, чтобы заставить узлы данных ненадолго приостановить отправку данных узлам API; в некоторых случаях, описанных в следующих абзацах, это может привести к более эффективной отправке больших объемов данных и более высокой общей пропускной способности.
MaxSendDelayможет быть полезно, когда имеется большое количество узлов API, находящихся на пределе или близко к нему, что может привести к колебаниям производительности. Это происходит, когда узлы данных могут отправлять результаты узлам API относительно быстро, с множеством небольших пакетов, обработка которых может занимать больше времени на байт по сравнению с большими пакетами, тем самым замедляя узлы API; позже узлы данных начинают отправлять большие пакеты снова.Для обработки такого сценария, можно установить
MaxSendDelayна ненулевое значение, что помогает гарантировать, что ответы не отправляются узлам API слишком быстро. Когда это выполняется, ответы отправляются немедленно, если нет другого конкурирующего трафика, но когда он есть, установкаMaxSendDelayзаставляет узлы данных подождать достаточно долго, чтобы гарантировать отправку больших пакетов. По сути, это вводит искусственную задержку в процесс отправки, которая на самом деле может значительно улучшить пропускную способность. -
NoOfFragmentLogPartsВерсия (или более поздняя) NDB 7.5.0 Тип или единицы числовое Значение по умолчанию 4 Диапазон 4, 6, 8, 10, 12, 16, 20, 24, 32 Тип перезагрузки Первоначальная перезагрузка узла: Требуется поэтапная перезагрузка кластера; каждый узел данных должен быть перезапущен с
--initial. (NDB 7.5.0)Установите количество групп файлов журнала для журналов redo, принадлежащих этому ndbmtd. Это значение должно быть равно количеству потоков LDM, используемых ndbmtd, как определено значением параметра
MaxNoOfExecutionThreads. Начиная с NDB 7.5.7, конфигурация с более чем 4 журналами redo на поток LDM запрещена. (Ошибка #25333414)См. описание параметра
MaxNoOfExecutionThreadsдля получения дополнительной информации.
-
ThreadConfigВерсия (или более поздняя) NDB 7.5.0 Тип или единицы измерения строка Значение по умолчанию '' Диапазон ... Тип перезапуска Первоначальный перезапуск системы: Требует полного завершения работы кластера, очистки и восстановления файловой системы кластера из резервной копии, а затем перезапуска кластера. (NDB 7.5.0)
Перезапуск системы: Требует полного завершения работы и перезапуска кластера. (NDB 7.6.1)
Этот параметр используется с ndbmtd для назначения потоков разных типов на разные процессоры. Его значение — строка, имеющая следующий синтаксис:
ThreadConfig :=
entry[,entry[,...]]entry:=type={param[,param[,...]]}type:= ldm | 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не применяется к потокам ввода/вывода, watchdogs или потокам построения оффлайн-индексов, поэтому для этих типов потоков его установить нельзя. -
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.Таблица 21.12 Сопоставление thread_prio со значениями nice в Linux и FreeBSD
Таблица 21.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, сопоставления показаны в следующей таблице:Таблица 21.13 Сопоставление thread_prio с приоритетом FX в Solaris
Таблица 21.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(). Это сопоставление показано в следующей таблице:Таблица 21.14 Сопоставление thread_prio с приоритетом потока Windows
Таблица 21.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, тем более распределёнными становятся данные. Каждый поток LDM поддерживает собственные наборы фрагментов данных и индексов, а также свой собственный журнал переопределения. Значение, задаваемое дляldm, должно быть одним из следующих: 1, 2, 4, 6, 8, 12, 16, 24 или 32.Изменение числа потоков LDM обычно требует первоначальной перезагрузки системы, чтобы изменение стало эффективным и безопасным для работы кластера. Это требование смягчено в NDB 7.6, как объясняется позже в этом разделе. (Это также относится к случаю, когда это делается с помощью
MaxNoOfExecutionThreads.) NDB 7.5 и более ранние версии: Если использование памятиIndexMemoryпревышает 50%, требуется первоначальная перезагрузка кластера; в таких случаях рекомендуется максимальное использование памятиIndexMemoryв пределах 30-35%. В противном случае балансировка выделения памяти и потоков LDM между узлами невозможна, что может привести к сбоям узлов данных.Добавление больших табличных пространств (сотни гигабайт или более) для таблиц данных на диске при использовании большего числа потоков LDM, чем по умолчанию, может привести к проблемам с использованием ресурсов и процессора, если
DiskPageBufferMemoryнедостаточно велико. -
tc: Поток координатора транзакций (DBTCблок ядра), содержащий состояние текущей транзакции. Максимальное количество потоков TC равно 32.В идеале, каждой новой транзакции можно назначить новый поток TC. В большинстве случаев 1 поток TC на 2 потока LDM достаточно для обеспечения этого. В случаях, когда количество записей относительно невелико по сравнению с количеством чтений, возможно, достаточно 1 потока TC на 4 потока LQH для поддержания состояния транзакций. Наоборот, в приложениях, выполняющих большое количество обновлений, может потребоваться, чтобы отношение потоков TC к потокам LDM приближалось к 1 (например, 3 потока TC к 4 потокам LDM).
Установка
tcв значение 0 приводит к тому, что обработка TC выполняется основным потоком. В большинстве случаев это фактически эквивалентно установке значения в 1.Диапазон: 0 - 32
-
main: Справочник данных и координатор транзакций (DBDIHиDBTCблоки ядра), обеспечивающие управление схемой. Эта задача всегда выполняется одним выделенным потоком.Диапазон: только 1.
-
recv: Поток приема (CMVMIблок ядра). Каждый поток приема обрабатывает один или несколько сокетов для связи с другими узлами в NDB Cluster, при этом один сокет на узел. NDB Cluster поддерживает несколько потоков приема; максимальное количество таких потоков равно 16.Диапазон: 1 - 16
-
send: Поток отправки (CMVMIблок ядра). Для повышения пропускной способности можно выполнять отправку данных из одного или нескольких отдельных выделенных потоков (максимум 8).Ранее все потоки обрабатывали отправку самостоятельно; это все еще можно сделать, установив количество потоков отправки в 0 (это также происходит, когда
MaxNoOfExecutionThreadsустановлено меньше 10). Хотя это может негативно повлиять на пропускную способность, в некоторых случаях это может привести к уменьшению задержки.Диапазон: 0 - 16
-
rep: Поток репликации (SUMAблок ядра). Асинхронные операции репликации всегда выполняются одним выделенным потоком.Диапазон: только 1.
-
io: Поток файловой системы и другие различные операции. Это нетребовательные задачи, и они всегда обрабатываются вместе одним выделенным потоком ввода-вывода.Диапазон: только 1.
-
watchdog: Параметры, связанные с этим типом, фактически применяются к нескольким потокам, каждый из которых имеет конкретное назначение. Эти потоки включают потокSocketServer, который получает настройки соединений от других узлов; потокSocketClient, который пытается установить соединения с другими узлами; и поток-сторож, который проверяет, что потоки работают.Диапазон: только 1.
-
idxbld: Потоки построения автономных индексов. В отличие от других типов потоков, перечисленных ранее, которые являются постоянными, эти потоки являются временными и создаются и используются только во время перезагрузки узла или системы, или при выполнении ndb_restore--rebuild-indexes. Они могут быть привязаны к наборам процессоров, которые перекрываются с наборами процессоров, привязанными к постоянным типам потоков.Значения
thread_prio,realtimeиspintimeне могут быть установлены для потоков построения автономных индексов. Кроме того,countигнорируется для этого типа потоков.Если
idxbldне указан, поведение по умолчанию следующее:Потоки построения автономных индексов не привязываются, если поток ввода-вывода также не привязан, и эти потоки используют все доступные ядра.
Если поток ввода-вывода привязан, то потоки построения автономных индексов привязываются ко всему набору привязанных потоков, поскольку для этих потоков не должно быть других задач.
Диапазон: 0 - 1.
Этот тип потоков был добавлен в NDB 7.6. (Ошибка #25835748, ошибка #26928111)
До NDB 7.6 изменение
ThreadCOnfigтребовало первоначальной перезагрузки системы. В NDB 7.6 (и более поздних версиях) это требование может быть смягчено в определенных обстоятельствах:Если после изменения количество потоков LDM остается таким же, как и прежде, требуется только простая перезагрузка узла (поэтапная перезагрузка или N).
-
В противном случае (то есть если количество потоков LDM изменяется), можно все еще произвести изменение с помощью первоначальной перезагрузки узла (NI), при условии соблюдения следующих двух условий:
Каждый поток LDM обрабатывает не более 8 фрагментов, и
Общее количество фрагментов таблиц является целым кратным количеству потоков LDM.
В любом другом случае для изменения этого параметра требуется первоначальная перезагрузка системы.
NDB 7.6 может различать типы потоков по следующим двум критериям:
Является ли поток потоком выполнения. Потоки типа
main,ldm,recv,rep,tcиsendявляются потоками выполнения; потокиio,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 7.5.0 Тип или единицы 32К страницы Значение по умолчанию 10 Диапазон 1 - 1000 Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Это количество записей страниц (ссылок на страницы) для выделения. Оно задаётся как количество 32К страниц в
DiskPageBufferMemory. Значение по умолчанию достаточно для большинства случаев, но может потребоваться увеличить это значение, если возникают проблемы с очень большими транзакциями в таблицах Disk Data. Каждая запись страницы требует примерно 100 байт. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы байты Значение по умолчанию 64М Диапазон 4М - 1Т Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Это определяет объём памяти, используемой для кэширования страниц на диске, и настраивается в разделе
[ndbd]или[ndbd default]файла конфигурацииconfig.ini. Измеряется в байтах. Каждая страница занимает 32 КБ. Это означает, что хранилище Disk Data NDB Cluster всегда используетN* 32 КБ памяти, гдеN— некоторое неотрицательное целое число.Значение по умолчанию для этого параметра —
64M(2000 страниц по 32 КБ каждая).Если значение
DiskPageBufferMemoryустановлено слишком низко в сочетании с использованием большего, чем по умолчанию, числа потоков LDM вThreadConfig(например,{ldm=6...}), могут возникнуть проблемы при попытке добавления большого (например, 500Гб) файла данных в таблицу Disk Data на основе диска, где процесс длится бесконечно, занимая один из ядер процессора.Это связано с тем, что в процессе добавления файла данных в табличное пространство страницы экстентов блокируются в памяти в дополнительном рабочем потоке PGMAN для быстрого доступа к метаданным. При добавлении большого файла у этого рабочего потока недостаточно памяти для всех метаданных файла данных. В таких случаях необходимо либо увеличить
DiskPageBufferMemory, либо добавить более мелкие файлы табличного пространства. Возможно, также потребуется настроитьDiskPageBufferEntries.Вы можете запросить таблицу
ndbinfo.diskpagebuffer, чтобы определить, следует ли увеличить значение этого параметра для минимизации ненужных обращений к диску. Более подробная информация содержится в Разделе 21.6.15.20 «Таблица ndbinfo diskpagebuffer». -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы байты Значение по умолчанию 128М Диапазон 0 - 64Т Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр определяет объём памяти, используемой для буферов логов, операций с диском (таких как запросы страниц и очереди ожидания), а также метаданных для табличных пространств, групп файлов логов,
UNDOфайлов и файлов данных. Общий буфер глобальной памяти также предоставляет память, необходимую для удовлетворения требований к памяти параметраUNDO_BUFFER_SIZE, используемого сCREATE LOGFILE GROUPиALTER LOGFILE GROUPоператорами, включая любое значение по умолчанию, предполагаемое для этого параметра настройкой параметра конфигурации узла данныхInitialLogFileGroup.SharedGlobalMemoryможет быть установлено в разделе[ndbd]или[ndbd default]файла конфигурацииconfig.iniи измеряется в байтах.Значение по умолчанию —
128M. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы потоки Значение по умолчанию 2 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требуется поэтапный перезапуск кластера. (NDB 7.5.0)
Этот параметр определяет количество несвязанных потоков, используемых для доступа к файлам Disk Data. До введения
DiskIOThreadPoolдля каждого файла Disk Data создавался ровно один поток, что могло привести к проблемам производительности, особенно при использовании очень больших файлов данных. СDiskIOThreadPoolвы можете, например, получить доступ к одному большому файлу данных, используя несколько потоков, работающих параллельно.Этот параметр применяется только к потокам ввода-вывода Disk Data.
Оптимальное значение для этого параметра зависит от вашего оборудования и конфигурации, и включает следующие факторы:
Физическое размещение файлов Disk Data. Более высокую производительность можно получить, разместив файлы данных, файлы журналов отката и файловую систему узла данных на отдельных физических дисках. Если вы сделаете это для некоторых или всех из этих наборов файлов, то вы можете установить
DiskIOThreadPoolвыше, чтобы позволить отдельным потокам обрабатывать файлы на каждом диске.Производительность и типы дисков. Количество потоков, которые могут быть использованы для обработки файлов Disk Data, также зависит от скорости и пропускной способности дисков. Более быстрые диски и большая пропускная способность позволяют использовать больше потоков ввода-вывода на дисках. Результаты наших тестов показывают, что твердотельные накопители могут обрабатывать значительно больше потоков ввода-вывода на диске, чем обычные диски, и, таким образом, более высокие значения для
DiskIOThreadPool.
Значение по умолчанию для этого параметра — 2.
-
Параметры файловой системы для данных на диске. Параметры в следующем списке позволяют размещать файлы NDB Cluster Disk Data в определённых директориях без использования символических ссылок.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения имя файла Значение по умолчанию FileSystemPath Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Если этот параметр указан, то файлы данных и журналы отката NDB Cluster Disk Data размещаются в указанной директории. Это можно переопределить для файлов данных, журналов отката или обоих, указав значения для
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 7.5.0 Тип или единицы измерения имя файла Значение по умолчанию FileSystemPathDD Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Если этот параметр указан, то файлы данных NDB Cluster Disk Data размещаются в указанной директории. Это переопределяет любое значение, установленное для
FileSystemPathDD. Этот параметр можно переопределить для данного файла данных, указав путь в частиADD DATAFILEвыраженияCREATE TABLESPACEилиALTER TABLESPACE, используемого для создания этого файла данных. ЕслиFileSystemPathDataFilesне указан, используетсяFileSystemPathDD(илиFileSystemPath, еслиFileSystemPathDDтакже не установлено).Если для данного узла данных указана директория
FileSystemPathDataFiles(в том числе в случае, когда параметр указан в секции[ndbd default]файлаconfig.ini), то запуск данного узла с помощью--initialприводит к удалению всех файлов в этой директории. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения имя файла Значение по умолчанию FileSystemPathDD Диапазон ... Тип перезапуска Первоначальный перезапуск узла: Требует поэтапного перезапуска кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Если этот параметр указан, то журналы отката NDB Cluster Disk Data размещаются в указанной директории. Это переопределяет любое значение, установленное для
FileSystemPathDD. Этот параметр можно переопределить для данного файла данных, указав путь в частиADD UNDOвыраженияCREATE LOGFILE GROUPилиALTER LOGFILE GROUP, используемого для создания этого файла данных. ЕслиFileSystemPathUndoFilesне указан, используетсяFileSystemPathDD(илиFileSystemPath, еслиFileSystemPathDDтакже не установлено).Если для данного узла данных указана директория
FileSystemPathUndoFiles(в том числе в случае, когда параметр указан в секции[ndbd default]файлаconfig.ini), то запуск данного узла с помощью--initialприводит к удалению всех файлов в этой директории.
Более подробную информацию см. в разделе 21.6.11.1, «Объекты NDB Cluster Disk Data».
-
-
Параметры создания объекта Disk Data. Два следующих параметра позволяют при первом запуске кластера создать группу файлов журнала Disk Data, табличное пространство или оба без использования SQL-запросов.
-
Версия (и более поздние) NDB 7.5.0 Тип или единицы измерения строка По умолчанию [см. документацию] Диапазон ... Тип перезапуска Перезапуск системы: Требует полного выключения и перезапуска кластера. (NDB 7.5.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 при различных значениях на разных узлах данных не определено. -
Версия (и более поздние) NDB 7.5.0 Тип или единицы измерения строка По умолчанию [см. документацию] Диапазон ... Тип перезапуска Перезапуск системы: Требует полного выключения и перезапуска кластера. (NDB 7.5.0)
Этот параметр можно использовать для указания табличного пространства Disk Data кластера NDB, которое создается при первоначальном запуске кластера.
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 при различных значениях на разных узлах данных не определено):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и может использоваться при последующем создании табличных пространств Disk Data кластера NDB.
-
Ошибки Disk Data и остановки GCP. Ошибки, возникающие при использовании таблиц Disk Data, такие как Узел nodeid убил этот узел, потому что обнаружено завершение GCP (ошибка 2303), часто называют “ошибки остановки GCP”. Такие ошибки возникают, когда журнал переопределения не достаточно быстро записывается на диск; это обычно связано с медленными дисками и недостаточной пропускной способностью диска.
Вы можете помочь предотвратить эти ошибки, используя более быстрые диски и размещая файлы Disk Data на отдельном диске от файловой системы узла данных. Уменьшение значения TimeBetweenGlobalCheckpoints имеет тенденцию уменьшать объем данных, которые необходимо записать для каждого глобального контрольного пункта, и поэтому может обеспечить некоторую защиту от переполнения буфера журнала переопределения при попытке записи глобального контрольного пункта; однако, уменьшение этого значения также приводит к меньшему времени для записи GCP, поэтому это необходимо делать с осторожностью.
В дополнение к рассмотрению DiskPageBufferMemory, как объяснялось ранее, крайне важно правильно настроить параметр конфигурации DiskIOThreadPool; слишком большое значение DiskIOThreadPool очень вероятно приведет к ошибкам остановки GCP (Ошибка #37227).
Остановки GCP могут быть вызваны тайм-аутами сохранения или подтверждения; параметр конфигурации узла данных TimeBetweenEpochsTimeout определяет тайм-аут для подтверждений. Однако можно отключить оба типа тайм-аутов, установив этот параметр в 0.
Параметры для настройки выделения памяти буфера отправки. Память буфера отправки выделяется динамически из пула памяти, общих для всех транспортёров, что означает, что размер буфера отправки можно изменять по мере необходимости. (Ранее ядро NDB использовало буфер отправки фиксированного размера для каждого узла в кластере, который выделялся при запуске узла и не мог быть изменён во время работы узла.) Параметры конфигурации узла данных TotalSendBufferMemory и OverLoadLimit позволяют установить ограничения на это выделение памяти. Более подробную информацию об использовании этих параметров (а также SendBufferMemory) см. в Раздел 21.4.3.13, «Настройка параметров буфера отправки кластера NDB».
-
Этот параметр указывает количество памяти буфера отправки транспортёра, которое необходимо выделить дополнительно к любому значению, установленному с помощью
TotalSendBufferMemory,SendBufferMemoryили обоих. -
Этот параметр используется для определения общего объёма памяти, который необходимо выделить на этом узле для общей памяти буфера отправки среди всех настроенных транспортёров.
Если этот параметр установлен, его минимально допустимое значение составляет 256 КБ; 0 указывает, что параметр не установлен. Более подробную информацию см. в Раздел 21.4.3.13, «Настройка параметров буфера отправки кластера NDB».
См. также Раздел 21.6.7, «Добавление узлов данных кластера NDB онлайн».
Обработка переполнения журнала переигрывания. Можно контролировать обработку операций узлом данных, когда требуется слишком много времени на сброс журналов переигрывания на диск. Это происходит, когда сброс конкретного журнала переигрывания занимает больше, чем RedoOverCommitLimit секунд, более RedoOverCommitCounter раз, что приводит к прерыванию любых ожидающих транзакций. В этом случае узел API, отправивший транзакцию, может обработать операции, которые должны были быть подтверждены, либо поставив операции в очередь и повторив их попытку, либо прервав их, как определено параметром DefaultOperationRedoProblemAction. Параметры конфигурации узла данных для установки тайм-аута и количества превышений, прежде чем узел API предпримет эти действия, описаны в следующем списке:
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения числовое Значение по умолчанию 3 Диапазон 0 - 4294967039 (0xFFFFFEFF) Версия (или более поздняя) NDB 7.5.17 Тип или единицы измерения числовое Значение по умолчанию 3 Диапазон 1 - 4294967039 (0xFFFFFEFF) Версия (или более поздняя) NDB 7.6.13 Тип или единицы измерения числовое Значение по умолчанию 3 Диапазон 1 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Если значение
RedoOverCommitLimitпревышено при попытке записи заданного журнала переигрывания на диск это количество раз или более, любые транзакции, которые не были подтверждены в результате, прерываются, и узел API, где происходила любая из этих транзакций, обрабатывает операции, формирующие эти транзакции, в соответствии со своим значением дляDefaultOperationRedoProblemAction(посредством либо помещения операций в очередь для повторной попытки, либо прерывания их). -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения секунды Значение по умолчанию 20 Диапазон 0 - 4294967039 (0xFFFFFEFF) Версия (или более поздняя) NDB 7.5.17 Тип или единицы измерения секунды Значение по умолчанию 20 Диапазон 1 - 4294967039 (0xFFFFFEFF) Версия (или более поздняя) NDB 7.6.13 Тип или единицы измерения секунды Значение по умолчанию 20 Диапазон 1 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Этот параметр устанавливает максимальное время в секундах, в течение которого узел данных пытается записать заданный журнал переигрывания на диск, прежде чем истечет время ожидания. Количество попыток сброса журнала переигрывания узлом данных, но длительность которых превысила
RedoOverCommitLimit, сохраняется и сравнивается со значениемRedoOverCommitCounter. Когда сброс занимает слишком много времени чаще, чем указано в этом параметре, любые транзакции, которые не были подтверждены в результате тайм-аута, прерываются. При этом узел API, где происходила любая из этих транзакций, обрабатывает операции, формирующие эти транзакции, в соответствии со своим параметромDefaultOperationRedoProblemAction(помещая операции в очередь для повторной попытки или прерывая их).
Управление попытками перезапуска. Можно точно управлять попытками перезапуска узлов данных, когда они не могут начать работу, используя параметры конфигурации узла данных MaxStartFailRetries и StartFailRetryDelay.
MaxStartFailRetries ограничивает общее количество попыток перезапуска, прежде чем отказаться от запуска узла данных, StartFailRetryDelay устанавливает количество секунд между попытками перезапуска. Эти параметры перечислены здесь:
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения беззнаковое Значение по умолчанию 0 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Используйте этот параметр для задания количества секунд между попытками перезапуска узла данных в случае сбоя при запуске. По умолчанию значение равно 0 (задержка отсутствует).
И этот параметр, и
MaxStartFailRetriesигнорируются, еслиStopOnErrorравно 0. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы измерения беззнаковое Значение по умолчанию 3 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Перезапуск узла: Требует поэтапного перезапуска кластера. (NDB 7.5.0)
Используйте этот параметр для ограничения количества попыток перезапуска узла данных в случае сбоя при запуске. Значение по умолчанию равно 3 попыткам.
И этот параметр, и
StartFailRetryDelayигнорируются, еслиStopOnErrorравно 0.
Параметры статистики индексов NDB. Параметры в следующем списке относятся к генерации статистики индексов NDB.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0, 1 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Включить (установить равным 1) или отключить (установить равным 0) автоматический сбор статистики при создании индексов.
-
Версия (или более поздняя) NDB 7.5.0 Тип или единицы integer Значение по умолчанию 0 Диапазон 0, 1 Тип перезапуска Перезапуск узла: Требуется последовательный перезапуск кластера. (NDB 7.5.0)
Включить (установить равным 1) или отключить (установить равным 0) мониторинг индексов на предмет изменений и запускать автоматическое обновление статистики при их обнаружении. Степень изменения, необходимая для запуска обновлений, определяется настройками для параметров
IndexStatTriggerPctиIndexStatTriggerScale. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы bytes Значение по умолчанию 32768 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Максимальный объем памяти в байтах, разрешенный для сохраненной статистики любого данного индекса в системных таблицах
NDBи в кэше памяти mysqld. В NDB 7.5 и более ранних версиях это потребляетIndexMemory.Всегда создается как минимум один образец, независимо от любого ограничения размера. Этот размер масштабируется с помощью
IndexStatSaveScale.Размер, указанный параметром
IndexStatSaveSize, масштабируется значениемIndexStatTriggerPctдля большого индекса, умноженного на 0,01. Это дополнительно умножается на логарифм по основанию 2 размера индекса. УстановкаIndexStatTriggerPctравной 0 отключает эффект масштабирования. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы percentage Значение по умолчанию 100 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Размер, указанный параметром
IndexStatSaveSize, масштабируется значениемIndexStatTriggerPctдля большого индекса, умноженного на 0,01. Это дополнительно умножается на логарифм по основанию 2 размера индекса. УстановкаIndexStatTriggerPctравной 0 отключает эффект масштабирования. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы percentage Значение по умолчанию 100 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Процентное изменение обновлений, которое запускает обновление статистики индекса. Значение масштабируется с помощью
IndexStatTriggerScale. Вы можете полностью отключить этот триггер, установивIndexStatTriggerPctравным 0. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы percentage Значение по умолчанию 100 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Масштабировать
IndexStatTriggerPctна это значение, умноженное на 0,01 для большого индекса. Значение 0 отключает масштабирование. -
Версия (или более поздняя) NDB 7.5.0 Тип или единицы seconds Значение по умолчанию 60 Диапазон 0 - 4294967039 (0xFFFFFEFF) Тип перезапуска Первоначальный перезапуск узла: Требуется последовательный перезапуск кластера; каждый узел данных должен быть перезапущен с помощью
--initial. (NDB 7.5.0)Минимальная задержка в секундах между автоматическими обновлениями статистики индекса для данного индекса. Установка этой переменной в 0 отключает любую задержку. Значение по умолчанию — 60 секунд.
Типы перезапуска. Информация о типах перезапуска, используемых в описаниях параметров в этом разделе, показана в следующей таблице:
Таблица 21.15 Типы перезапуска NDB Cluster
| Символ | Тип перезапуска | Описание |
|---|---|---|
| N | Узел | Параметр можно обновить, используя последовательный перезапуск (см. Раздел 21.6.5, «Выполнение последовательного перезапуска кластера NDB») |
| S | Система | Все узлы кластера должны быть полностью выключены, а затем перезапущены, чтобы изменить этот параметр |
| I | Первоначальный | Узлы данных должны быть перезапущены с помощью параметра --initial |
© 2025 Oracle
Licensed under the GPLv2 License.