mariadb-dump
С MariaDB 10.4.6, mariadb-dump является символической ссылкой на mysqldump, инструмент для резервного копирования.
С MariaDB 10.5.2, mariadb-dump — имя инструмента, при этом mysqldump — символическая ссылка.
Клиент mariadb-dump (изначально называвшийся mysqldump) — программа для резервного копирования, первоначально написанная Игорем Романенко. Она может использоваться для создания резервных копий базы данных или набора баз данных или для переноса их на другой сервер базы данных (не обязательно MariaDB или MySQL). Резервная копия обычно содержит SQL-запросы для создания таблицы, заполнения её данных или того и другого. Однако, mariadb-dump также может использоваться для генерации файлов в формате CSV, других разделительных форматах текста или XML.
Если вы выполняете резервное копирование на сервере, и все ваши таблицы являются таблицами MyISAM, рассмотрите использование mariadb-hotcopy, так как это может обеспечить более быстрое создание и восстановление резервных копий.
mariadb-dump создаёт резервные копии триггеров вместе с таблицами, так как они являются частью определения таблицы. Однако, хранимые процедуры, представления и события не включаются и требуют дополнительных параметров для явного восстановления (например, --routines и --events). Процедуры и функции также являются частью системных таблиц (например, mysql.proc).
mariadb-dump поддерживает улучшения для START TRANSACTION WITH CONSISTENT SNAPSHOT.
Производительность
mariadb-dump обычно не сильно нагружает процессор на современном оборудовании, так как по умолчанию использует один поток. Этот метод подходит для сильно загруженных серверов.
Однако, количество операций ввода/вывода на диск (IOPS) может увеличиться по разным причинам. Если вы делаете резервное копирование на тот же диск, что и база данных, это приводит к излишнему увеличению случайных IOPS. Резервное копирование выполняется последовательно, для каждой таблицы, вызывая полное сканирование таблицы и множество промахов буфера страниц для таблиц, которые не полностью кэшированы в памяти.
Рекомендуется выполнять резервное копирование с сетевого расположения, чтобы избежать IOPS на сервере базы данных, но важно использовать отдельный сетевой адаптер, чтобы сохранить пропускную способность сети для обычного трафика.
Хотя mariadb-dump по умолчанию сохраняет ресурсы для обычных дисковых устройств и оборудования с небольшим количеством ядер, это не означает, что одновременные резервные копии не могут извлечь выгоду из архитектуры оборудования, такой как SAN, флэш-хранилище, низкая нагрузка на запись. Время резервного копирования могло бы быть сокращено инструментом, таким как MyDumper.
Использование
Существует четыре основных способа вызова mariadb-dump:
shell> mariadb-dump [options] db_name [tbl_name ...] shell> mariadb-dump [options] --databases db_name ... shell> mariadb-dump [options] --all-databases shell> mariadb-dump [options] --system=[option_list]
Если вы не указываете какие-либо таблицы после имени базы данных или используете опцию --databases или --all-databases, будут выгружены все базы данных.
mariadb-dump по умолчанию не выгружает базу данных INFORMATION_SCHEMA (или PERFORMANCE_SCHEMA, если она включена). MariaDB выгружает базу данных INFORMATION_SCHEMA, если вы явно указываете её в командной строке, хотя в настоящее время также требуется опция --skip-lock-tables.
Чтобы увидеть список поддерживаемых опций вашей версии mariadb-dump, выполните mariadb-dump --help.
Строка за строкой против буферизации
mariadb-dump может извлекать и выгружать содержимое таблицы строка за строкой или может извлечь всё содержимое таблицы и буферизовать его в памяти перед выгрузкой. Буферизация в памяти может быть проблемой, если вы выгружаете большие таблицы. Чтобы выгружать таблицы строка за строкой, используйте опцию --quick (или --opt, которая включает --quick). Опция --opt (и следовательно --quick) включена по умолчанию, поэтому чтобы включить буферизацию в памяти, используйте --skip-quick.
mariadb-dump и таблица mysql.transaction_registry
mariadb-dump включает логику для обработки таблицы mysql.transaction_registry. mysqldump из более ранней версии MariaDB не может использоваться в MariaDB 10.3 и более поздних версиях.
mariadb-dump и старые версии MySQL
Если вы используете последнюю версию mariadb-dump для создания резервной копии, которую нужно загрузить на очень старую версию MySQL-сервера, не используйте опции --opt или --extended-insert. Используйте --skip-opt вместо этого.
Параметры
mariadb-dump поддерживает следующие параметры:
| Опция | Описание |
|---|---|
--all |
Устаревшее. Используйте --create-options вместо этого. |
-A, --all-databases
|
Выгрузить все базы данных. Это будет то же самое, что --databases со всеми выбранными базами данных. |
-Y, --all-tablespaces
|
Выгрузить все табличные пространства. |
-y, --no-tablespaces
|
Не выгружать никакую информацию о табличных пространствах. |
--add-drop-database |
Добавить DROP DATABASE перед каждым созданием. Обычно используется в сочетании с опцией --all-databases или --databases, так как операторы CREATE DATABASE не записываются, если не указана ни одна из этих опций. |
--add-drop-table |
Добавить DROP TABLE перед каждым созданием. |
--add-drop-trigger |
Добавить оператор DROP TRIGGER перед каждым CREATE TRIGGER. С версии MariaDB 10.2.6. |
--add-locks |
Добавить блокировки вокруг операторов INSERT, что приводит к более быстрым операциям вставки при повторной загрузке файла выгрузки. Отключить с помощью --skip-add-locks. |
--allow-keywords |
Разрешить создание имен столбцов, являющихся ключевыми словами. Это работает путем добавления префикса имени таблицы к каждому имени столбца. |
--apply-slave-statements |
Добавляет STOP SLAVE перед CHANGE MASTER и START SLAVE в конец выгрузки. |
--as-of |
Выгрузить таблицы с историей версий по состоянию на указанную метку времени. С версии MariaDB 10.7.0. |
--character-sets-dir=name |
Директория для файлов кодировок символов. |
-i, --comments
|
Записать дополнительную информацию в файл выгрузки, такую как версия программы, версия сервера и хост. Отключить с помощью --skip-comments. |
--compact |
Предоставить менее подробный вывод (полезно для отладки). Отключает комментарии структуры и конструкции заголовка/футера. Включает опции --skip-add-drop-table, --skip-add-locks, --skip-comments, --skip-disable-keys, и --skip-set-charset. |
--compatible=name |
Изменить выгрузку на совместимость с заданным режимом. По умолчанию таблицы выгружаются в формате, оптимизированном для MariaDB и MySQL. Допустимые режимы: ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, и no_field_options. Можно использовать несколько режимов, разделенных запятыми.Эта опция не гарантирует совместимость с другими серверами. Она только включает те значения SQL-режима, которые в настоящее время доступны для повышения совместимости вывода выгрузки. Например, --compatible=oracle не сопоставляет типы данных с типами Oracle или не использует синтаксис комментариев Oracle. |
-c, --complete-insert
|
Использовать полные операторы INSERT, включающие имена столбцов. |
-C, --compress
|
Использовать сжатие в протоколе сервер/клиент. Для работы необходимо, чтобы и клиент, и сервер поддерживали сжатие. |
--copy-s3-tables |
По умолчанию таблицы S3 игнорируются. При указании этой опции в результирующем файле будет содержаться оператор CREATE для аналогичной таблицы Aria, за которым следует данные таблицы и завершающий ALTER TABLE xxx ENGINE=S3. С версии MariaDB 10.5.0. |
-a, --create-options
|
Включить все специфичные для MariaDB и/или MySQL параметры создания в операторах CREATE TABLE. Отключить с помощью --skip-create-options. |
-B, --databases
|
Выгрузить несколько баз данных. Обычно mariadb-dump рассматривает первое имя аргумента командной строки как имя базы данных, а последующие имена — как имена таблиц. С этой опцией все имена аргументов рассматриваются как имена баз данных. Операторы CREATE DATABASE и USE включаются в вывод перед каждой новой базой данных. |
-#, --debug[=#] |
При использовании отладочной версии MariaDB записывать в журнал отладки. Типичная строка debug_options — ´d:t:o,file_name´. Значение по умолчанию — ´d:t:o,/tmp/mysqldump.trace´. При использовании неотладочной версии mariadb-dump поймает это и завершит работу. |
--debug-check |
Проверять использование памяти и открытых файлов при выходе. |
--debug-info |
Печатать некоторую отладочную информацию при выходе. |
--default-auth=name |
Используемый по умолчанию клиентский плагин проверки подлинности. |
--default-character-set=name |
Установить кодировку символов по умолчанию на name. Если кодировка символов не указана, mariadb-dump использует utf8mb4. |
--defaults-extra-file=name |
Прочитать файл name после чтения глобальных файлов. Должен быть указан в качестве первого аргумента. |
--defaults-file=name |
Считывать только параметры по умолчанию из данного файла name. Должен быть указан в качестве первого аргумента. |
--defaults-group-suffix=str |
Также считывать группы с суффиксом str. Например, так как mariadb-dump обычно считывает группы [client] и [mariadb-dump] (или [mysqldump]), --defaults-group-suffix=x заставит его также считывать группы [mariadb-dump_x] (или [mysqldump_x]) и [client_x]. |
--delayed-insert |
Вставлять строки с помощью INSERT DELAYED вместо INSERT. |
--delete-master-logs |
На сервере первичной репликации удалить бинарные журналы, отправив оператор PURGE BINARY LOGS на сервер после выполнения операции выгрузки. Эта опция автоматически включает --master-data. |
-K, --disable-keys
|
'/*!40000 ALTER TABLE tb_name DISABLE KEYS */; и '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; будут включены в вывод. Это ускорит загрузку файла выгрузки, так как индексы создаются после вставки всех строк. Эта опция эффективна только для неуникальных индексов таблиц MyISAM. Отключить с помощью --skip-disable-keys. |
--dump-date |
Если опция --comments и эта опция заданы, mariadb-dump создает комментарий в конце выгрузки следующего формата:-- Dump completed on DATEОднако дата заставляет файлы выгрузки, сделанные в разное время, выглядеть разными, даже если данные в остальном идентичны. --dump-date и --skip-dump-date управляют тем, добавляется ли дата в комментарий. По умолчанию --dump-date (включать дату в комментарий). --skip-dump-date подавляет вывод даты. |
-H, --dump-history
|
Выгрузить таблицы с историей. С версии MariaDB 10.11.0. До этой опции mariadb-dump не мог читать исторические строки из таблиц с историей, поэтому исторические данные не резервировались. |
--dump-slave[=value] |
Используется для создания файла выгрузки с сервера репликации, который можно использовать для настройки другого сервера репликации с тем же первичным сервером. Приводит к добавлению позиции бинарного журнала и имени файла первичного сервера в выводимые данные. Установка значения на 1 (значение по умолчанию) отобразит его как команду CHANGE MASTER в выводимых данных; если установлено на 2, эта команда будет помечена символом комментария. Эта опция включит --lock-all-tables, если не указана опция --single-transaction (в этом случае глобальная блокировка чтения захватывается только на короткое время в начале выгрузки - не забудьте прочитать о --single-transaction ниже). В любом случае любые действия с журналами будут происходить в точный момент выгрузки. Опция автоматически отключает --lock-tables. Использование этой опции заставляет mariadb-dump остановить поток SQL репликации перед началом выгрузки и запустить его снова после завершения. |
-E, --events |
Включить события Планировщика событий событий для выгружаемых баз данных в выходные данные. |
-e, --extended-insert
|
Использовать синтаксис множественных строк INSERT, включающий несколько списков VALUES. Это приводит к меньшему размеру файла выгрузки и ускоряет операции вставки при повторной загрузке файла. По умолчанию включено; отключить с помощью --skip-extended-insert. |
--fields-terminated-by=name |
Поля в выходном файле завершаются заданной строкой. Используется с опцией --tab и имеет то же значение, что и соответствующее предложение FIELDS для LOAD DATA INFILE. |
--fields-enclosed-by=name |
Поля в выходном файле заключены в заданный символ. Используется с опцией --tab и имеет то же значение, что и соответствующее предложение FIELDS для LOAD DATA INFILE. |
--fields-optionally-enclosed-by=name |
Поля в выходном файле необязательно заключаются в заданный символ. Используется с опцией --tab и имеет то же значение, что и соответствующее предложение FIELDS для LOAD DATA INFILE. |
--fields-escaped-by=name |
Поля в выходном файле экранируются заданным символом. Используется с опцией --tab и имеет то же значение, что и соответствующее предложение FIELDS для LOAD DATA INFILE. |
--first-slave |
Удалено в MariaDB 5.5. Используйте --lock-all-tables вместо этого. |
-F, --flush-logs
|
Очистить журналы сервера MariaDB перед запуском дамп. Этот параметр требует привилегии RELOAD. Если вы используете этот параметр в сочетании с параметром --databases= или --all-databases, журналы очищаются для каждой базы данных, которую дампит. Исключение составляет использование --lock-all-tables или --master-data: в этом случае журналы очищаются только один раз, соответствуя моменту блокировки всех таблиц. Если вы хотите, чтобы дамп и очистка журналов происходили в один и тот же момент, вы должны использовать --flush-logs вместе с --lock-all-tables или --master-data |
--flush-privileges |
Отправить оператор FLUSH PRIVILEGES на сервер после дампинга базы данных mysql. Этот параметр следует использовать всякий раз, когда дамп содержит базу данных mysql и любую другую базу данных, которая зависит от данных в базе данных mysql для правильного восстановления. |
-f,
|
Продолжить, даже если во время дампа таблицы произошла ошибка SQL. Одно из применений этого параметра состоит в том, чтобы заставить mariadb-dump продолжить выполнение, даже когда он сталкивается с представлением, которое стало недопустимым, потому что определение ссылается на таблицу, которая была удалена. Без --force в этом примере mariadb-dump завершается с сообщением об ошибке. С --force, mariadb-dump выводит сообщение об ошибке, но также записывает SQL-комментарий, содержащий определение представления, в выходной дамп и продолжает выполнение. |
--gtid |
Используется вместе с --master-data и --dump-slave для более удобной настройки новой реплики GTID. Он заставляет эти параметры выводить операторы SQL, которые настраивают реплику на использование глобального идентификатора транзакции для подключения к первичному серверу вместо позиций файла/смещения старого стиля. Позиции старого стиля все еще включены в комментарии при использовании --gtid; аналогично, позиция GTID включается в комментарии, даже если --gtid не используется. |
-?, --help
|
Отобразить сообщение справки и выйти. |
--hex-blob |
Дампить двоичные строки в шестнадцатеричном формате (например, ´abc´ становится 0x616263). Затронутые типы данных: BINARY, VARBINARY, типы BLOB и BIT. |
-h name, --host=name
|
Подключиться к серверу MariaDB или MySQL на заданном хосте и сделать дамп данных. По умолчанию хост localhost. |
--ignore-database=name |
Не дампить указанную базу данных. Чтобы указать более одной базы данных для игнорирования, используйте директиву несколько раз, по одному для каждой базы данных. Действует только при использовании вместе с --all-databases или -A. Добавлено в MariaDB 10.3.7. |
--ignore-table=name |
Не дампить указанную таблицу. Чтобы указать более одной таблицы для игнорирования, используйте директиву несколько раз, по одному для каждой таблицы. Каждая таблица должна быть указана с именами базы данных и таблицы, например, --ignore-table=database.table. Этот параметр также может использоваться для игнорирования представлений. |
--ignore-table-data=name |
Не дампить данные указанной таблицы (только структуру). Чтобы указать более одной таблицы для игнорирования, используйте директиву несколько раз, по одному для каждой таблицы. Каждая таблица должна быть указана с именами базы данных и таблицы. С MariaDB 10.1.46, MariaDB 10.2.33, MariaDB 10.3.24, MariaDB 10.4.14 и MariaDB 10.5.3. Смотрите также --no-data. |
--include-master-host-port |
Добавить параметры MASTER_HOST и MASTER_PORT для оператора CHANGE MASTER TO при использовании параметра --dump-slave для дампа реплики. |
--insert-ignore |
Вставлять строки с INSERT IGNORE вместо INSERT. |
--lines-terminated-by=name |
Строки в выходном файле завершаются заданной строкой. Этот параметр используется с параметром --tab и имеет такое же значение, как соответствующая часть LINES для LOAD DATA INFILE. |
-x, --lock-all-tables
|
Заблокировать все таблицы во всех базах данных. Это достигается путем получения глобальной блокировки для чтения на все время дампа путем выполнения FLUSH TABLES WITH READ LOCK. Этот параметр автоматически отключает --single-transaction и --lock-tables. |
-l, --lock-tables
|
Для каждой дампируемой базы данных заблокировать все таблицы, которые нужно дампить, перед их дампингом. Таблицы блокируются с помощью READ LOCAL, чтобы разрешить одновременные вставки в случае таблиц MyISAM. Для транзакционных таблиц, таких как InnoDB, --single-transaction - гораздо лучший вариант, чем --lock-tables, потому что ему не нужно блокировать таблицы вообще.Поскольку --lock-tables блокирует таблицы для каждой базы данных отдельно, этот параметр не гарантирует, что таблицы в файле дампа логически согласованы между базами данных. Таблицы в разных базах данных могут быть дампированы в совершенно разных состояниях. Используйте --skip-lock-tables для отключения. |
--log-error=name |
Записывать предупреждения и ошибки, добавляя их в указанный файл. По умолчанию ведение журналов отключено. |
--log-queries |
При восстановлении дампа, если ведение журналов включено, сервер будет записывать запросы в общий и журнал медленных запросов. По умолчанию включено; используйте --skip-log-queries для отключения. Добавлено в MariaDB 10.1.1. |
--master-data[=#] |
Приводит к добавлению позиции и имени файла бинарного журнала в вывод, полезно для дампинга первичного сервера репликации для создания файла дампа, который можно использовать для настройки другого сервера как реплики первичного. Это координаты первичного сервера, с которых реплика должна начать репликацию после загрузки файла дампа в реплику. Если параметр установлен в 1 (по умолчанию), он выведет его как команду CHANGE MASTER; если установлен в 2, эта команда будет иметь префикс символом комментария. Этот параметр --master-data включит --lock-all-tables, если не указан также --single-transaction. До MariaDB 5.3 это занимало глобальную блокировку для чтения на короткое время в начале дампа - см. Улучшения для START TRANSACTION WITH CONSISTENT SNAPSHOT и параметр --single-transaction ниже). Во всех случаях любые действия с журналами выполняются в точный момент дампа. Этот параметр автоматически отключает --lock-tables.Во всех случаях любые действия с журналами выполняются в точный момент дампа. Также возможно настроить реплику, дампируя существующую реплику первичного сервера. Для этого выполните следующую процедуру на существующей реплике: 1. Остановите поток SQL реплики и получите ее текущее состояние: mariadb> STOP SLAVE SQL_THREAD;mariadb> SHOW SLAVE STATUS;2. Из вывода оператора SHOW SLAVE STATUS, координаты бинарного журнала первичного сервера, с которого новая реплика должна начать репликацию, являются значениями полей Relay_Master_Log_File и Exec_Master_Log_Pos. Обозначим эти значения как file_name и file_pos. 2. Дампируем сервер реплики: shell> mariadb-dump --master-data=2 --all-databases > dumpfile3. Запустите реплику: mariadb> START SLAVE;4. На новой реплике загрузите файл дампа: shell> mariadb < dumpfile5. На новой реплике установите координаты репликации на координаты первичного сервера, полученные ранее: mariadb> CHANGE MASTER TO MASTER_LOG_FILE = ´file_name´, MASTER_LOG_POS = file_pos;Оператор CHANGE MASTER TO также может потребовать другие параметры, такие как MASTER_HOST, чтобы направить реплику на правильный хост первичного сервера. Добавьте все необходимые параметры. |
--max-allowed-packet=# |
Максимальная длина пакета для отправки или получения от сервера. Максимальное значение 1 ГБ. |
--max-statement-time=# |
Устанавливает максимальное время выполнения любого оператора до момента таймаута сервером. (Значение по умолчанию 0 (без ограничения)) |
--net-buffer-length=# |
Начальный размер буфера для связи TCP/IP и сокетов клиент/сервер. Это можно использовать для ограничения размера строк в дампе. При создании операторов INSERT с несколькими строками (как с параметрами --extended-insert или --opt), mariadb-dump создает строки длиной до net_buffer_length байт. |
--no-autocommit |
Заключать операторы INSERT для каждой дампируемой таблицы в операторы SET autocommit = 0 и COMMIT. |
-n, --no-create-db
|
Этот параметр подавляет оператор CREATE DATABASE ... IF EXISTS, который обычно выводится для каждой дампируемой базы данных, если используется --all-databases или --databases |
-t, --no-create-info
|
Не записывать операторы CREATE TABLE, которые повторно создают каждую дампируемую таблицу. |
-d, --no-data
|
Не записывать информацию о строках таблицы (то есть не дампить содержимое таблицы). Это полезно, если вы хотите дампить только оператор CREATE TABLE для таблицы (например, чтобы создать пустую копию таблицы, загрузив файл дампа). См. также --ignore-table-data. |
--no-data-med |
Не выгружать строки для движков, управляющих внешними данными (например, MRG_MyISAM, MRG_ISAM, CONNECT, OQGRAPH, Spider, VP, Federated). Этот параметр включён по умолчанию. Если требуется выгрузить данные для этих движков, необходимо установить --no-data-med=0. |
--no-defaults |
Не читать параметры по умолчанию из файла параметров. Должен быть указан в качестве первого аргумента. |
-N, --no-set-names
|
Подавить оператор SET NAMES. Это имеет тот же эффект, что и --skip-set-charset. |
--opt |
Этот параметр является сокращённым. Он эквивалентен указанию --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, и --disable-keys. Включён по умолчанию, отключить с помощью --skip-opt. Он должен обеспечить быструю операцию выгрузки и создать файл выгрузки, который можно быстро загрузить в сервер MariaDB.Параметр --opt включён по умолчанию. Используйте --skip-opt для его отключения. См. обсуждение в начале этого раздела для информации о выборочном включении или отключении подмножества параметров, на которые влияет --opt. |
--order-by-primary |
Сортирует строки каждой таблицы по первичному ключу или первому уникальному ключу, если такой ключ существует. Это полезно при выгрузке таблицы MyISAM для загрузки в таблицу InnoDB, но это значительно увеличит время выгрузки. |
--order-by-size |
Выгружает каждую таблицу в соответствии с её размером, начиная с наименьших. Полезно при использовании --single-transaction для таблиц, которые часто усекаются/изменяются. Предполагается, что меньшие таблицы усекаются чаще, и выгружая их первыми, это уменьшает вероятность того, что выгрузка --single-transaction завершится ошибкой с сообщением 'Таблица изменена, повторите транзакцию'. От MariaDB 10.9.1. |
-p[passwd], --password[=passwd
|
Пароль для подключения к серверу. Если вы используете короткий вариант параметра (-p), пробел между параметром и паролем недопустим. Если вы опустите значение пароля после параметров --password или -p в командной строке, mariadb-dump запросит его.Указание пароля в командной строке небезопасно. Для избежания ввода пароля в командной строке можно использовать файл параметров. |
-W, --pipe
|
В Windows подключение к серверу через именованную трубу. Этот параметр применяется только если сервер поддерживает подключения через именованные трубы. |
--plugin-dir |
Директория для плагинов на стороне клиента. |
-P num, --port=num
|
Номер порта TCP/IP для подключения. |
--print-defaults |
Вывести список аргументов программы и завершить работу. Должен быть указан в качестве первого аргумента. |
--protocol=name |
Протокол подключения для подключения к серверу (TCP, SOCKET, PIPE, MEMORY). Полезно, когда другие параметры подключения обычно вызывают использование другого протокола, нежели тот, который требуется. |
-q, --quick
|
Этот параметр полезен для выгрузки больших таблиц. Он заставляет mariadb-dump получать строки для таблицы с сервера по одной строке за раз и сразу выгружать результаты в стандартный вывод, вместо того, чтобы получать весь набор строк и буферизовать его в памяти перед выгрузкой. По умолчанию включено, отключить с помощью --skip-quick. |
-Q, --quote-names
|
Квалифицировать идентификаторы (такие как база данных, таблица и имена столбцов) с помощью символов обратной косы (`). Если включён режим SQL ANSI_QUOTES, идентификаторы квалифицируются символами (") . Этот параметр включен по умолчанию. Его можно отключить с помощью --skip-quote-names, но этот параметр должен быть указан после любого параметра, такого как --compatible, который может включить --quote-names. |
--replace |
Использовать операторы REPLACE INTO вместо операторов INSERT INTO. |
-r, --result-file=name
|
Прямой вывод в указанный файл. Этот параметр следует использовать в Windows, чтобы предотвратить преобразование символов новой строки "\n" в последовательности возврат каретки/новой строки "\r\n". Результат файла создаётся и его предыдущее содержимое перезаписывается, даже если при генерации выгрузки произошла ошибка. |
-R, --routines
|
Включить хранимые процедуры (процедуры и функции) для выгружаемых баз данных в выходной файл. Использование этого параметра требует привилегии SELECT для таблицы mysql.proc. Выходной файл, полученный при использовании --routines, содержит операторы CREATE PROCEDURE и CREATE FUNCTION для повторного создания процедур. Однако, эти операторы не включают атрибуты, такие как метки создания и изменения процедуры. Это означает, что при повторной загрузке процедуры будут созданы с метками времени равными времени загрузки.Если требуются процедуры, созданные с исходными атрибутами меток времени, не используйте --routines. Вместо этого, выгрузите и перезагрузите содержимое таблицы mysql.proc непосредственно, используя учётную запись MariaDB с соответствующими привилегиями для базы данных mysql. |
set-charset |
Добавить 'SET NAMES default_character_set' в выходной файл, чтобы установить кодировку символов. Включён по умолчанию; отключить с помощью --skip-set-charset. |
-O, --set-variable=name |
Изменить значение переменной. Обратите внимание, что этот параметр устарел; вы можете установить переменные напрямую с помощью --variable-name=value. |
--shared-memory-base-name |
Имя общей памяти для подключений Windows, использующих общую память для локального сервера (запущенного с параметром --shared-memory). Регистрозависимый. По умолчанию MYSQL. |
--single-transaction |
Этот параметр отправляет оператор SQL START TRANSACTION на сервер перед выгрузкой данных. Он полезен только с транзакционными таблицами, такими как InnoDB, так как тогда он выгружает согласованное состояние базы данных в момент, когда BEGIN был выдан без блокировки каких-либо приложений.При использовании этого параметра следует учитывать, что только таблицы InnoDB выгружаются в согласованном состоянии. Функция однотранзакционной выгрузки зависит не только от того, является ли движок транзакционным и способным к REPEATABLE-READ, но и от START TRANSACTION WITH CONSISTENT SNAPSHOT. Выгрузка не гарантирует согласованность для других движков хранения. Например, любые таблицы TokuDB, MyISAM или MEMORY, выгруженные при использовании этого параметра, могут всё ещё изменять своё состояние. Во время выгрузки с помощью --single-transaction , чтобы обеспечить корректный файл выгрузки (правильное содержимое таблиц и координаты двоичного журнала), никакое другое подключение не должно использовать следующие операторы: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE или TRUNCATE TABLE. Согласованный доступ не изолирован от этих операторов, поэтому их использование для таблицы, которая выгружается, может привести к тому, что SELECT (выполняемое mariadb-dump для получения содержимого таблицы) получит некорректное содержимое или завершится ошибкой.Параметры --single-transaction и --lock-tables взаимно исключают друг друга, поскольку LOCK TABLES приводит к неявной фиксации любых ожидающих транзакций. Поэтому этот параметр автоматически отключает --lock-tablesДля выгрузки больших таблиц следует комбинировать параметр --single-transaction с --quick. |
--skip-add-locks |
Отключить параметр --add-locks. |
--skip-comments |
Отключить параметр --comments. |
--skip-disable-keys |
Отключить параметр --disable-keys. |
--skip-extended-insert |
Отключить параметр --extended-insert. |
--skip-opt |
Отключить параметр --opt (отключает --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, и --disable-keys). |
--skip-quick |
Отключить параметр --quick. |
--skip-quote-name |
Отключить параметр --quote-names. |
--skip-set-charset |
Отключить параметр --set-charset. |
--skip-triggers |
Отключить параметр --triggers. |
--skip-tz-utc |
Отключить параметр --tz-utc. |
-S name, --socket=name
|
Для подключений к localhost, файл сокета Unix, или в Windows, имя именованной трубы. |
--ssl |
Включает TLS. TLS также включен, даже без указания этого параметра, если установлены определённые другие параметры TLS. Начиная с MariaDB 10.2, параметр --ssl не будет включать проверку сертификата сервера по умолчанию. Для проверки сертификата сервера, пользователь должен указать параметр --ssl-verify-server-cert. |
--ssl-ca=name |
Определяет путь к файлу PEM, который должен содержать один или несколько сертификатов X509 для доверенных центров сертификации (ЦС), используемых для TLS. Для этого параметра требуется указать абсолютный путь, а не относительный. Более подробную информацию см. в разделе Обзор защищённых соединений: Центры сертификации (ЦС). Этот параметр подразумевает параметр --ssl. |
--ssl-capath=name |
Определяет путь к каталогу, содержащему один или несколько файлов PEM, каждый из которых должен содержать один сертификат X509 для доверенного центра сертификации (ЦС), используемого для TLS. Для этого параметра требуется указать абсолютный путь, а не относительный. Каталог, указанный этим параметром, должен быть обработан командой openssl rehash. Более подробную информацию см. в разделе Обзор защищённых соединений: Центры сертификации (ЦС). Этот параметр поддерживается только в том случае, если клиент был скомпилирован с OpenSSL или yaSSL. Если клиент был скомпилирован с GnuTLS или Schannel, то этот параметр не поддерживается. Более подробную информацию о используемых библиотеках на различных платформах см. в разделе Библиотеки TLS и криптографии, используемые MariaDB. Этот параметр подразумевает параметр --ssl . |
--ssl-cert=name |
Определяет путь к файлу сертификата X509, используемому для TLS. Для этого параметра требуется указать абсолютный путь, а не относительный. Этот параметр подразумевает параметр --ssl. |
--ssl-cipher=name |
Список разрешённых шифров или наборов шифров для использования с TLS. Этот параметр подразумевает параметр --ssl. |
--ssl-crl=name |
Определяет путь к файлу PEM, который должен содержать один или несколько отозванных сертификатов X509 для использования с TLS. Для этого параметра требуется указать абсолютный путь, а не относительный. Более подробную информацию см. в разделе Обзор защищённых соединений: списки отозванных сертификатов (CRL). Этот параметр поддерживается только если клиент был скомпилирован с OpenSSL или Schannel. Если клиент был скомпилирован с yaSSL или GnuTLS, то этот параметр не поддерживается. Более подробную информацию о используемых библиотеках на различных платформах см. в разделе Библиотеки TLS и криптографии, используемые MariaDB. |
--ssl-crlpath=name |
Определяет путь к каталогу, содержащему один или несколько файлов PEM, каждый из которых должен содержать один отозванный сертификат X509 для использования с TLS. Для этого параметра требуется указать абсолютный путь, а не относительный. Каталог, указанный этим параметром, должен быть обработан командой openssl rehash. Более подробную информацию см. в разделе Обзор защищённых соединений: списки отозванных сертификатов (CRL). Этот параметр поддерживается только если клиент был скомпилирован с OpenSSL. Если клиент был скомпилирован с yaSSL, GnuTLS или Schannel, то этот параметр не поддерживается. Более подробную информацию о используемых библиотеках на различных платформах см. в разделе Библиотеки TLS и криптографии, используемые MariaDB. |
--ssl-key=name |
Определяет путь к файлу закрытого ключа для использования с TLS. Для этого параметра требуется указать абсолютный путь, а не относительный. Этот параметр подразумевает параметр --ssl. |
--ssl-verify-server-cert |
Включает проверку серверного сертификата. По умолчанию этот параметр отключён. |
--system=option[,option]] |
Выводит системные таблицы базы данных в логической форме. С этим параметром таблицы базы данных mysql выгружаются в виде CREATE USER, CREATE SERVER и других форм логических портативных SQL-команд. Значения параметра взяты из набора all, users, plugins, udfs, servers, stats, timezones. С MariaDB 10.2.37, MariaDB 10.3.28, MariaDB 10.4.18 и MariaDB 10.5.9. |
-T, --tab=name
|
Генерирует файлы данных в формате с разделителями-табуляцией. При использовании этого параметра для каждой выгружаемой таблицы mariadb-dump будет создан файл tbl_name.sql, содержащий CREATE TABLE оператор, создающий таблицу, и файл tbl_name.txt, содержащий данные таблицы. Значение параметра — каталог для записи файлов.Примечание: Этот параметр может быть использован только тогда, когда mariadb-dump/ запущен на том же компьютере, что и сервер mysqld. У вас должна быть привилегия FILE, а сервер должен иметь разрешение на запись в каталог, который вы указали.По умолчанию файлы данных .txt форматируются с помощью символов табуляции между значениями столбцов и символом новой строки в конце каждой строки. Формат можно задать явно с помощью параметров --fields-xxx и --lines-terminated-by.Значения столбцов преобразуются в кодировку символов, указанную в параметре --default-character-set .
|
--tables |
Этот параметр переопределяет параметр --databases (-B). mariadb-dump рассматривает все аргументы имени, следующие за параметром, как имена таблиц. |
--tls-version=name |
Этот параметр принимает список TLS-версий, разделённых запятыми. Версия TLS будет включена только в том случае, если она присутствует в этом списке. Все остальные версии TLS не будут разрешены. Более подробную информацию см. в разделе Обзор защищённых соединений: версии TLS. Этот параметр был добавлен в MariaDB 10.4.6. |
--triggers |
Включает триггеры для каждой выгружаемой таблицы в выходные данные. Этот параметр включён по умолчанию; отключить его можно с помощью --skip-triggers. |
--tz-utc |
Этот параметр включает возможность выгрузки и перезагрузки столбцов TIMESTAMP между серверами в разных часовых поясах. mariadb-dump устанавливает часовой пояс соединения в UTC и добавляет SET TIME_ZONE=´+00:00´ в файл выгрузки. Без этого параметра столбцы TIMESTAMP выгружаются и перезагружаются в часовых поясах, локальных для исходного и целевого серверов, что может привести к изменению значений, если серверы находятся в разных часовых поясах. --tz-utc также защищает от изменений, связанных с переходом на летнее время. --tz-utc включено по умолчанию. Чтобы отключить его, используйте --skip-tz-utc. |
-u name, --user=name
|
Имя пользователя MariaDB для подключения к серверу. |
-v, --verbose
|
Режим подробной информации. Выводит больше информации о действиях программы на разных этапах. |
-V, --version
|
Выводит информацию о версии и завершает работу. |
-w cond, --where=cond
|
Выгрузить только строки, выбранные по заданному WHERE условию cond. Кавычки вокруг условия обязательны, если оно содержит пробелы или другие символы, имеющие специальное значение для вашей командной оболочки.Примеры: --where="user=´jimf´"-w"userid>1"-w"userid<1"
|
-X, --xml
|
Выгрузить базу данных в формате XML. |
Параметры групп
Некоторые mariadb-dump параметры являются сокращениями для групп других параметров:
- Использование
--optэквивалентно указанию параметров--add-drop-table,--add-locks,--create-options,--disable-keys,--extended-insert,--lock-tables,--quick, и--set-charset. Все параметры, для которых--optявляется сокращением, также включены по умолчанию, так как--optвключено по умолчанию. - Использование
--compactэквивалентно указанию параметров--skip-add-drop-table,--skip-add-locks,--skip-comments,--skip-disable-keys, и--skip-set-charset.
Для отмены действия параметра группы используется его форма с отрицанием (--skip-xxx или --skip-opt или --skip-compact). Также возможно выбрать только часть действия параметра группы, добавив параметры, которые включают или отключают определённые функции. Вот несколько примеров:
- Для выбора действия
--optза исключением некоторых функций, используйте параметр--skipдля каждой функции. Для отключения расширенных вставок и буферизации памяти используйте--opt--skip-extended-insert--skip-quick. (На самом деле,--skip-extended-insert--skip-quickдостаточно, так как--optвключено по умолчанию.) - Для отмены действия
--optдля всех функций, кроме отключения индексов и блокировки таблиц, используйте--skip-opt--disable-keys--lock-tables.
При выборочном включении или отключении действия параметра группы порядок важен, поскольку параметры обрабатываются от первого к последнему. Например, --disable-keys --lock-tables --skip-opt не даст ожидаемого результата; это то же самое, что и --skip-opt в одиночку.
Специальные символы в значениях параметров
Некоторые параметры, например --lines-terminated-by, принимают строку. Строка может быть заключена в кавычки, если это необходимо. Например, в системах Unix это параметр для заключения полей в двойные кавычки:
--fields-enclosed-by='"'
Альтернативный способ задания шестнадцатеричного значения символа. Например, следующий синтаксис работает на любой платформе:
--fields-enclosed-by=0x22
Файлы параметров
Помимо чтения параметров из командной строки, mariadb-dump также может читать параметры из файлов параметров. Если в файле параметров указан неизвестный параметр для mariadb-dump, он игнорируется.
Следующие параметры относятся к тому, как инструменты MariaDB командной строки обрабатывают файлы параметров. Они должны быть указаны в качестве первого аргумента в командной строке:
| Параметр | Описание |
|---|---|
--print-defaults |
Вывести список аргументов программы и завершить работу. |
--no-defaults |
Не читать параметры по умолчанию из любого файла параметров. |
--defaults-file=# |
Читать параметры по умолчанию только из указанного файла. |
--defaults-extra-file=# |
Прочитать этот файл после чтения глобальных файлов. |
--defaults-group-suffix=# |
В дополнение к группам параметров по умолчанию также прочитать группы параметров с этим суффиксом. |
mariadb-dump связан с MariaDB Connector/C. Однако MariaDB Connector/C пока не обрабатывает разбор файлов параметров для этого клиента. Это по-прежнему выполняется кодом разбора файла параметров сервера. Дополнительную информацию см. в MDEV-19035.
Группы параметров
mariadb-dump читает параметры из следующих групп параметров из файлов параметров:
| Группа | Описание |
|---|---|
[mysqldump] |
Параметры, читаемые командой mariadb-dump, которые включают как MariaDB Server, так и MySQL Server. |
[mariadb-dump] |
Параметры, читаемые командой mariadb-dump. Доступно начиная с MariaDB 10.4.6. |
[client] |
Параметры, читаемые всеми программами-клиентами MariaDB и MySQL клиенты, включая клиенты MariaDB и MySQL. Например, mysqldump. |
[client-server] |
Параметры, читаемые всеми программами-клиентами MariaDB и MariaDB Server. Это полезно для параметров, таких как сокет и порт, которые общие для сервера и клиентов. |
[client-mariadb] |
Параметры, читаемые всеми программами-клиентами MariaDB. |
Значения NULL, ´NULL´ и пустые значения в XML
Для столбца с именем column_name, значение NULL, пустая строка и строковое значение ´NULL´ различаются в выводе, генерируемом этим параметром, следующим образом.
| Значение | Представление в XML |
|---|---|
| NULL (неизвестное значение) | <field name="column_name" xsi:nil="true" />
|
| ´´ (пустая строка) | <field name="column_name"></field>
|
| ´NULL´ (строковое значение) | <field name="column_name">NULL</field>
|
Вывод от клиента mariadb при запуске с параметром --xml также следует приведенным выше правилам.
XML-вывод из mariadb-dump включает XML-пространство имен, как показано здесь:
shell> mariadb-dump --xml -u root world City <?xml version="1.0"?> <mariadb-dump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <database name="world"> <table_structure name="City"> <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" /> <field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" /> <field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" /> <field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" /> <field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" /> <key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID" Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" /> <options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079" Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951" Index_length="43008" Data_free="0" Auto_increment="4080" Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02" Collation="latin1_swedish_ci" Create_options="" Comment="" /> </table_structure> <table_data name="City"> <row> <field name="ID">1</field> <field name="Name">Kabul</field> <field name="CountryCode">AFG</field> <field name="District">Kabol</field> <field name="Population">1780000</field> </row> ... <row> <field name="ID">4079</field> <field name="Name">Rafah</field> <field name="CountryCode">PSE</field> <field name="District">Rafah</field> <field name="Population">92020</field> </row> </table_data> </database> </mariadb-dump>
Восстановление
Для восстановления резервной копии, созданной с помощью mariadb-dump, используйте клиентскую программу mariadb для импорта дампа, например:
mariadb db_name < backup-file.sql
Переменные
Вы также можете задать следующие переменные (--variable-name=value) и булевы параметры {FALSE|TRUE} с помощью:
| Имя | Значения по умолчанию |
|---|---|
all |
TRUE |
all-databases |
FALSE |
all-tablespaces |
FALSE |
no-tablespaces |
FALSE |
add-drop-database |
FALSE |
add-drop-table |
TRUE |
add-drop-trigger |
FALSE |
add-locks |
TRUE |
allow-keywords |
FALSE |
apply-slave-statements |
FALSE |
as-of |
(Значение по умолчанию отсутствует) |
character-sets-dir |
(Значение по умолчанию отсутствует) |
comments |
TRUE |
compatible |
(Значение по умолчанию отсутствует) |
compact |
FALSE |
complete-insert |
FALSE |
compress |
FALSE |
copy-s3-tables |
FALSE |
create-options |
TRUE |
databases |
FALSE |
debug-check |
FALSE |
debug-info |
FALSE |
default-character-set |
utf8mb4 |
delayed-insert |
FALSE |
delete-master-logs |
FALSE |
disable-keys |
TRUE |
events |
FALSE |
extended-insert |
TRUE |
fields-terminated-by |
(Значение по умолчанию отсутствует) |
fields-enclosed-by |
(Значение по умолчанию отсутствует) |
fields-optionally-enclosed-by |
(Значение по умолчанию отсутствует) |
fields-escaped-by |
(Значение по умолчанию отсутствует) |
flush-logs |
FALSE |
flush-privileges |
FALSE |
force |
FALSE |
hex-blob |
FALSE |
host |
(Значение по умолчанию отсутствует) |
include-master-host-port |
FALSE |
insert-ignore |
FALSE |
lines-terminated-by |
(Значение по умолчанию отсутствует) |
lock-all-tables |
FALSE |
lock-tables |
TRUE |
log-error |
(Значение по умолчанию отсутствует) |
log-queries |
TRUE |
master-data |
0 |
max_allowed_packet |
16777216 |
net-buffer-length |
1046528 |
no-autocommit |
FALSE |
no-create-db |
FALSE |
no-create-info |
FALSE |
no-data |
FALSE |
no-data-med |
TRUE |
order-by-primary |
FALSE |
port |
0 |
quick |
TRUE |
quote-names |
TRUE |
replace |
FALSE |
routines |
FALSE |
set-charset |
TRUE |
single-transaction |
FALSE |
dump-date |
TRUE |
socket |
(Значение по умолчанию отсутствует) |
ssl |
FALSE |
ssl-ca |
(Значение по умолчанию отсутствует) |
ssl-capath |
(Значение по умолчанию отсутствует) |
ssl-cert |
(Значение по умолчанию отсутствует) |
ssl-cipher |
(Значение по умолчанию отсутствует) |
ssl-key |
(Значение по умолчанию отсутствует) |
ssl-verify-server-cert |
FALSE |
system |
(Значение по умолчанию отсутствует) |
tab |
(Значение по умолчанию отсутствует) |
triggers |
TRUE |
tz-utc |
TRUE |
user |
(Значение по умолчанию отсутствует) |
verbose |
FALSE |
where |
(Значение по умолчанию отсутствует) |
plugin-dir |
(Значение по умолчанию отсутствует) |
default-auth |
(Значение по умолчанию отсутствует) |
Примеры
Частое использование mariadb-dump — для создания резервной копии всей базы данных:
shell> mariadb-dump db_name > backup-file.sql
Вы можете загрузить файл дампа обратно на сервер следующим образом:
shell> mariadb db_name < backup-file.sql
Или так:
shell> mariadb -e "source /path-to-backup/backup-file.sql" db_name
mariadb-dump также очень полезно для заполнения баз данных путем копирования данных с одного сервера MariaDB на другой:
shell> mariadb-dump --opt db_name | mariadb --host=remote_host -C db_name
Можно создать дамп нескольких баз данных одной командой:
shell> mariadb-dump --databases db_name1 [db_name2 ...] > my_databases.sql
Для создания дампа всех баз данных используйте параметр --all-databases:
shell> mariadb-dump --all-databases > all_databases.sql
Для InnoDB-таблиц mariadb-dump предоставляет возможность создания онлайн-резервной копии:
shell> mariadb-dump --all-databases --single-transaction all_databases.sql
Этот резервный копирование приобретает глобальную блокировку чтения для всех таблиц (используя FLUSH TABLES WITH READ LOCK) в начале дампа. Как только эта блокировка будет получена, координаты бинарного журнала будут считаны, и блокировка будет освобождена. Если в момент выполнения инструкции FLUSH выполняются длинные операторы обновления, сервер MariaDB может заблокироваться до завершения этих операторов. После этого дамп становится свободным от блокировок и не препятствует чтению и записи в таблицы. Если операторы обновления, получаемые сервером MariaDB, короткие (с точки зрения времени выполнения), начальный период блокировки не должен быть заметен, даже при большом количестве обновлений.
Для восстановления в определенный момент времени (также известного как «продвижение вперед», когда вам нужно восстановить старую резервную копию и повторить изменения, произошедшие с момента этой резервной копии), часто бывает полезно вращать бинарный журнал или, по крайней мере, знать координаты бинарного журнала, к которому относится дамп:
shell> mariadb-dump --all-databases --master-data=2 > all_databases.sql
Или:
shell> mariadb-dump --all-databases --flush-logs --master-data=2 > all_databases.sql
Параметры --master-data и --single-transaction могут быть использованы одновременно, что обеспечивает удобный способ создания онлайн-резервной копии, подходящей для использования до восстановления в определенный момент времени, если таблицы хранятся с помощью движка хранения InnoDB.
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/mariadb-dump/