Spec-Zone.ru › MySQL 5.7

21.2.4.1 Что нового в NDB Cluster 7.5

Основные изменения и новые функции в NDB Cluster 7.5, которые, вероятно, будут представлять интерес, приведены в следующем списке:

  • Улучшения ndbinfo. В базе данных ndbinfo внесен ряд изменений, главными из которых являются предоставление подробной информации о параметрах конфигурации узлов NDB Cluster.

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

    Строка в таблице config_values отображает текущее значение заданного параметра на узле с указанным ID. Параметр определяется значением столбца config_param, который сопоставляется со столбцом param_number в таблице config_params.

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

    SELECT  p.param_name AS Name,
            v.node_id AS Node,
            p.param_type AS Type,
            p.param_default AS 'Default',
            p.param_min AS Minimum,
            p.param_max AS Maximum,
            CASE p.param_mandatory WHEN 1 THEN 'Y' ELSE 'N' END AS 'Required',
            v.config_value AS Current
    FROM    config_params p
    JOIN    config_values v
    ON      p.param_number = v.config_param
    WHERE   p. param_name IN ('NodeId', 'HostName','DataMemory', 'IndexMemory');
    

    Дополнительную информацию об этих изменениях см. в разделе разделе 21.6.15.8, «Таблица ndbinfo config_params». Дополнительную информацию и примеры см. в разделе разделе 21.6.15.9, «Таблица ndbinfo config_values».

    Кроме того, база данных ndbinfo больше не зависит от движка хранения MyISAM. Все таблицы и представления ndbinfo теперь используют NDB (показано как NDBINFO).

    В NDB 7.5.4 было введено несколько новых таблиц ndbinfo. Эти таблицы перечислены ниже с краткими описаниями:

    • dict_obj_info предоставляет имена и типы объектов базы данных в NDB, а также информацию об родительских объектах, где это применимо

    • table_distribution_status предоставляет информацию о статусе распределения таблиц NDB

    • table_fragments предоставляет информацию о распределении фрагментов таблицы NDB

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

    • table_replicas предоставляет информацию о репликах фрагментов

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

  • Изменения формата строк и столбцов по умолчанию. Начиная с NDB 7.5.1, значение по умолчанию для опции ROW_FORMAT и опции COLUMN_FORMAT для CREATE TABLE может быть установлено в DYNAMIC вместо FIXED. В рамках этого изменения добавляется новая переменная сервера MySQL ndb_default_column_format. Установите её в FIXED или DYNAMIC (или запустите mysqld с эквивалентной опцией --ndb-default-column-format=FIXED), чтобы принудительно использовать это значение для COLUMN_FORMAT и ROW_FORMAT. До NDB 7.5.4 значение по умолчанию для этой переменной было DYNAMIC; в этой и более поздних версиях значение по умолчанию — FIXED, что обеспечивает обратную совместимость с предыдущими выпусками (ошибка #24487363).

    Формат строк и столбцов, используемый существующими столбцами таблицы, не затрагиваются этим изменением. Новые столбцы, добавленные в такие таблицы, используют новые значения по умолчанию (возможно, переопределённые ndb_default_column_format), а существующие столбцы также изменяются, при условии, что операция ALTER TABLE указывает на ALGORITHM=COPY.

    Примечание

    Неявное копирование ALTER TABLE невозможно, если mysqld запускается с опцией --ndb-allow-copying-alter-table=FALSE.

  • ndb_binlog_index больше не зависит от MyISAM. Начиная с NDB 7.5.2, таблица ndb_binlog_index, используемая в NDB Cluster Replication, теперь использует движок хранения InnoDB вместо MyISAM. При обновлении можно запустить mysql_upgrade с --force --upgrade-system-tables, чтобы заставить его выполнить ALTER TABLE ... ENGINE=INNODB для этой таблицы. Использование MyISAM для этой таблицы по-прежнему поддерживается для обратной совместимости.

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

  • Изменения в ALTER TABLE. Раньше NDB Cluster поддерживал альтернативную синтаксическую конструкцию для онлайн ALTER TABLE. В NDB Cluster 7.5 это больше не поддерживается, и используется только ALGORITHM = DEFAULT|COPY|INPLACE для DDL таблиц, как и в стандартном MySQL Server.

    Ещё одно изменение, влияющее на использование этого оператора, заключается в том, что ALTER TABLE ... ALGORITHM=INPLACE RENAME может теперь содержать DDL-операции в дополнение к переименованию.

  • Параметр ExecuteOnComputer устарел. Параметр конфигурации ExecuteOnComputer для узлов управления, узлов данных и узлов API устарел и может быть удалён в будущих релизах NDB Cluster. Следует использовать эквивалентный параметр HostName для всех трёх типов узлов.

  • Оптимизация records-per-key. Обработчик NDB теперь использует интерфейс records-per-key для статистики индексов, реализованной для оптимизатора в MySQL 5.7.5. Некоторые из преимуществ этого изменения включают следующие:

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

    • Оценки строк, показанные командой EXPLAIN, более точны

    • Оценки кардинальности, показанные командой SHOW INDEX, улучшены

  • Идентификаторы узлов пула подключений. NDB 7.5.0 добавляет опцию mysqld --ndb-cluster-connection-pool-nodeids, которая позволяет установить набор идентификаторов узлов для пула подключений. Это значение переопределяет --ndb-nodeid, что означает, что оно также переопределяет опцию --ndb-connectstring и переменную среды NDB_CONNECTSTRING.

    Примечание

    Размер пула подключений можно установить, используя опцию --ndb-cluster-connection-pool для mysqld.

  • create_old_temporals удалён. Система переменная create_old_temporals была устарела в NDB Cluster 7.4 и теперь удалена.

  • Команда ndb_mgm Client PROMPT. NDB Cluster 7.5 добавляет новую команду для установки приглашения командной строки клиента. Следующий пример демонстрирует использование команды PROMPT:

    ndb_mgm> PROMPT mgm#1:
    mgm#1: SHOW
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]     4 node(s)
    id=5    @10.100.1.1  (mysql-5.7.44-ndb-7.5.36, Nodegroup: 0, *)
    id=6    @10.100.1.3  (mysql-5.7.44-ndb-7.5.36, Nodegroup: 0)
    id=7    @10.100.1.9  (mysql-5.7.44-ndb-7.5.36, Nodegroup: 1)
    id=8    @10.100.1.11  (mysql-5.7.44-ndb-7.5.36, Nodegroup: 1)
    
    [ndb_mgmd(MGM)] 1 node(s)
    id=50   @10.100.1.8  (mysql-5.7.44-ndb-7.5.36)
    
    [mysqld(API)]   2 node(s)
    id=100  @10.100.1.8  (5.7.44-ndb-7.5.36)
    id=101  @10.100.1.10  (5.7.44-ndb-7.5.36)
    
    mgm#1: PROMPT
    ndb_mgm> EXIT
    jon@valhaj:/usr/local/mysql/bin>
    

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

  • Увеличен объём хранилища столбцов FIXED на фрагмент. NDB Cluster 7.5 и более поздние версии поддерживают максимальный объём данных в столбцах FIXED в 128 ТБ на фрагмент. В NDB Cluster 7.4 и более ранних версиях этот объём составлял 16 ГБ на фрагмент.

  • Устаревшие параметры удалены. Следующие параметры конфигурации узлов данных NDB Cluster устарели в предыдущих выпусках NDB Cluster и были удалены в NDB 7.5.0:

    • Id: устарел в NDB 7.1.9; заменен на NodeId.

    • NoOfDiskPagesToDiskDuringRestartTUP, NoOfDiskPagesToDiskDuringRestartACC: оба устарели, не имели эффекта; заменены в MySQL 5.1.6 на DiskCheckpointSpeedInRestart, который впоследствии был устаревшим (в NDB 7.4.1) и теперь также удален.

    • NoOfDiskPagesToDiskAfterRestartACC, NoOfDiskPagesToDiskAfterRestartTUP: оба устарели, не имели эффекта; заменены в MySQL 5.1.6 на DiskCheckpointSpeed, который впоследствии был устаревшим (в NDB 7.4.1) и теперь также удален.

    • ReservedSendBufferMemory: устарел; больше не имел эффекта.

    • MaxNoOfIndexes: устаревший (до MySQL 4.1), не имел эффекта; давно заменен на MaxNoOfOrderedIndexes или MaxNoOfUniqueHashIndexes.

    • Discless: устаревший (до MySQL 4.1) синоним и давно заменен на Diskless.

    Устаревший и неиспользуемый (и по этой причине ранее не документированный) параметр конфигурации компьютера ByteOrder также был удален в NDB 7.5.0.

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

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

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

  • Поддержка столбцов JSON. NDB 7.5.2 и более поздние версии поддерживают тип столбца JSON для таблиц NDB и функций JSON, присутствующих в MySQL Server, с ограничением, что таблица NDB может иметь не более 3 столбцов JSON.

  • Чтение из любой реплики фрагмента; указание количества фрагментов разбиения хеш-мапы. Раньше все чтения направлялись к первичному фрагменту реплики, за исключением простых чтений. (Простое чтение — это чтение, которое блокирует строку во время чтения.) Начиная с NDB 7.5.2, можно включить чтение из любой реплики фрагмента. По умолчанию это выключено, но его можно включить для данного узла SQL с помощью переменной системы ndb_read_backup, добавленной в этом выпуске.

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

    Этот параметр можно контролировать для отдельных таблиц с помощью опции PARTITION_BALANCE (переименована из FRAGMENT_COUNT_TYPE в NDB 7.5.4), встроенной в комментарии NDB_TABLE в CREATE TABLE или ALTER TABLE операторах. Также поддерживаются настройки для уровня таблицы READ_BACKUP с использованием этого синтаксиса. Более подробную информацию и примеры см. в Разделе 13.1.18.9 «Указание параметров комментариев NDB».

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

    В рамках этой работы NDB 7.5.2 также вводит переменную системы ndb_data_node_neighbour. Она предназначена для использования при подсказках транзакций, чтобы предоставить «близлежащий» узел данных этому узлу SQL.

    Кроме того, при восстановлении схем таблиц ndb_restore --restore-meta теперь использует стандартное разбиение целевого кластера, а не то же количество разбиений, что и в исходном кластере, из которого была сделана резервная копия. Дополнительную информацию и пример см. в Разделе 21.5.24.2.2 «Восстановление на большее количество узлов, чем в исходном».

    NDB 7.5.3 добавляет дополнительное улучшение к READ_BACKUP: в этой и более поздних версиях можно установить READ_BACKUP для заданной таблицы онлайн в рамках ALTER TABLE ... ALGORITHM=INPLACE ....

  • Улучшения ThreadConfig. В NDB 7.5.2 реализован ряд улучшений и добавлений функций для параметра конфигурации многопоточного узла данных ThreadConfig (ndbmtd), включая поддержку увеличенного числа платформ. Эти изменения описаны в следующих абзацах.

    Теперь на FreeBSD и Windows поддерживается неэксклюзивное блокирование процессора с использованием cpubind и cpuset. Эксклюзивное блокирование процессора теперь поддерживается на Solaris (только) с использованием параметров cpubind_exclusive и cpuset_exclusive, которые введены в этом выпуске.

    Теперь доступен приоритет потоков, управляемый новым параметром thread_prio. thread_prio поддерживается на Linux, FreeBSD, Windows и Solaris и несколько отличается в зависимости от платформы. Дополнительную информацию см. в описании ThreadConfig.

    Параметр realtime теперь поддерживается на платформах Windows.

  • Разбиения размером более 16 ГБ. Благодаря улучшению реализации хеш-индексов, используемых узлами данных NDB Cluster, разбиения таблиц NDB теперь могут содержать более 16 ГБ данных для фиксированных столбцов, а максимальный размер разбиения для фиксированных столбцов теперь увеличен до 128 ТБ. Предыдущее ограничение было связано с тем, что блок DBACC в ядре NDB использовал только 32-битные ссылки на фиксированную часть строки в блоке DBTUP, хотя 45-битные ссылки на эти данные используются в DBTUP и в других частях ядра за пределами DBACC; все такие ссылки в блоке DBACC теперь используют 45 бит вместо 32.

  • Вывод SQL-запросов из ndb_restore. NDB 7.5.4 добавляет параметр --print-sql-log для утилиты ndb_restore, поставляемой с дистрибутивом NDB Cluster. Этот параметр позволяет регистрировать SQL-запросы в stdout. Важно: каждая таблица, которую требуется восстановить с помощью этого параметра, должна иметь явно определенный первичный ключ.

    Дополнительную информацию см. в Разделе 21.5.24 «ndb_restore — Восстановление резервной копии NDB Cluster».

  • Организация пакетов RPM. Начиная с NDB 7.5.4, имена и организация пакетов RPM, предоставляемых для NDB Cluster, более соответствуют тем, что выпущены для MySQL server. Теперь имена всех RPM NDB Cluster начинаются с префикса mysql-cluster. Узлы данных теперь устанавливаются с помощью пакета data-node; управляющие узлы теперь устанавливаются из пакета management-server; а узлы SQL требуют пакетов server и common. Программы MySQL и NDB-клиенты, включая клиент mysql и клиент управления ndb_mgm, теперь включены в RPM-пакет client.

    Полный список пакетов RPM NDB Cluster и другую информацию см. в Разделе 21.3.1.2 «Установка NDB Cluster из RPM».

  • Обработка и настройка таблиц ndbinfo и config_nodes. NDB 7.5.7 добавляет две таблицы в базу данных информации кластера ndbinfo, чтобы предоставить информацию о узлах кластера; эти таблицы перечислены здесь:

    • config_nodes: Эта таблица предоставляет идентификатор узла, тип процесса и имя хоста для каждого узла, указанного в файле конфигурации кластера NDB.

    • Таблица processes отображает информацию о узлах, подключенных в настоящее время к кластеру; эта информация включает имя процесса и системный идентификатор процесса; для каждого узла данных и узла SQL также отображается идентификатор процесса процесса ангела узла. Кроме того, таблица показывает адрес службы для каждого подключенного узла; этот адрес можно установить в приложениях NDB API с помощью метода, который также добавлен в NDB 7.5.7.

  • Имя системы. Имя системы кластера NDB можно использовать для идентификации конкретного кластера. Начиная с NDB 7.5.7, MySQL Server отображает это имя как значение статусной переменной Ndb_system_name; приложения NDB API могут использовать метод, добавленный в этом же релизе.

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

  • Опции ndb_restore. Начиная с NDB 7.5.13, опции --nodeid и --backupid являются обязательными при вызове ndb_restore.

  • Улучшения ndb_blob_tool. Начиная с NDB 7.5.18, утилита ndb_blob_tool может обнаруживать отсутствующие части BLOB, для которых существуют встроенные части, и заменять их плейсхолдерами BLOB (состоящими из пробелов) соответствующей длины. Для проверки наличия отсутствующих частей BLOB используйте опцию --check-missing с этой программой. Для замены любых отсутствующих частей BLOB плейсхолдерами используйте опцию --add-missing.

    Для получения более подробной информации см. Раздел 21.5.6, «ndb_blob_tool — Проверка и исправление столбцов BLOB и TEXT таблиц кластера NDB».

  • Опция --ndb-log-fail-terminate. Начиная с NDB 7.5.18, вы можете заставить узел SQL завершиться всякий раз, когда он не может полностью записать все события строк. Это можно сделать, запустив mysqld с опцией --ndb-log-fail-terminate.

  • Программы NDB—удаление зависимости NDBT. Удалена зависимость ряда утилит программ NDB от библиотеки NDBT. Эта библиотека используется внутренне для разработки и не требуется для обычного использования; ее включение в эти программы может привести к нежелательным проблемам при тестировании.

    Затронутые программы перечислены здесь вместе с версиями NDB, в которых зависимость была удалена:

    • ndb_restore, в NDB 7.5.15

    • ndb_show_tables, в NDB 7.5.18

    • ndb_waiter, в NDB 7.5.18

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

  • Устаревание и удаление Авто-инсталлятора. Веб-инструмент установки MySQL NDB Cluster Auto-Installer (ndb_setup.py) устарел в NDB 7.5.20 и удален в NDB 7.5.21 и более поздних версиях. Он больше не поддерживается.

  • Устаревание и удаление ndbmemcache. ndbmemcache больше не поддерживается. ndbmemcache был устарел в NDB 7.5.20 и удален в NDB 7.5.21.

  • Удалена поддержка Node.js. Начиная с релиза NDB Cluster 7.5.20, поддержка Node.js NDB 7.5 была удалена.

    Поддержка Node.js NDB Cluster поддерживается только в NDB 8.0.

  • Преобразование между NULL и NOT NULL во время операций восстановления. Начиная с NDB 7.5.23, ndb_restore может поддерживать восстановление столбцов NULL как NOT NULL и наоборот, используя указанные здесь опции:

    • Для восстановления столбца NULL как NOT NULL используйте опцию --lossy-conversions.

      Столбец, изначально объявленный как NULL, не должен содержать строк NULL; если он содержит, ndb_restore завершается с ошибкой.

    • Для восстановления столбца NOT NULL как NULL используйте опцию --promote-attributes.

    • Поддержка OpenSSL 3.0. Начиная с NDB 7.5.31, все двоичные файлы сервера и клиента MySQL, включенные в дистрибутив NDB, скомпилированы с поддержкой Open SSL 3.0.

    Для получения более подробной информации см. описания указанных опций ndb_restore.

ClusterJPA больше не поддерживается, начиная с NDB 7.5.7; исходный код и двоичные файлы были удалены из дистрибутива NDB Cluster.

NDB Cluster 7.5 также поддерживается MySQL Cluster Manager, который предоставляет расширенный командный интерфейс, который может упростить многие сложные задачи управления NDB Cluster. См. Руководство пользователя MySQL Cluster Manager 1.4.8 для получения дополнительной информации.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysql-cluster-what-is-new-7-5.html

Spec-Zone.ru

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