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.