Spec-Zone.ru › MySQL 8.4

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

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

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

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

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

При импорте данных из файла 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 снова после выполнения командой mysql команды source. В противном случае, последующие операторы в той же сессии могут быть выполнены без применения транзакций или ограничений внешних ключей, что может привести к несогласованности данных.

Из системной оболочки можно импортировать файл 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. Если возможно, старайтесь выполнять эти операции частями, например, добавляя LIMIT к таким операторам.

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

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

Spec-Zone.ru

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