Spec-Zone.ru › MySQL 9.2

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-9.2-en/mysqldump-sql-format.html

Spec-Zone.ru

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