Spec-Zone .ru
спецификации, руководства, описания, API

17.3.2.6. Определение MySQL Cluster Data Nodes

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

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

Есть много параметров, которые управляют буферными размерами, объединяют в пул размеры, тайм-ауты, и т.д. Единственный обязательный параметр является любой одним из ExecuteOnComputer или HostName; это должно быть определено в локальной переменной [ndbd] раздел.

Параметр NoOfReplicas должен быть определен в [ndbd default] раздел, поскольку это характерно для всех узлов данных Кластера. Не строго необходимо установить NoOfReplicas, но это - хорошая практика, чтобы установить это явно.

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

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

Информация о параметрах конфигурации, определенных для MySQL Cluster Disk Data tables, может быть найдена позже в этом разделе (см. Дисковые Параметры конфигурации Данных).

Все эти параметры также применяются к ndbmtd (многопоточная версия ndbd). Три дополнительных параметра конфигурации узла данных —MaxNoOfExecutionThreads, ThreadConfig, и NoOfFragmentLogParts— применитесь к ndbmtd только; они не имеют никакого эффекта когда использующийся с ndbd. Для получения дополнительной информации см. Параметры конфигурации Многопоточности (ndbmtd). См. также Раздел 17.4.3, "ndbmtd — MySQL Cluster Data Node Daemon (Многопоточный)".

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

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

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

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

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 МБ для записей базовой таблицы и таблицы уникального индекса, плюс эти упорядоченные два индексируют таблицы.

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

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

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

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

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

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

Эффективная Версия Тип/Модули Значение по умолчанию Диапазон/Значения
NDB 7.3.0 без знака 5 0 - 100
Тип перезапуска: N

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

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

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

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

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

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

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

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

MaxAllocate

Эффективная Версия Тип/Модули Значение по умолчанию Диапазон/Значения
NDB 7.3.0 без знака 32M 1M - 1G
Тип перезапуска: N

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

Размер Карты хеша

DefaultHashMapSize

Эффективная Версия Тип/Модули Значение по умолчанию Диапазон/Значения
NDB 7.3.0 Потоки LDM 3840 0 - 3840
Тип перезапуска: N

MySQL Cluster NDB 7.2.7 и более позднее использование больший табличный размер карты хеша значения по умолчанию (3840) чем в предыдущих выпусках (240). Начинаясь с MySQL Cluster NDB 7.2.11, размер таблицы хеширует карты, используемые NDB конфигурируемое использование этого параметра; ранее это значение было трудно кодировано. DefaultHashMapSize может принять любое из трех возможных значений (0, 240, 3840). Эти значения и их эффекты описываются в следующей таблице:

Значение Описание / Эффект
0 Используйте самый низкий набор значений, если таковые вообще имеются, для этого параметра среди всех узлов данных и узлов API в кластере; если это не устанавливается ни на каких данных или узле API, используйте значение по умолчанию.
240 Исходный размер карты хеша, используемый по умолчанию во всем MySQL Cluster, выпускает до MySQL Cluster NDB 7.2.7.
3840 Больший размер карты хеша как использующийся по умолчанию в MySQL Cluster NDB 7.2.7 andlater

Основное намеченное использование для этого параметра должно облегчить обновления и особенно понижает между MySQL Cluster NDB 7.2.7 и более поздними версиями MySQL Cluster, в которых больший размер карты хеша (3840) является значением по умолчанию, и более ранними выпусками (в котором значение по умолчанию было 240), вследствие того, что это изменение не иначе обратно совместимо (Ошибка #14800539). Устанавливая эти параметры к 240 до выполнения обновления от более старой версии, где это значение используется, можно заставить кластер продолжать использовать меньший размер для табличных карт хеша, когда таблицы остаются совместимыми с более ранними версиями после обновления. DefaultHashMapSize может быть установлен для отдельных узлов данных, узлов API, или обоих, но установки этого однажды только, в [ndbd default] раздел config.ini файл, рекомендуемая практика.

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

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

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

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

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

Управляя Тайм-аутами, Интервалами, и Дисковым Оповещением

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

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

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

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

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

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

Отладка Параметров. В MySQL Cluster NDB 7.3, возможно вызвать журналирование трассировок для событий, сгенерированных, создавая и отбрасывая табличное использование DictTrace. Этот параметр полезен только в отладке кода ядра NDB. DictTrace берет целочисленное значение; в настоящий момент, 0 (значение по умолчанию - никакое журналирование) и 1 (журналирование включенного) единственные поддерживаемые значения.

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

Важный

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

MySQL Cluster Realtime Performance Parameters

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

Отметить

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

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

Простые примеры:

# 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}

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

Чтобы использовать в своих интересах улучшенную устойчивость что использование ThreadConfig предложения, необходимо обеспечить, чтобы ЦП были изолированы, и что они не подвергают прерываниям, или тому, чтобы быть запланированным для других задач операционной системой. На многих системах Linux можно сделать это, устанавливая IRQBALANCE_BANNED_CPUS в /etc/sysconfig/irqbalance к 0xFFFFF0, и при использовании isolcpus опция начальной загрузки в grub.conf. Для определенной информации см. свою операционную систему или документацию платформы.

Дисковые Параметры конфигурации Данных. Параметры конфигурации, влияющие на Дисковое поведение Данных, включают следующее:

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

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

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

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

Параметры для того, чтобы сконфигурировать отправляют выделение буферной памяти. Передайтесь буферная память выделяется динамически от пула памяти, совместно использованного всеми транспортерами, что означает, что размер отправить буфера может быть скорректирован по мере необходимости. (Ранее, ядро NDB, используемое, фиксированный размер отправляет буфер за каждым узлом в кластере, который был выделен, когда запущенный узел и не мог быть изменен, в то время как узел работал.) TotalSendBufferMemory и OverLoadLimit параметры конфигурации узла данных разрешают установку пределов на этом выделении памяти. Для получения дополнительной информации об использовании этих параметров (так же как SendBufferMemory), см., что Раздел 17.3.2.12, "Кластер MySQL Configuring Отправляет Буферные Параметры".

Для более подробной информации о поведении и использовании TotalSendBufferMemory и о конфигурировании отправляют параметры буферной памяти в MySQL Cluster, видят, что Раздел 17.3.2.12, "Кластер MySQL Configuring Отправляет Буферные Параметры".

См. также Раздел 17.5.13, "Узлы данных Кластера MySQL Adding Онлайн".

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

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

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

StartFailRetryDelay

Эффективная Версия Тип/Модули Значение по умолчанию Диапазон/Значения
NDB 7.3.0 без знака 0 0 - 4G
Тип перезапуска: N

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

Отметить

Этот параметр не игнорируется если StopOnError равно 0.

MaxStartFailRetries

Эффективная Версия Тип/Модули Значение по умолчанию Диапазон/Значения
NDB 7.3.0 без знака 3 0 - 4G
Тип перезапуска: N

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

Отметить

Этот параметр не игнорируется если StopOnError равно 0.