Spec-Zone.ru › MySQL 8.4

9.4.1 Экспорт данных в формате SQL с помощью mysqldump

В этом разделе описывается, как использовать mysqldump для создания файлов дампов в формате SQL. Сведения о загрузке таких файлов дампов см. в разделе 9.4.2, «Загрузка резервных копий в формате SQL».

По умолчанию mysqldump записывает информацию в виде SQL-команд в стандартный вывод. Вы можете сохранить вывод в файл:

$> mysqldump [arguments] > file_name

Для экспорта всех баз данных вызовите mysqldump с параметром --all-databases:

$> mysqldump --all-databases > dump.sql

Для экспорта только определенных баз данных укажите их имена в командной строке и используйте параметр --databases:

$> mysqldump --databases db1 db2 db3 > dump.sql

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

При использовании параметров --all-databases или --databases, mysqldump записывает команды CREATE DATABASE и USE перед выводом дампа для каждой базы данных. Это гарантирует, что при загрузке файла дампа каждая база данных будет создана, если она не существует, и станет текущей базой данных, так что содержимое баз данных загружается в ту же базу данных, из которой оно было извлечено. Если вы хотите, чтобы файл дампа принудительно удалял каждую базу данных перед ее повторным созданием, используйте также параметр --add-drop-database. В этом случае mysqldump записывает команду DROP DATABASE перед каждой командой CREATE DATABASE.

Для экспорта одной базы данных укажите ее имя в командной строке:

$> mysqldump --databases test > dump.sql

В случае одной базы данных разрешается опустить параметр --databases:

$> mysqldump test > dump.sql

Разница между двумя предыдущими командами заключается в том, что без параметра --databases вывод дампа не содержит команд CREATE DATABASE или USE. Это имеет несколько последствий:

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

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

  • Если база данных, которую нужно загрузить, не существует, необходимо создать ее предварительно.

  • Поскольку вывод не содержит команды CREATE DATABASE, параметр --add-drop-database не оказывает влияния. Если его использовать, он не создает команду DROP DATABASE.

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

$> mysqldump test t1 t3 t7 > dump.sql

По умолчанию, если на сервере, где вы создаете файл дампа, используются GTID (gtid_mode=ON), mysqldump включает в вывод команду SET @@GLOBAL.gtid_purged, чтобы добавить GTID из набора gtid_executed на сервере-источнике в набор gtid_purged на целевом сервере. Если вы экспортируете только определенные базы данных или таблицы, важно отметить, что значение, включаемое mysqldump, включает GTID всех транзакций в наборе gtid_executed на сервере-источнике, даже тех, которые изменяли подавленные части базы данных или другие базы данных на сервере, которые не были включены в частичный дамп. Если вы загрузите только один частичный файл дампа на целевой сервер, дополнительные GTID не вызовут проблем с дальнейшей работой этого сервера. Однако если вы загрузите второй файл дампа на целевой сервер, содержащий те же GTID (например, другой частичный дамп с того же сервера-источника), любая команда SET @@GLOBAL.gtid_purged во втором файле дампа завершится ошибкой. Чтобы избежать этой проблемы, либо установите параметр mysqldump --set-gtid-purged в значение OFF или COMMENTED, чтобы вывести второй файл дампа без активной команды SET @@GLOBAL.gtid_purged, или удалите команду вручную перед загрузкой файла дампа.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysqldump-sql-format.html

Spec-Zone.ru

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