25.6.9 Импорт данных в MySQL Cluster
При настройке нового экземпляра NDB Cluster часто требуется импортировать данные из существующего NDB Cluster, экземпляра MySQL или другого источника. Эти данные чаще всего доступны в одном или нескольких из следующих форматов:
Файл дампа SQL, например, созданный с помощью mysqldump. Его можно импортировать с помощью клиента mysql, как показано позже в этом разделе.
Файл CSV, созданный с помощью mysqldump или другой программы экспорта. Такие файлы можно импортировать в
NDB, используяLOAD DATA INFILEв клиенте mysql или с помощью утилиты ndb_import, предоставляемой с дистрибутивом NDB Cluster. Более подробная информация об этой утилите доступна в разделе 25.5.13, «ndb_import — Импорт данных CSV в NDB».Резервную копию в формате
NDB, созданную с помощьюSTART BACKUPв клиенте управленияNDB. Для импорта резервной копии в родном формате необходимо использовать программу ndb_restore, которая входит в состав дистрибутива NDB Cluster. Более подробная информация об использовании этой программы доступна в разделе 25.5.23, «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.