Spec-Zone.ru › MariaDB

mariadb-dump

MariaDB начиная с 10.4.6

С MariaDB 10.4.6, mariadb-dump является символической ссылкой на mysqldump, инструмент для резервного копирования.

MariaDB начиная с 10.5.2

С 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, --force Продолжить, даже если во время дампа таблицы произошла ошибка 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 > dumpfile

3. Запустите реплику:
mariadb> START SLAVE;

4. На новой реплике загрузите файл дампа:
shell> mariadb < dumpfile

5. На новой реплике установите координаты репликации на координаты первичного сервера, полученные ранее:
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.

См. также

  • Mariabackup
  • Восстановление MariaDB в определенный момент времени (видео)
  • MariaDB Enterprise Backup
  • Обновление до более новой основной версии MariaDB (видео)
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

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