Spec-Zone.ru › MySQL 5.7

21.6.9 Импорт данных в MySQL Cluster

При настройке нового экземпляра NDB Cluster часто требуется импортировать данные из существующего NDB Cluster, экземпляра MySQL или другого источника. Эти данные чаще всего доступны в одном или нескольких следующих форматах:

  • Файл дампа SQL, например, созданный командой mysqldump или mysqlpump. Его можно импортировать с помощью клиента mysql, как показано далее в этом разделе.

  • Файл CSV, созданный командой mysqldump или другой программой экспорта. Такие файлы можно импортировать в NDB с помощью LOAD DATA INFILE в клиенте mysql или с помощью утилиты ndb_import, предоставляемой с дистрибутивом NDB Cluster. Более подробную информацию об этом см. в разделе 21.5.14 «ndb_import — Импорт данных CSV в NDB».

  • Резервную копию в собственном формате NDB, созданную с помощью START BACKUP в клиенте управления NDB. Для импорта резервной копии в собственном формате необходимо использовать программу ndb_restore, которая входит в состав NDB Cluster. Более подробную информацию об использовании этой программы см. в разделе 21.5.24 «ndb_restore — Восстановление резервной копии NDB Cluster».

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

SET ndb_use_transactions=0;
SET foreign_key_checks=0;

source path/to/dumpfile;

SET ndb_use_transactions=1;
SET foreign_key_checks=1;

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

Из командной строки вы можете импортировать файл SQL, отключив применение ограничений транзакций и внешних ключей, используя клиент mysql с опцией --init-command, например так:

$> mysql --init-command='SET ndb_use_transactions=0; SET foreign_key_checks=0' < path/to/dumpfile

Также возможно загрузить данные в таблицу InnoDB и затем преобразовать ее для использования движка хранения NDB, используя ALTER TABLE ... ENGINE NDB. Следует учитывать, особенно для многих таблиц, что это может потребовать ряда таких операций; кроме того, если используются внешние ключи, необходимо внимательно следить за порядком операций ALTER TABLE, так как внешние ключи не работают между таблицами, использующими разные движки хранения MySQL.

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

Это также может быть полезно при выполнении массовых операций DELETE или UPDATE с таблицами NDB Cluster. По возможности, старайтесь выполнять эти операции по частям, например, добавляя LIMIT к таким операторам.

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

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysql-cluster-importing-data.html

Spec-Zone.ru

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