Базы данных dump: Что такое дамп базы данных MySQL и как его сделать?
Как создать дамп базы данных
Резервная копия базы данных никогда не будет лишней. Процесс создания копии базы отличается в зависимости от того, используете ли вы панель управления на сервере.
Сервер с панелью управления ISPmanager
ISPmanager даёт возможность работать с сервером баз данных через графический интерфейс — создавать, удалять базы, настраивать пользователей и привилегии. Сюда же входит возможность скачивания и разворачивания дампов — через саму панель ISPmanager или устанавливаемый в наборе с ней phpMyAdmin.
ISPmanager
Чтобы скачать дамп базы сайта из ISPmanager, откройте раздел Инструменты
— Базы данных
.
В списке баз выберите ту, дамп которой вам нужен, и сверху нажмите «Скачать»
. Здесь же доступна загрузка своего дампа («Закачать»
) или восстановление из локальной копии («Локальный дамп»
).
phpMyAdmin
Также выполнить экспорт базы можно через панель phpMyAdmin — она устанавливается в сборке ISPmanager. Откройте раздел Инструменты
— Базы данных
, выберите нужную базу в списке и нажмите «Перейти»
.
Вы будете автоматически авторизованы в phpMyAdmin под пользователем, которому принадлежит выбранная база данных. Чтобы скачать дамп, перейдите в раздел «Экспорт»
:
Здесь можно выбрать метод экспорта: быстрый — с минимумом настроек, или обычный — полностью настраиваемый экспорт, и нажать «Вперёд»
— скачается дамп вашей базы данных.
Если вы хотите экспортировать через phpMyAdmin все базы разом, нужно авторизоваться под пользователем root
сервера баз данных. Для этого перейдите в панель ISPmanager — Настройки
— Серверы баз данных
, выберите ваш сервер БД, сверху «Изменить»
:
Здесь вам понадобится пароль пользователя root
.
Скопируйте его и перейдите в раздел Доп. приложения
— phpMyAdmin
. Для входа в панель используйте логин root
и скопированный пароль. Таким образом вы получите полный доступ к серверу баз данных и сможете экспортировать все базы разом.
Сервер без панели управления
Если ваш сервер настроен вручную, способ создания дампа зависит от того, какие инструменты вы используете для работы. Например, если вы управляете базами данных через тот же phpMyAdmin, тогда можно выполнить экспорт с его помощью по инструкции выше. Если же нет, тогда можно воспользоваться его альтернативой — скриптом Adminer, или сделать дамп по старинке, вручную через утилиту mysqldump
.
Adminer
Админер — это php-скрипт, который предоставляет все основные возможности для управления базами данных сайта через графический интерфейс в браузере.
Чтобы начать работать с ним, достаточно скачать его с официального сайта на сервер и открыть в браузере:
Скачиваем скрипт на сервер в корневую папку нашего сайта:
wget https://github.com/vrana/adminer/releases/download/v4.7.7/adminer-4.7.7.php
Ссылку на актуальную версию скрипта можно найти на официальном сайте.
Настраиваем права доступа на скачанный скрипт:
chmod 644 adminer-4.7.7.php
Открываем загруженный скрипт в браузере по адресу:
https:// [ваш домен или IP-адрес]/adminer-4.7.7.php
После таких нехитрых манипуляций откроется интерфейс для управления базами данных. Для авторизации вам потребуются:
- имя пользователя базы данных
- пароль пользователя базы данных
- название базы данных
Чтобы создать дамп базы, после подключения в меню слева выберите «Экспорт»
:
Выберите, какие данные хотите включить в дамп.
Чтобы скачать дамп, в строке «Выходные данные»
выберите пункт «Сохранить»
и нажмите «Экспорт»:
дамп будет загружен на ваш компьютер.
Ручной дамп базы
Создать дамп базы вручную можно одной командой:
mysqldump -u db-username -p db-name > dump.sql
где db-username
— имя пользователя базы данных, db-name
— название базы данных, dump. sql
— имя файла, в который будет записан дамп. Система запросит пароль указанного пользователя базы и запишет дамп в текущую рабочую директорию на сервере.
Если нужно скачать несколько баз, можно использовать модифицированную версию команды:
mysqldump -u root -p --databases db-name1 db-name2 db-name3 > dump.sql
А так можно сделать дамп сразу всех баз данных:
mysqldump -u root -p --all-databases > full-dump.sql
После создания дампа останется только скачать его, подключившись к серверу, например, по sFTP. Или можно сделать это быстрее, через консоль — с помощью scp
. Эта утилита позволяет копировать файлы между хостами. Для доступа к удалённому хосту потребуются его IP-адрес, имя пользователя и пароль.
Синтаксис команды прост:
scp -pr [откуда и что копировать] [куда копировать и как сохранить]
Опция -r
отвечает за рекурсивное копирование директорий. Пригодится, если нужно передать папку с файлами и подкаталогами. Параметр -p
позволяет при передаче сохранить время последнего изменения файла, время последнего чтения файла и его атрибуты.
Если нужно передать файл dump.sql
с текущего сервера на удалённый, команда примет такой вид:
scp /root/dump.sql [email protected]:/root
Здесь /root/dump.sql
— путь к передаваемому файлу на текущем сервере. [email protected]:/root
— данные для подключения к удалённому хосту (пользователь root
, сервер 188.120.228.62
) и путь, куда нужно сохранить передаваемый файл (/root
).
Если файл с сервера нужно скопировать не на сервер, а на ваш компьютер, запускать утилиту лучше с него (например, на Windows 10 — через Windows PowerShell
). Вот так можно скопировать файл dump.sql
, хранящийся в папке /root
на сервере 188.120.228.62
, на компьютер с ОС Windows в домашнюю папку вашего пользователя (.
):
scp -p [email protected]:/root/dump.sql .
С помощью следующей команды можно добиться обратного результата — дамп dump-dump.sql
будет загружен с вашего компьютера на сервер 188.120.228.62
в папку /root
:
scp -p ./dump-dump.sql [email protected]:/root
Дамп базы данных MySQL — Как сделать и перенести БД — Wiki HOSTiQ.ua
Данная статья может оказаться полезной, если у вас есть веб-сайт, который использует систему управления контентом (Joomla, WordPress, OpenCart и т.д.), и вы решили перенести его на другой сервер. Для этого требуется не только перенос файлов сайта, но и перенос базы данных. Перед тем, как приступить к переносу веб-сайта, необходимо подобрать хороший хостинг для сайта и заказать его, чтобы получить доступ к новому хостинговому аккаунту. Мы, например, предлагаем отдельный хостинг WordPress, Joomla и PrestaShop. Если вы хотите перенести сайт на новое имя и вам нужно купить домен, не торопитесь. Наш план виртуального хостинга S4 предоставит вам домен и Comodo сертификат SSL в подарок. Если для вашего сайта недостаточно виртуального хостинга, вы всегда можете заказать VPS или выделенный сервер.
Стабильный хостинг с поддержкой 24/7
Разместите сайт у нас и мы всегда придём на помощь, если она вдруг понадобится. Даже если вопрос возникнет ночью или в праздники, служба поддержки ответит быстро и поможет найти решение любой проблемы.
Посмотреть тарифы
Создание дампа базы данных в PhpMyAdmin
Для переноса базы данных необходимо сначала создать ее дамп, то есть разместить содержимое в отдельный sql-файл. Делается это в меню phpMyAdmin на хостинге, откуда вы переносите сайт. Зайдите в phpMyAdmin, выделите слева базу данных, которую необходимо перенести, и нажмите на кнопку «Экспорт» в верхнем меню.
Откроется диалоговое окно, в котором обязательно выберите тип базы SQL, после чего нажмите кнопку ОК. Дождитесь пока файл базы данных скачается на ваш компьютер.
Создание пользователя БД MySQL
Теперь этот файл необходимо корректно разместить на нашем хостинге. Для этого необходимо сначала создание базы данных MySQL в cPanel аккаунте, добавление к ней пользователя и назначение ему привилегии. Ниже по порядку расписано, как создать базу данных в MySQL.
Зайдите в cPanel и найдите раздел «Базы данных», выберите «Мастер баз данных MySQL».
Откроется новое окно. На шаге 1 введите имя базы. Обратите внимание на то, что имя БД всегда будет с префиксом, первая половина имени будет содержать в себе имя cPanel аккаунта.
После ввода имени нажмите на кнопку «Следующий шаг».
На шаге 2 необходимо создать пользователя MySQL к базе и задать пароль для него. После ввода всех данных нажмите кнопку «Создать пользователя».
При настройке привилегий созданного пользователя выберите опцию «ВСЕ ПРАВА» и переходите к следующему шагу.
Если в предыдущих шагах все было сделано правильно, мастер баз данных оповестит вас об успешном завершении создания БД на хостинге.
Созданную БД вы теперь сможете найти в списке доступных баз MySQL в одноименном меню контрольной панели.
Восстановление БД из дампа в PhpMyAdmin
Теперь для восстановления базы данных MySQL импортируем в созданную базу содержимое сохраненного со старого хостинга файла с расширением .sql. Для этого на главной странице cPanel выберите пункт меню “phpMyAdmin” в том же разделе “Базы данных”. В открывшемся окне в меню слева выберите только что созданную БД и нажмите на вкладку «Импорт» в верхнем меню.
Нажмите кнопку «Выберите файл», в диалоговом окне выберите ранее сохраненный sql-файл и загрузите его на хостинг. Убедитесь, что выбран тип кодировки utf-8. После нажатия кнопки ОК дождитесь сообщения об успешном импорте базы данных.
На этом все действия, необходимые для переноса базы данных на другой качественный хостинг, выполнены.
Читайте также:
Помогла ли эта статья решить вашу проблему?
Ваш ответ поможет улучшить статьи в будущем.
Правильный экспорт MySQL (Dump базы данных)
- Что такое MySQL
- Как создать базу данных?
- Настройка и управление
- Логин\пароль: где узнать и как восстановить?
- Экспорт MySQL (Dump базы данных)
- Импорт MySQL
- Ограничения БД
- Ошибки
Что такое дамп базы данных?
Это файл, в который сохраняется копия базы данных MySQL. Данные из этого дампа можно использовать для заполнения пустой БД (смена хостинга или перенос сайта с Денвера) или изменения существующей базы данных (используется для бэкапов). Чаще всего этот файл имеет расширение .sql.
Как экспортировать базу данных MySQL?
Обычно экспорт базы данных (создание дампа) производится с помощью интерфейса phpMyadmin. И далее мы подробно разберем несколько шагов:
- В панели управления хостингом, находим phpMyadmin. Чаще всего он находится в разделе «Базы данных» или подобном.
- Слева в углу выберите свою базу данных (ту, которую вы собираетесь экспортировать на компьютер, чтобы потом перенести на другой хостинг).
- Жмем вкладку “Экспорт”.
- Возможно вас попросят выбрать способ экспорта “Обычный” (много настроек) или “Быстрый” (мало настроек). Не имеет значения какой выбирать, главное изменить только те настройки, которые мы описываем ниже.
- Нужно выбрать все таблицы, нажав на кнопку “Выделить все”.
- Отметить галочкой “Сохранить как файл”, “Сохранить вывод в файл” или что-то подобное.
- На всякий случай, запоминаем кодировку, но не трогаем ее.
- Жмем “Ок” и сохраняем файл с БД себе на компьютер. Обычно сохраняемый файл имеет расширение .sql.
Экспорт базы данных MySQL через SSH
Есть еще один способ экспорта БД — с помощью протокола SSH. Для этого используется специальная SSH-команда:
mysqldump —user=DBUSER —password=USERPASSWORD DBNAME > DUMPFILENAME.sql
или
mysqldump -uDBUSER -pUSERPASSWORD DBNAME > DUMPFILENAME. sql
Вместо слов написанных большими буквами подставляем:
DBUSER — имя пользователя базы данных, например uhosting_databaseuser;
USERPASSWORD — пароль пользователя БД, например Rjkweuik12;
DBNAME — имя базы данных, из которой будет производится экспорт, например uhosting_databasename;
DUMPFILENAME — имя dump-файла, в который будет производится экспорт. Здесь можно указать путь куда будет сохранен дамп-файл, но лучше этого не делать, и просто забрать файл с сервера хостинг-провайдера.
Дамп БД MySQL | Инструмент для резервного копирования MySQL
Резервное копирование БД MySQL с помощью графического интерфейса
Следующий пример показывает выполнение резервного копирования БД MySQL с помощью
графического интерфейса.
1. Щелкните правой кнопкой мыши в окне Проводник и выберите опцию Резервная копия → Создать резервную копию БД.
Откроется окно Мастер резервирования БД
2. На вкладке «Общие» укажите соединение, базу данных для создания резервной
копии, а также название итогового файла. Щелкните Далее.
3. Выберите содержимое для создания резервной копии. Щелкните Далее.
4. Укажите подробные опции создания резервной копии MySQL. Щелкните Далее.
5. Настройте опции Обработка ошибок и Лог-файла. Щелкните Выполнить
для создания резервной копии MySQL.
6. Щелкните Выполнить.
Как запланировать создание резервной копии MySQL?
Иногда вам может понадобиться настроить автоматическое
Создание резервных копий БД MySQL.
Для этого вы должны, прежде всего, создать файл проекта,
содержащий настройки резервного копирования, с помощью мастера резервного копирования
MySQL. Создав файл проекта, вы должны будете запланировать задачу Windows, которая
будет выполняться в определенное время или при выполнении определенного условия.
1. Выполните шаги 1-5 выше. Щелкните Сохранить проект.
2. Выбрав все необходимые опции для резервного копирования и сохранив проект, запустите
Планировщик задач в Windows.
3. Выберите Действие → Создать простую задачу в верхнем меню.
4. Укажите имя для новой задачи. Щелкните Далее.
5. Выберите одну из опций для запуска задачи создания резервной копии MySQL. Щелкните
Далее.
6. Выберите время и частоты для запуска задачи. Щелкните Далее.
7. Выберите Запустить программу и щелкните Далее.
8. Укажите путь к файлу dbforgemysql.com в поле Программа или сценарий.
(По умолчанию задан путь «C:\Program Files\Devart\dbForge Studio for MySQL\dbforgemysql.com»)
Также, не забудьте указать следующие аргументы в поле Добавить аргументы:
/backup /connection:»User Id=root;Host=db;Port=3309;Database=sakila;Character
Set=utf8;» /projectfile:»C:\Users\Documents\dbForge Studio for MySQL\Export\sakila.backup»
9. Проверьте все настройки еще раз и, если изменения не требуются, щелкните Завершить.
В противном случае, щелкните Назад и внесите необходимые изменения.
Наш Мастер резервного копирования MySQL поможет вам избежать потери
данных. Всего за несколько простых шагов вы сможете создавать копии баз данных целиком
или только избранных объектов, настолько же быстро и просто восстанавливая их в
дальнейшем.
PgSQL-как импортировать дамп базы данных только тогда, когда база данных полностью пуста?
Прецедент на самом деле автоматизировать это с ansible
. Я хочу импортировать дамп базы данных только тогда, когда база данных полностью пуста (нет таблиц внутри). Конечно, всегда есть способ выполнить оператор sql, но это последнее средство, я считаю, что для этого должно быть более элегантное решение.
pg_restore
руководство не предоставляет эту опцию, насколько я вижу.
Вот как я планирую сделать это с ansible:
- name: db_restore | Receive latest DB backup
shell: s3cmd --skip-existing get `s3cmd ls s3://{{ aws_bucket }}/ | grep sentry | tail -1 | awk '{print $4}'` sql. latest.tgz
args:
chdir: /root/
creates: sql.latest.tgz
- name: db_restore | Check if file exists
stat: path=/root/sql.latest.tgz
register: sql_latest
- name: db_restore | Restore latest DB backup if backup file found
shell: PGPASSWORD={{ dbpassword }} tar -xzOf /root/sentry*.tgz db.sql | psql -U{{ dbuser }} -h{{ pgsql_server }} --set ON_ERROR_STOP=on {{ dbname }}
when: sql_latest.stat.exists
ignore_errors: True
В идеале это должно проверить, если DB пустой. Для этой цели не существует модуля ansible. Google тоже молчит.. Текущее решение на самом деле также работает, это даст ошибку, когда импорт не удастся, и я могу просто игнорировать ошибку, но немного больно видеть ложную тревогу.
postgresql
ansible
database-backups
Поделиться
Источник
holms
30 марта 2015 в 02:53
3 ответа
- mysql-как импортировать дамп базы данных с числовыми именами таблиц
Я пытаюсь создать дамп и импортировать базу данных, которая имеет только числовые имена таблиц. Я мало что могу сделать с Соглашением об именовании, и я знаю, что оно не должно быть числовым, но так оно и есть! Проблема у меня есть в том, что демпинг в порядке, но когда я пытаюсь импортировать…
- Получение неопределенного значения, когда база данных пуста
У меня возникла проблема с моим мобильным приложением, и я не знаю, как ее решить. когда я нажимаю кнопку, которая получает данные из базы данных, я анализирую их в json, и когда я хочу использовать их в своем приложении, я получаю неопределенное. Мотыгой я могу сделать так, чтобы мне не досталось…
5
На самом деле нет такой вещи, как «empty» как таковой; он обычно имеет встроенные типы, язык PL/PgSQL по умолчанию и т. д., Даже если вы создаете из template0
. Если вы создадите из другого шаблона, там может быть намного больше.
PostgreSQL не сохраняет запись первой записи без шаблона в DB, поэтому вы также не можете сказать «changed since created».
Вот почему нет опции --if-empty
для pg_restore
. Это действительно не имеет смысла.
Безусловно, лучший вариант-выполнить psql
для запроса information_schema
и определить, есть ли какие-либо таблицы в схеме public
. Или, что еще лучше, запрос на наличие определенных таблиц и типов, которые вы знаете, будет создан дампом.
напр.
psql -qAt mydbname -c "select 1 from information_schema.tables where table_schema = 'public' and table_name = 'testtable';"
Затем вы можете проверить нулевые / ненулевые строки, возвращенные в stdout. Или оберните его в SELECT EXISTS(...)
, чтобы получить логическое значение из psql
. Или используйте блок DO
, который ERROR
s, Если таблица существует, если вам нужен нулевой / ненулевой статус выхода из psql
.
Поделиться
Craig Ringer
30 марта 2015 в 04:48
3
Чтобы считать базу данных пустой, мы должны знать, что там ничего не было добавлено с момента создания. Поскольку postgres не отслеживает это (как уже упоминалось @Craig Ringer), я рекомендую другой подход в отношении ansible.
Итак, просто используйте механизм обработчика, например:
- name: Create zabbbix postgres DB
postgresql_db: name="{{zabbix_db_name}}"
notify:
- Init zabbix database
Поделиться
Hubbitus
21 июля 2015 в 15:12
2
Поскольку трудно сказать, является ли база данных «empty», как объясняют другие, гораздо проще проверить, существует ли база данных, а затем создать и восстановить в один шаг. Я делаю это вот так:
- name: Check my_database database already exists
become: yes
become_user: postgres
shell: psql -l | grep my_database
ignore_errors: true
register: my_database_db_existence
- debug: var=my_database_db_existence
- name: Copy backup of the my-database database
shell: your-s3-command here
when: my_database_db_existence | failed
- name: Restore my_database database on first run
become_user: postgres
shell: createdb -O my_user my_database && psql -d my_database -f /path/to/my_dump. sql
when: my_database_db_existence | failed
P.S. Также написано подробное сообщение в блоге , объясняющее каждую задачу ansible в реализации.
Поделиться
geekQ
19 января 2017 в 16:35
- Как импортировать дамп neo4j в текущую базу данных
Я могу получить дамп текущей базы данных следующим образом: neo4j-shell -c dump > dump.sql Теперь, как я могу импортировать этот файл дампа в другую базу данных (используя shell)
- Как импортировать дамп базы данных с двоичными файлами
Мне нужно импортировать базу данных в phpmyadmin. Но проблема в том, что создателям базы данных пришла в голову замечательная идея поместить в нее несколько двоичных файлов. (Поле имеет тип tinyblop) когда я читаю дамп в notepad++, у меня есть что-то вроде: Так что есть специальные символы,…
Похожие вопросы:
SQL чтобы проверить, если база данных пуста (нет таблиц)
Мне нужно проверить, полностью ли пуста база данных (без таблиц), используя запрос SQL. Как это можно сделать? Спасибо за помощь!
Msg 3151: база данных, которая была сброшена, не была спокойна, когда был выполнен дамп
Я работаю над загрузкой дампов базы данных на новый сервер ASE, но когда я пытаюсь загрузить дампы 15 Гб и 32 ГБ в базу данных, я получаю следующую ошибку: Msg 3151, Уровень 16, Состояние 2: Сервер…
Как определить, если база данных postgresql пуста правильный путь
РЕДАКТИРОВАТЬ: Ответ, который появляется в первом поиске в stackoverflow, потенциально опасен и неверен для postgresql. Я был укушен им и удалил базу данных, которая на самом деле была заполнена…
mysql-как импортировать дамп базы данных с числовыми именами таблиц
Я пытаюсь создать дамп и импортировать базу данных, которая имеет только числовые имена таблиц. Я мало что могу сделать с Соглашением об именовании, и я знаю, что оно не должно быть числовым, но так…
Получение неопределенного значения, когда база данных пуста
У меня возникла проблема с моим мобильным приложением, и я не знаю, как ее решить. когда я нажимаю кнопку, которая получает данные из базы данных, я анализирую их в json, и когда я хочу использовать…
Как импортировать дамп neo4j в текущую базу данных
Я могу получить дамп текущей базы данных следующим образом: neo4j-shell -c dump > dump.sql Теперь, как я могу импортировать этот файл дампа в другую базу данных (используя shell)
Как импортировать дамп базы данных с двоичными файлами
Мне нужно импортировать базу данных в phpmyadmin. Но проблема в том, что создателям базы данных пришла в голову замечательная идея поместить в нее несколько двоичных файлов. (Поле имеет тип…
Загрузить дамп базы данных в базу данных postgres
У меня есть дамп базы данных около 270 МБ, который я хочу загрузить в свою локальную базу данных postgres. Я ввел следующую команду: pg_dump databasename < dumpfile.sql После чего я получаю: —…
MAMP Pro: после обновления до 4 база данных пуста
После обновления с MAMP 3 до 4 вся база данных полностью пуста. В appsolute / MAMP PRO / db есть две папки: mysql с моими базами данных и mysql56, который почти пуст. Как я могу получить свои базы…
Как импортировать дамп базы данных PostgreSQL через узел и pg
Я пытаюсь импортировать дамп базы данных PostgreSQL, сохраненный как обычный текстовый файл,в psql, используя пакет pg в узле. до сих пор я читаю в файле как строку, а затем пытаюсь импортировать…
Создать/развернуть дамп MySQL БД
Как веб разработчику, мне часто приходится создавать и разворачивать дампы баз данных, и в основном это MySQL. В данной заметке я оставлю частые задачи по работе с дампами MySQL БД. На вскидку, при развертывании InnoDB таблицы ~ 1GB уходит около получаса. Если вам нужно засечь время создания/восстановления дампа — используйте команду time
(time mysql ...
).
Создание дампа MySQL базы
Создать полный дамп MySQL:
mysqldump -uroot --all-databases --routines --triggers -p > mysql. dump
Создать и сжать дамп БД:
mysqldump -uroot -proot DATABASE | gzip > ./db.sql.gz
Создать дамп структуры MySQL:
mysqldump -u%user% -p%pass% --no-data db_name > db_name.dump
Сжать SQL дамп:
gzip --best < db_name.sql > db_name.sql.gz
Исключить таблицы юзеров WP:
mysqldump -uUSER -pPASS --ignore-table=blog.wp_users --ignore-table=blog.wp_usermeta blog > blog_without_users.sql
Создать полный дамп БД — каждая БД в отдельном архиве (shell-скрипт):
#!/bin/bash
dblist=`mysql -u%user% -p%pass% -e "show databases" | sed -n '2,$ p'`
for db in $dblist; do
mysqldump -u%user% -p%pass% --routines --triggers $db | gzip --best > $db.sql.gz
done
Восстановление дампа MySQL БД
Восстановить MySQL дамп:
mysql -uUSER -hlocalhost -pPASS DB_NAME < /path/dump.sql
Восстановить MySQL дамп из zip архива:
unzip -p dump. sql.zip | mysql -u root -p%pass% database%
Восстановить .sql.gz
дамп:
gunzip -c dump.sql.gz | mysql -uroot -hlocalhost -p%pass% %database%
Выдернуть конкретную таблицу из общего дампа:
awk '/CREATE TABLE `table_name`/,/UNLOCK TABLES/' db_name.dump
#mysqldump, #db dump, #restore database
Как сделать дамп базы данных MySQL
Любой кто начинает работать с MySQL может столкнуться с необходимостью создать полную копию базы данных, тоесть дамп. Чаще всего это необходимо для того чтобы скопировать ВСЮ структуру базы и иногда саими данные. Также дамп часто используется для того чтобы восстановить базу данных в случае «поломки»
Команда mysqldump — создание дампа
Для того чтобы создать дамп — командная строка выглядит так:
mysqldump -uUSER -pPASSWORD DB_NAME > FILE_NAME_TO_SAVE
Где
- -uUser — имя пользователя базы в формате типа -u[root]
- -pPassword — пароль пользователя в формате типа -p[123456]
- DB_NAME — имя базы данных
- FILE_NAME_TO_SAVE — куда сохранять дамп
В идеале ни имя пользователя ни пароль где либо сохранять не стоит, система сама спросит под кем логиниться. Так что простой вариант команды следующий:
mysqldump -u -p DB_NAME > FILE_NAME_TO_SAVE
Пример:
mysqldump -uroot -p123456 mydb > dump.sql
Эта комбинация создаст файл dump.sql в той папке в которой вы выполняете команду.
Пакуем в zip:
zip ./dump.zip ./dump.sql
или в tar.gz:
tar -pczf ./dump.tar.gz ./dump.sql
Как восстановить базу данных из дампа
Теперь сделаем восстановление базы данных из дампа.
Для восстановления используем командный интерпретатор MySQL — команду с одноименным названием:
mysql -uUSER -pPASSWORD -f mydb < mydb_dump.sql
Часть < dump.sql
отвечает за «закидывание» файла с SQL командами дампа в интерпретатор.
Пример:
mysql -uroot -p123456 -f mydb < dump.sql
Для того чтобы указать кодировку данных в дампе нужно использовать ключ —default-character-set:
mysql -uroot -p123456 -f --default-character-set=cp1251 mydb < dump. sql
Вот и вся магия
7.4.1 Выгрузка данных в формате SQL с помощью mysqldump
7.4.1 Выгрузка данных в формате SQL с помощью mysqldump
В этом разделе описывается, как использовать mysqldump .
для создания файлов дампа в формате SQL. Для информации о перезагрузке
такие файлы дампа см.
Раздел 7.4.2, «Повторная загрузка резервных копий в формате SQL».
По умолчанию mysqldump записывает информацию как
SQL-операторы в стандартный вывод. Вы можете сохранить вывод
в файле:
оболочка> mysqldump [ аргументов ]> имя_файла
Чтобы выгрузить все базы данных, вызовите mysqldump с
параметр --all-databases
:
оболочка> mysqldump --all-databases> dump.sql
Чтобы выгрузить только определенные базы данных, назовите их в командной строке
и использовать - базы данных
вариант:
оболочка> mysqldump --databases db1 db2 db3> dump. sql
Параметр --databases
вызывает
все имена в командной строке должны рассматриваться как имена базы данных.
Без этой опции mysqldump обрабатывает
имя как имя базы данных и следующие за таблицей
имена.
С - все-базы данных
или
- базы данных
,
mysqldump пишет CREATE
и
БАЗА ДАННЫХ ИСПОЛЬЗУЙТЕ
операторы перед выводом дампа для каждой базы данных. Эта
гарантирует, что при перезагрузке файла дампа создается каждый
база данных, если она не существует, и делает ее базой данных по умолчанию
поэтому содержимое базы данных загружается в ту же базу данных из
которые они пришли.Если вы хотите, чтобы файл дампа заставлял
удаление каждой базы данных перед ее воссозданием, используйте
--add-drop-database
вариант как
хорошо. В этом случае mysqldump записывает
DROP DATABASE
предшествующий оператор
каждый оператор CREATE DATABASE
.
Чтобы выгрузить отдельную базу данных, назовите ее в командной строке:
оболочка> mysqldump - тест баз данных> dump.sql
В случае с единой базой данных допустимо опускать
- базы данных
вариант:
оболочка> mysqldump test> dump.sql
Разница между двумя предыдущими командами заключается в том, что
без - базы данных
, дамп
вывод не содержит CREATE
или
БАЗА ДАННЫХ ИСПОЛЬЗОВАТЬ
заявления. Это имеет несколько последствий:
При перезагрузке файла дампа необходимо указать значение по умолчанию.
имя базы данных, чтобы сервер знал, какую базу данных
перезагрузить.Для перезагрузки вы можете указать имя базы данных другое
от исходного имени, что позволяет перезагрузить данные
в другую базу данных.Если база данных для перезагрузки не существует, вы должны
сначала создайте его.Поскольку вывод не содержит
CREATE
оператор
DATABASE
- параметр add-drop-database
не имеет никакого эффекта. Если вы его используете, он не дает
DROP DATABASE
заявление.
Чтобы выгрузить только определенные таблицы из базы данных, назовите их на
командная строка после имени базы данных:
оболочка> mysqldump test t1 t3 t7> dump.sql
4.5.4 mysqldump — Программа резервного копирования базы данных
4.5.4
mysqldump — Программа резервного копирования базы данных
Клиентская утилита mysqldump выполняет
логические резервные копии,
создание набора операторов SQL, которые могут быть выполнены для
воспроизвести исходные определения объектов базы данных и таблицу
данные. Он выгружает одну или несколько баз данных MySQL для резервного копирования или
перенос на другой SQL-сервер. mysqldump
команда также может генерировать вывод в CSV, другом тексте с разделителями,
или в формате XML.
Подсказка
Рассмотрите возможность использования утилит дампа MySQL Shell, которые обеспечивают параллельный дамп с несколькими потоками, сжатие файлов и отображение информации о ходе выполнения, а также облачные функции, такие как потоковая передача Oracle Cloud Infrastructure Object Storage, а также проверки и модификации совместимости службы баз данных MySQL. Дампы можно легко импортировать в экземпляр сервера MySQL или систему БД службы баз данных MySQL с помощью утилит загрузки дампа MySQL Shell. Инструкции по установке MySQL Shell можно найти здесь.
mysqldump требует как минимум
SELECT
привилегия для сброса
столы, SHOW VIEW
для самосвальных
просмотров, TRIGGER
для сброса
триггеры, ТАБЛИЦЫ БЛОКИРОВКИ
, если
- опцион на одну транзакцию
не используется и (начиная с MySQL 8. 0.21)
ПРОЦЕСС
, если
- no-tablespaces
опция
не используется. Для некоторых параметров могут потребоваться другие привилегии, например
указано в описании опций.
Чтобы перезагрузить файл дампа, у вас должны быть права, необходимые для
выполнить содержащиеся в нем операторы, такие как соответствующие
СОЗДАТЬ
привилегий для объектов, созданных
те заявления.
mysqldump вывод может включать
ALTER DATABASE
утверждает, что
изменить параметры сортировки базы данных. Их можно использовать при сбросе
сохраненные программы для сохранения их кодировки символов.Перезагрузить
файл дампа, содержащий такие утверждения,
ALTER
привилегия для уязвимой базы данных
требуется.
Заметка
Дамп, сделанный с помощью PowerShell в Windows, с выводом
перенаправление создает файл с кодировкой UTF-16:
оболочка> mysqldump [параметры]> dump. sql
Однако UTF-16 не допускается в качестве набора символов подключения.
(увидеть
Недопустимые наборы символов клиента),
поэтому файл дампа не может быть загружен правильно.Чтобы обойти
в этой проблеме используйте параметр --result-file
,
который создает вывод в формате ASCII:
оболочка> mysqldump [параметры] --result-file = dump.sql
Вопросы производительности и масштабируемости
mysqldump
преимущества включают удобство
и гибкость просмотра или даже редактирования вывода перед
восстановление. Вы можете клонировать базы данных для разработки и работы DBA,
или создать небольшие вариации существующей базы данных для
тестирование.Он не предназначен в качестве быстрого или масштабируемого решения для
резервное копирование значительных объемов данных. При больших размерах данных
даже если этап резервного копирования занимает разумное время, восстановление
данные могут быть очень медленными, потому что воспроизведение операторов SQL
включает дисковый ввод-вывод для вставки, создания индекса и так далее.
Для крупномасштабного резервного копирования и восстановления
физическое резервное копирование больше
соответствующий, чтобы скопировать файлы данных в их исходном формате
которые можно быстро восстановить:
Если ваши таблицы в основном
InnoDB
столы, или если у вас есть смесьInnoDB
иMyISAM
, рассмотрите возможность использования
mysqlbackup команда MySQL
Продукт Enterprise Backup.(Доступно как часть
Корпоративная подписка.) Обеспечивает максимальную производительность.
дляInnoDB
резервных копий с минимальным
срыв; он также может создавать резервные копии таблиц из
MyISAM
и другие механизмы хранения; и это
предоставляет ряд удобных вариантов для размещения
различные сценарии резервного копирования. Увидеть
Раздел 30.2, «Обзор MySQL Enterprise Backup».
mysqldump может извлекать и выгружать таблицу
содержимое строка за строкой, или он может получить все содержимое из
таблицу и буферизуют ее в памяти перед сбросом.Буферизация в
память может быть проблемой, если вы сбрасываете большие таблицы. Выгрузить
таблицы строка за строкой используйте
- опция Quick
(или
- опт
, что позволяет
- быстрый
). В
--opt
option (и, следовательно,
--quick
) включен
по умолчанию, поэтому для включения буферизации памяти используйте
- пропустить-быстро
.
Если вы используете последнюю версию
mysqldump для создания дампа для перезагрузки
на очень старый сервер MySQL, используйте
- пропустить опцию
вместо
- опт
или
- опция расширенной вставки
.
Для получения дополнительной информации о mysqldump ,
см. Раздел 7.4, «Использование mysqldump для резервного копирования».
Синтаксис вызова
Как правило, есть три способа использования
mysqldump — для сброса набора из одного
или несколько таблиц, набор из одной или нескольких полных баз данных или
весь сервер MySQL — как показано здесь:
оболочка> mysqldump [ параметры ] db_name [ tbl_name ...]
оболочка> mysqldump [ параметры ] --databases db_name ...
оболочка> mysqldump [ параметры ] --all-databases
Чтобы выгрузить целые базы данных, не называйте таблицы после
db_name
, или используйте
- базы данных
или
- опция для всех баз данных
.
Чтобы увидеть список опций вашей версии
mysqldump поддерживает , введите команду
mysqldump —help .
Синтаксис опций — Сводка по алфавиту
mysqldump поддерживает следующие параметры:
который можно указать в командной строке или в
[mysqldump]
и [клиент]
группы файла опций. Для получения информации о файлах опций
используются программами MySQL, см. Раздел 4.2.2.2, «Использование файлов параметров».
Таблица 4.14 Параметры mysqldump
Варианты подключения
Команда mysqldump выполняет вход в MySQL.
сервер для извлечения информации.Следующие параметры определяют, как
для подключения к серверу MySQL на том же компьютере или
удаленная система.
--bind-address =
ip_address
На компьютере с несколькими сетевыми интерфейсами используйте это
возможность выбрать, какой интерфейс использовать для подключения к
сервер MySQL.- сжатие
,-C
Сжать всю информацию, передаваемую между клиентом и
сервер, если возможно.Увидеть
Раздел 4.2.8, «Контроль сжатия соединений».Начиная с MySQL 8.0.18, эта опция устарела. Ожидайте, что это
быть удаленным в будущей версии MySQL. Увидеть
Настройка сжатия устаревших подключений.- алгоритмы сжатия =
значение
Разрешенные алгоритмы сжатия для подключений к
сервер.Доступные алгоритмы такие же, как и для
протокол_сжатия_алгоритмы
системная переменная. Значение по умолчанию —
без сжатия
.Для получения дополнительной информации см.
Раздел 4.2.8, «Контроль сжатия соединений».Эта опция была добавлена в MySQL 8.0.18.
--default-auth =
плагин
Подсказка о том, какой плагин аутентификации на стороне клиента использовать.См. Раздел 6.2.17, «Подключаемая аутентификация».
- включить плагин открытого текста
Включить открытый текст
mysql_clear_password
плагин аутентификации. (Увидеть
Раздел 6.4.1.4, «Подключаемая аутентификация открытого текста на стороне клиента».)- получить-сервер-открытый ключ
Запросить с сервера открытый ключ, необходимый для ключа RSA
парный обмен паролями.Эта опция применима к клиентам
которые подтверждают
caching_sha2_password
аутентификация
плагин. Для этого плагина сервер не отправляет общедоступные
ключ, если не требуется. Эта опция игнорируется для аккаунтов
которые не проходят аутентификацию с этим плагином. Это также
игнорируется, если обмен паролями на основе RSA не используется, как есть
случай, когда клиент подключается к серверу с помощью
безопасное соединение.Если
--server-public-key-path =
имя_файла
задан и указывает действительный файл открытого ключа, требуется
приоритет над
- получить-сервер-открытый ключ
.Для получения информации о
caching_sha2_password
плагин, см.
Раздел 6.4.1.2, «Кэширование подключаемой аутентификации SHA-2».--host =
,имя_хоста
-h
имя_хоста
Дамп данных с сервера MySQL на указанном хосте. В
хост по умолчанию —localhost
.--login-path =
имя
Параметры чтения из указанного пути входа в
.mylogin.cnf
файл пути для входа. А
«Путь входа» — это группа опций, содержащая
параметры, указывающие, к какому серверу MySQL подключаться и
какой аккаунт нужно аутентифицировать как. Чтобы создать или изменить
файл пути входа, используйте
mysql_config_editor утилита.Увидеть
Раздел 4.6.7, « mysql_config_editor — Утилита настройки MySQL».Для получения дополнительной информации об этом и других файлах опций
см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».--password [=
,пароль
]
-p [
пароль
]Пароль учетной записи MySQL, используемой для подключения к
сервер. Значение пароля указывать необязательно. Если не указано,
mysqldump запрашивает один. Если дано,
не должно быть без пробела между
--password =
или
-p
и следующий за ним пароль. Если нет
указана опция пароля, по умолчанию — нет
пароль.Указание пароля в командной строке должно быть
считается небезопасным. Чтобы не вводить пароль на
в командной строке используйте файл параметров.Увидеть
Раздел 6.1.2.1, «Руководство конечного пользователя по защите паролем».Чтобы явно указать, что пароля нет и что
mysqldump не должен запрашивать один, используйте
в
- пропустить пароль
вариант.- труба
,-W
В Windows подключитесь к серверу с помощью именованного канала. Эта
опция применяется только в том случае, если сервер был запущен с
named_pipe
системная переменная
включен для поддержки соединений с именованными каналами.В дополнение
пользователь, устанавливающий соединение, должен быть членом Windows
группа, указанная
named_pipe_full_access_group
системная переменная.--plugin-dir =
dir_name
Каталог, в котором нужно искать плагины. Укажите это
вариант, если
--default-auth
опция
используется для указания плагина аутентификации, но
mysqldump не находит.Увидеть
Раздел 6.2.17, «Подключаемая аутентификация».--port =
,port_num
-P
номер порта
Для соединений TCP / IP — номер порта, который нужно использовать.
--protocol = {TCP | SOCKET | PIPE | MEMORY}
Транспортный протокол, используемый для подключения к серверу.Это полезно, когда другие параметры подключения обычно
приведет к использованию протокола, отличного от того, который вы хотите. Для
подробности о допустимых значениях см.
Раздел 4.2.7, «Протоколы передачи данных».--server-public-key-path =
имя_файла
Путь к файлу в формате PEM, содержащему
клиентская копия открытого ключа, необходимого серверу
для обмена паролями на основе пары ключей RSA.Этот вариант
применяется к клиентам, которые проходят аутентификацию с помощью
sha256_password
или
caching_sha2_password
аутентификация
плагин. Этот параметр игнорируется для учетных записей, которые не
пройти аутентификацию с помощью одного из этих плагинов. Это также игнорируется
если обмен паролями на основе RSA не используется, как это имеет место
когда клиент подключается к серверу с помощью безопасного
подключение.Если
--server-public-key-path =
имя_файла
задан и указывает действительный файл открытого ключа, требуется
приоритет над
- получить-сервер-открытый ключ
.Для
sha256_password
этот параметр применяется
только если MySQL был построен с использованием OpenSSL.Для получения информации о
sha256_password
иcaching_sha2_password
плагины, см.
Раздел 6.4.1.3, «Подключаемая аутентификация SHA-256» и
Раздел 6.4.1.2, «Кэширование подключаемой аутентификации SHA-2».--socket =
,путь
-S
путь
Для подключений к
localhost
, Unix
файл сокета для использования, или, в Windows, имя названного
труба для использования.В Windows этот параметр применяется, только если сервер был
начал с моделиnamed_pipe
системная переменная включена для поддержки соединений с именованными каналами.
Кроме того, пользователь, устанавливающий соединение, должен быть участником
группы Windows, указанной
named_pipe_full_access_group
системная переменная.--ssl *
Параметры, начинающиеся с
--ssl
указывают
следует ли подключаться к серверу с помощью SSL и указать
где найти SSL-ключи и сертификаты.Увидеть
Параметры команды для зашифрованных соединений.--ssl-fips-mode = {OFF | ON | STRICT}
Управляет включением режима FIPS на стороне клиента. В
--ssl-fips-mode
опция
отличается от других
--ssl-
ххх
варианты в том, что он не используется для установки зашифрованных
соединений, а скорее влияет на то, какие криптографические
операции, чтобы разрешить. См. Раздел 6.8, «Поддержка FIPS».Эти
--ssl-fips-mode
допустимые значения:Заметка
Если объектный модуль OpenSSL FIPS недоступен,
только допустимое значение для
--ssl-fips-mode
— это
ВЫКЛ
. В этом случае установка
--ssl-fips-mode с
по
ON
илиSTRICT
причины
клиент для выдачи предупреждения при запуске и работы
в режиме, отличном от FIPS.--tls-ciphersuites =
ciphersuite_list
Допустимые наборы шифров для зашифрованных соединений, которые
используйте TLSv1.3. Значение представляет собой список из одного или нескольких
Имена шифровальных наборов, разделенных двоеточиями. Наборы шифров, которые могут
имя для этой опции зависит от библиотеки SSL, используемой для
скомпилировать MySQL. Подробнее см.
Раздел 6.3.2, «Протоколы и шифры TLS для зашифрованного соединения».Эта опция была добавлена в MySQL 8.0.16.
--tls-version =
список_протоколов
Допустимые протоколы TLS для зашифрованных соединений. В
значение — это список из одного или нескольких протоколов, разделенных запятыми
имена. Протоколы, которые могут быть названы для этой опции
зависят от библиотеки SSL, используемой для компиляции MySQL. Для
подробности см.
Раздел 6.3.2, «Протоколы и шифры TLS для зашифрованного соединения».--user =
,имя_пользователя
-u
имя_пользователя
Имя пользователя учетной записи MySQL, которое будет использоваться для подключения к
сервер.--zstd-compress-level =
уровень
Уровень сжатия, используемый для подключений к серверу.
которые используют алгоритм сжатияzstd
.Допустимые уровни от 1 до 22, с большими значениями.
с указанием возрастающих уровней сжатия. По умолчанию
zstd
степень сжатия 3.
установка уровня сжатия не влияет на соединения, которые
не используйте сжатиеzstd
.Для получения дополнительной информации см.
Раздел 4.2.8, «Контроль сжатия соединений».Эта опция была добавлена в MySQL 8.0,18.
Параметры файла опций
Эти параметры используются для управления тем, какие файлы параметров следует читать.
--defaults-extra-file =
имя_файла
Прочтите этот файл параметров после файла глобальных параметров, но (на
Unix) перед файлом пользовательских опций. Если файл не
существует или недоступен по иным причинам, возникает ошибка.
имя_файла
интерпретируется как относительное
в текущий каталог, если указан как относительный путь
а не полное имя пути.Для получения дополнительной информации об этом и других файлах опций
см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».--defaults-file =
имя_файла
Используйте только указанный файл опций. Если файл не существует
или недоступен по иным причинам, возникает ошибка.
имя_файла
интерпретируется как относительное
в текущий каталог, если указан как относительный путь
а не полное имя пути.Исключение: даже с
- файл по умолчанию
, клиент
программы читают. mylogin.cnf
.Для получения дополнительной информации об этом и других файлах опций
см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».--defaults-group-suffix =
str
Читайте не только обычные группы опций, но и группы с
обычные имена и суффикс
ул.
.Например,
mysqldump обычно читает
[клиент]
и
[mysqldump]
групп. Если
--defaults-group-suffix = _other
задана опция, mysqldump также читает
[client_other]
и
[mysqldump_other]
групп.Для получения дополнительной информации об этом и других файлах опций
параметры, см. раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».- нет значений по умолчанию
Не читайте файлы опций. Если запуск программы не удается из-за
для чтения неизвестных опций из файла опций,
- можно использовать без значений по умолчанию
чтобы предотвратить их чтение.Исключением является то, что
.mylogin.cnf
файл, если он существует, читается во всех случаях.Это позволяет
пароли следует указывать более безопасным способом, чем в команде
линия, даже когда
- по умолчанию используется
.
(.mylogin.cnf
создается
mysql_config_editor утилита. Увидеть
Раздел 4.6.7, « mysql_config_editor — Утилита настройки MySQL».)Для получения дополнительной информации об этом и других файлах опций
параметры, см. раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».- печать по умолчанию
Выведите название программы и все параметры, которые она получает от
файлы опций.Для получения дополнительной информации об этом и других файлах опций
см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».
Опции DDL
Сценарии использования mysqldump включают настройку
создать полностью новый экземпляр MySQL (включая таблицы базы данных) и
замена данных в существующем экземпляре существующим
базы данных и таблицы.Следующие параметры позволяют указать
какие вещи снести и настроить при восстановлении дампа,
кодирование различных операторов DDL в файле дампа.
--add-drop-база данных
Напишите
DROP DATABASE
оператор перед каждымCREATE
заявление. Этот вариант обычно используется
БАЗА ДАННЫХ
в сочетании с
- все-базы данных
или
- базы данных
вариант, потому что
нетCREATE DATABASE
операторов
записываются, если не указан один из этих параметров.Заметка
В MySQL 8.0
mysql
схема считается схемой системы, которая не может быть
упал конечными пользователями. Если
--add-drop-database
— это
используется с
- все-базы данных
или с
- базы данных
, где
список схем для выгрузки включает
mysql
, файл дампа содержит
DROP DATABASE `mysql`
инструкция, которая
вызывает ошибку при перезагрузке файла дампа.Вместо этого использовать
--add-drop-database
, использовать
- базы данных
со списком
схем для выгрузки, список которых не включает
MySQL
.--добавить-выпустить-таблицу
Напишите заявление
DROP TABLE
перед каждымСОЗДАТЬ ТАБЛИЦУ
заявление.- спусковой крючок
Напишите
DROP TRIGGER
оператор перед каждымCREATE
.
Заявление TRIGGER- все-табличные пространства
,-Y
Добавляет в дамп таблицы все операторы SQL, необходимые для создания любых
табличные пространства, используемыеNDB
Таблица. В противном случае эта информация не включается в
вывод mysqldump . Этот вариант
в настоящее время актуально только для таблиц кластера NDB.--no-create-db
,-n
Подавить
CREATE DATABASE
операторы, которые в противном случае включаются в вывод, если
- базы данных
или
--all-databases
опция
данный.--no-create-info
,-t
Не пишите
CREATE TABLE
операторы, которые создают каждую выгружаемую таблицу.Заметка
Эта опция не исключает , а не
операторы, создающие группы файлов журнала или табличные пространства из
mysqldump output; однако вы можете использовать
- без табличных пространств
вариант для этого.- без табличных пространств
,-y
Эта опция подавляет все
CREATE
и
ГРУППА LOGFILEСОЗДАТЬ
в выводе
Операторы TABLESPACE
mysqldump .- заменить
Напишите заявления
REPLACE
вместоINSERT
заявления.
Параметры отладки
Следующие параметры печатают отладочную информацию, кодируют
отладочную информацию в файле дампа, или пусть дамп
эксплуатация продолжается независимо от возможных проблем.
- разрешить ключевые слова
Разрешить создание имен столбцов, которые являются ключевыми словами. Эта
работает путем добавления имени таблицы к имени каждого столбца.- комментарии
,-i
Запишите дополнительную информацию в файл дампа, например
версия программы, версия сервера и хост.Этот вариант
включен по умолчанию. Чтобы скрыть эту дополнительную информацию,
используйте--skip-comments
.--debug [=
,debug_options
]
- #
[debug_options
]Напишите журнал отладки. Типичный
debug_options
строка
d: t: o,
.Значение по умолчанию —имя_файла
д: т: о, / tmp / mysqldump.trace
.Эта опция доступна, только если MySQL был построен с использованием
WITH_DEBUG
. Выпуск MySQL
двоичные файлы, предоставляемые Oracle, — это , а не
построен с использованием этой опции.- проверка отладки
Распечатайте некоторую отладочную информацию при выходе из программы.
Эта опция доступна, только если MySQL был построен с использованием
WITH_DEBUG
. Выпуск MySQL
двоичные файлы, предоставляемые Oracle, — это , а не
построен с использованием этой опции.- отладочная информация
Печать отладочной информации, а также использования памяти и ЦП
статистика при выходе из программы.Эта опция доступна, только если MySQL был построен с использованием
WITH_DEBUG
.Выпуск MySQL
двоичные файлы, предоставляемые Oracle, — это , а не
построен с использованием этой опции.- дата дампа
Если
- комментирует вариант
задано, mysqldump выдает комментарий на
конец дампа следующего вида:- Дамп завершен DATE
Однако дата приводит к тому, что файлы дампа принимаются в разное время.
казаться разными, даже если данные
идентичный.- дата дампа
и
- дата пропуска-свалки
контролировать, добавляется ли дата к комментарию. В
по умолчанию--dump-date
(укажите дату в комментарии).
- дата пропуска-свалки
подавляет печать даты.- сила
,- f
Игнорировать все ошибки; продолжать, даже если возникает ошибка SQL
во время сброса таблицы.Одно из применений этой опции — вызвать
mysqldump для продолжения выполнения, даже если
он встречает представление, которое стало недействительным, потому что
определение относится к таблице, которая была удалена. Без
- принудительно
, mysqldump выходит
с сообщением об ошибке. С- сила
,
mysqldump выводит сообщение об ошибке, но
он также записывает комментарий SQL, содержащий определение представления
на вывод дампа и продолжает выполнение.Если
--ignore-error
также предоставляется опция игнорирования конкретных ошибок,
- сила
имеет приоритет.--log-error =
имя_файла
Регистрируйте предупреждения и ошибки, добавляя их в указанный файл.
По умолчанию журнал не ведется.- пропустить комментарии
См. Описание
- комментирует вариант
.- вербальный
,-v
Подробный режим. Распечатать дополнительную информацию о том, что программа
делает.
Параметры справки
Следующие параметры отображают информацию о
mysqldump сама команда.
Параметры интернационализации
Следующие параметры изменяют способ
mysqldump Команда представляет символьные данные
с настройками национального языка.
Параметры репликации
Команда mysqldump часто используется для
создать пустой экземпляр или экземпляр, содержащий данные, на
сервер репликации в конфигурации репликации. Следующее
параметры применяются к сбросу и восстановлению данных при репликации
исходные серверы и реплики.
- приложения-подчиненные-заявления
Для дампа реплики, созданного с
- опция dump-slave
, добавьте
STOP REPLICA |
перед заявлением с
Заявление SLAVE
двоичные координаты журнала, а
СТАРТ РЕПЛИКА
в конце вывода.
| Оператор SLAVE- удаленные мастер-журналы
На исходном сервере репликации удалите двоичные журналы с помощью
отправкаПРОДУВКА ДВОИЧНЫХ ЖУРНАЛОВ
запрос на сервер после выполнения операции дампа.
Для этого варианта требуется
ПЕРЕЗАГРУЗИТЬ
привилегии, а также
привилегии, достаточные для выполнения этого оператора. Этот вариант
автоматически включает
- данные мастера
.--dump-slave [=
значение
]Этот вариант похож на
--master-data
за исключением того, что
он используется для дампа сервера-реплики для создания файла дампа
который можно использовать для настройки другого сервера в качестве реплики,
имеет тот же источник, что и сброшенный сервер. Это вызывает дамп
вывод для включенияCHANGE REPLICATION
(из MySQL 8.0,23) или
Оператор SOURCE TO
CHANGE MASTER TO
заявление
(до MySQL 8.0.23), что указывает на двоичный журнал
координаты (имя файла и положение) сброшенного
источник реплики. ИЗМЕНЕНИЕ
читает значения
Оператор REPLICATION SOURCE TO
изRelay_Master_Log_File
и
Exec_Master_Log_Pos
из
ПОКАЗАТЬ
и использует их для
РЕПЛИКА | SLAVE STATUS
SOURCE_LOG_FILE
и
SOURCE_LOG_POS
соответственно.Эти
координаты исходного сервера репликации, из которых
реплика начинает репликацию.--dump-slave
вызывает координаты из
источник, который будет использоваться, а не сброшенные
сервер, как это делает
- опция master-data
. В
кроме того, указание этой опции вызывает
--master-data
параметр отменяется, если
используется и фактически игнорируется.Предупреждение
Этот параметр не следует использовать, если сервер, на котором
дамп будет применяться
gtid_mode = ON
и
MASTER_AUTOPOSITION = 1
.Значение параметра обрабатывается так же, как и для
- данные мастера
. Настройка нет
значение или 1 вызываетCHANGE REPLICATION
(из MySQL 8.0.23) или
Оператор SOURCE TO
CHANGE MASTER TO
заявление
(до MySQL 8.0.23) для записи в дамп. Настройка 2
заставляет оператор быть написанным, но заключенным в SQL
Комментарии. Он имеет тот же эффект, что и
--master-data
с точки зрения включения или
отключение других опций и способ обработки блокировки.Эта опция заставляет mysqldump останавливать
репликация потока SQL перед дампом и его повторный перезапуск
после.- dump-slave
отправляет
ПОКАЗАТЬ
серверу для
РЕПЛИКА | Сообщение SLAVE STATUS
получать информацию, поэтому требуются привилегии, достаточные для
выполнить это заявление.В сочетании с
--dump-slave
- приложения-подчиненные-заявления
и
- включить-мастер-хост-порт
варианты также могут быть использованы.- включить-мастер-хост-порт
Для модели
ИЗМЕНИТЬ ИСТОЧНИК РЕПЛИКАЦИИ
(из MySQL 8.0.23) или
Оператор TO
CHANGE MASTER TO
заявление
(до MySQL 8.0.23) в реплике дампа, созданной с
- опция dump-slave
, добавить
SOURCE_HOST
|
MASTER_HOST
и
SOURCE_PORT
|
MASTER_PORT
параметры для имени хоста и
Номер порта TCP / IP источника реплики.--master-data [=
значение
]Используйте эту опцию, чтобы выгрузить исходный сервер репликации на
создать файл дампа, который можно использовать для настройки другого
сервер как реплика источника. Это вызывает вывод дампа
для включенияИЗМЕНИТЬ ИСТОЧНИК РЕПЛИКАЦИИ
(из MySQL 8.0.23) или
Оператор TO
CHANGE MASTER TO
заявление
(до MySQL 8.0.23), что указывает на двоичный журнал
координаты (имя файла и положение) выгружаемого сервера.
Это координаты исходного сервера репликации из
реплика должна начать репликацию после загрузки
файл дампа в реплику.Если значение параметра равно 2,
CHANGE
|
ИСТОЧНИК РЕПЛИКАЦИИ НА
CHANGE MASTER TO
заявление
написано как комментарий SQL и поэтому носит только информативный характер; Это
не действует при перезагрузке файла дампа. Если вариант
значение 1, инструкция не записывается как комментарий и
вступает в силу при перезагрузке файла дампа. Если нет варианта
указано значение, значение по умолчанию — 1.--master-data
отправляет
SHOW MASTER STATUS Заявление
к серверу для получения информации, поэтому он требует
привилегии, достаточные для выполнения этого оператора. Этот вариант
также требуетПЕРЕЗАГРУЗИТЬ
привилегия и двоичный журнал должны быть включены.Опция
--master-data
автоматически
выключает--lock-tables
.Также включается
- блокировать все таблицы
, если только
- одинарная транзакция
также
указывается, и в этом случае устанавливается глобальная блокировка чтения
только на короткое время в начале дампа (см.
описание для
- разовая транзакция
). В
во всех случаях любое действие с журналами происходит в точный момент
свалка.Также можно настроить реплику, сбросив
существующая копия источника, используя
- вариант dump-slave
, который
отменяет--master-data
и заставляет его быть
игнорируется, если используются обе опции.--set-gtid-purged =
значение
Этот вариант предназначен для серверов, использующих репликацию на основе GTID.
(gtid_mode = ON
). Он контролирует
включениеSET
в выводе дампа,
@@ GLOBAL.gtid_purged
который обновляет значение
gtid_purged
на сервере
где перезагружается файл дампа, чтобы добавить набор GTID из
исходный сервер
gtid_executed
система
переменная.gtid_purged
трюмов
GTID всех транзакций, которые были применены к
сервер, но не существуют ни в одном двоичном файле журнала на
сервер. mysqldump поэтому добавляет
GTID для транзакций, которые были выполнены на источнике
сервер, так что целевой сервер записывает эти транзакции
как применяется, хотя в его двоичном коде их нет
журналы.--set-gtid-purged
также управляет
включениеSET
, который отключает
@@ СЕССИЯ.sql_log_bin = 0
ведение двоичного журнала во время перезагрузки файла дампа. Эта
оператор предотвращает создание новых GTID и
назначены транзакциям в файле дампа, поскольку они
выполняется, так что исходные GTID для транзакций
используются.Если вы не установите
--set-gtid-purged
вариант, по умолчаниюSET
включен в
@@ГЛОБАЛЬНЫЙ.Оператор gtid_purged
вывести вывод, если GTID включены на сервере, на котором вы находитесь
резервное копирование, а набор GTID в глобальном значении
gtid_executed
система
переменная не пуста. НАБОР
также включен
@@ SESSION.sql_log_bin = 0
если на сервере включены GTID.В MySQL 5. 6 и 5.7 вы можете заменить значение
gtid_purged
с
указанный набор GTID при условии, что
gtid_executed
и
gtid_purged
пустые.От
MySQL 8.0, вы можете заменить значение
gtid_purged
с
указанный набор GTID, или вы можете добавить знак плюса (+) к
оператор для добавления указанного набора GTID к набору GTID
это уже проводится
Астрахань .
mysqldumpSET
заявление включает плюс
@@ GLOBAL.gtid_purged
знак (+) в комментарии к версии, который вступает в силу, когда
файл дампа воспроизводится в выпусках MySQL 8.0, что означает
что для этих выпусков набор GTID из файла дампа
добавлен к существующим
gtid_purged
значение. Для
MySQL 5.6 и 5.7, значение
gtid_purged
заменено
с GTID, установленным из файла дампа, что может произойти только
когдаgtid_executed
— это
пустой набор (поэтому, когда репликация не была запущена
ранее или когда репликация ранее не использовалась
GTID). Для получения более подробной информации о том, какSET
работает, см.
Оператор @@ GLOBAL.gtid_purged
gtid_purged
описание для
выпуск, в котором должен быть воспроизведен файл дампа.Важно отметить, что значение, включенное в
mysqldump для набора
заявление включает GTID
@@ GLOBAL.gtid_purged
всех транзакций в
gtid_executed
установлен на
сервер, даже те, которые изменили подавленные части
база данных или другие базы данных на сервере, которые не были
включен в частичный дамп.Это может означать, что после
gtid_purged
значение было
обновляется на сервере, на котором воспроизводится файл дампа, GTID
присутствуют, которые не имеют отношения к каким-либо данным о цели
сервер. Если вы больше не воспроизводите файлы дампа на
целевой сервер, посторонние GTID не вызывают никаких
проблемы с дальнейшей работой сервера, но они
затруднить сравнение или согласование наборов GTID на
разные серверы в топологии репликации. Если вы сделаете
воспроизвести следующий файл дампа на целевом сервере, который
содержит те же GTID (например, другой частичный дамп
с того же исходного сервера), любойSET
заявление во втором дампе
@@ GLOBAL.gtid_purged
файл не работает. В этом случае либо удалите инструкцию
вручную перед воспроизведением файла дампа или вывести дамп
файл без заявления.Заметка
Для MySQL 5.6 и 5.7, не рекомендуется загружать
файл дампа, когда на сервере включены GTID
(gtid_mode = ON
), если ваш
файл дампа включает системные таблицы.
mysqldump выдает инструкции DML для
системные таблицы, использующие нетранзакционный MyISAM
двигатель хранения, и эта комбинация не допускается, когда
GTID включены.Если
SET @@ GLOBAL. gtid_purged
заявление
не будет желаемого результата на вашем целевом сервере, вы
может исключить оператор из вывода, или (из MySQL
8.0.17) включите его, но закомментируйте, чтобы это не было
действует автоматически. Вы также можете включить заявление
но вручную отредактируйте его в файле дампа, чтобы добиться желаемого
результат.Возможные значения для
--set-gtid-purged
опции следующие:-
АВТО
Значение по умолчанию.Если на сервере включены GTID
вы делаете резервную копию и
gtid_executed
не
пусто,SET @@ GLOBAL.gtid_purged
есть
добавлен к выходу, содержащий набор GTID из
Астрахань.. Если
GTID включены,SET
добавлен в
@@ SESSION. sql_log_bin = 0
вывод. Если GTID не включены на сервере,
операторы не добавляются к выводу.-
ВЫКЛ
SET @@ GLOBAL.gtid_purged
не
добавлен к выходу, иSET
не добавляется в
@@ SESSION.sql_log_bin = 0
вывод. Для сервера, где GTID не используются, используйте
этот вариант илиAUTO
. Используйте только это
вариант для сервера, на котором используются GTID, если вы
убедитесь, что необходимый набор GTID уже присутствует в
gtid_purged
на
целевой сервер и не должен быть изменен, или если вы
планируйте определять и добавлять недостающие идентификаторы GTID вручную.-
НА
Если на сервере, для которого выполняется резервное копирование, включены GTID,
SET @@ GLOBAL. gtid_purged
добавлен
на выход (если только
gtid_executed
есть
пустой) иSET
добавлен в
@@ SESSION.sql_log_bin = 0
вывод. Ошибка возникает, если вы установите этот параметр, но
GTID не включены на сервере.Для сервера
где используются GTID, используйте эту опцию или
AUTO
, если вы не уверены, что
GTID в
gtid_executed
нет
необходимо на целевом сервере.-
КОММЕНТАРИРОВАНЫ
Доступно в MySQL 8.0.17. Если GTID включены на
сервер, для которого выполняется резервное копирование,SET
добавлен в вывод
@@ГЛОБАЛЬНЫЙ.gtid_purged
(если толькоgtid_executed
пусто), но закомментировано. Это значит, что
значение
gtid_executed
есть
доступно на выходе, но никаких действий не предпринимается
автоматически при перезагрузке файла дампа.
SET @@ SESSION.sql_log_bin = 0
- это
добавлен к выходным данным и не закомментирован.С участием
КОММЕНТАРИЙ
, вы можете контролировать использование
изgtid_executed
установить вручную или с помощью автоматизации. Например, вы
может предпочесть это сделать, если вы переносите данные в
другой сервер, у которого уже есть другие активные
базы данных.
-
Параметры формата
Следующие параметры определяют, как представлять весь дамп.
файл или определенные виды данных в файле дампа.Они тоже
контролировать, записывается ли некоторая дополнительная информация в
файл дампа.
- компактный
Получите более компактный результат. Эта опция включает
- пропустить-добавить-drop-table
,
- пропустить-добавить-замки
,
- пропустить комментарии
,
- пропустить-отключить-ключи
,
и
- пропустить набор кодов
опции.--compatible =
имя
Производить вывод, более совместимый с другой базой данных
системы или со старыми серверами MySQL. Единственный разрешенный
значение для этой опции -ansi
, что имеет
то же значение, что и соответствующая опция для установки
серверный режим SQL. См. Раздел 5.1.11, «Режимы SQL сервера».- вставка в комплекте
,-c
Используйте полный
INSERT
операторы, которые включают имена столбцов.- создать параметры
Включите все параметры таблиц, специфичные для MySQL, в
CREATE TABLE
операторов.--fields-terminated-by = ...
,
- вложенные поля = ...
,
--fields-optional-enclosed by = ...
,
- поля-экранированные = ...
Эти параметры используются с
--tab
option и иметь
то же значение, что и соответствующийПОЛЯ
пункты дляДАННЫЕ НАГРУЗКИ
.Увидеть
Раздел 13.2.7, «Заявление о ЗАГРУЗКЕ ДАННЫХ».- шестнадцатеричный двоичный объект
Дамп двоичных столбцов в шестнадцатеричной системе счисления (например,
'abc'
становится
0x616263
). Затронутые типы данных:
ДВОИЧНЫЙ
,
ВАРБИНАР
,
BLOB
типов,
BIT
, все типы пространственных данных,
и другие недвоичные типы данных при использовании с
двоичный
набор символов.- линии-завершаются-по = ...
Эта опция используется с
- вкладка
вариант и имеет
то же значение, что и соответствующиеЛИНИИ
пункт дляДАННЫЕ НАГРУЗКИ
. Увидеть
Раздел 13.2.7, «Заявление о ЗАГРУЗКЕ ДАННЫХ».- цитаты
,-Q
Идентификаторы котировок (например, база данных, таблица и столбец
имена) в пределах`
знаков.Если
ANSI_QUOTES
Режим SQL
включен, идентификаторы заключаются в кавычки в диапазоне–
символы. Эта опция включена по умолчанию. Может быть
отключен с помощью--skip-quote-names
, но это
option должен быть указан после любого варианта, такого как
- совместимый
, который может
включить--quote-names
.--result-file =
,имя_файла
-r
имя_файла
Прямой вывод в указанный файл.Файл результатов создан
и его предыдущее содержимое перезаписывается, даже если произошла ошибка
происходит при генерации дампа.Этот параметр следует использовать в Windows, чтобы предотвратить перевод строки
\ n
символов из преобразованных в
\ r \ n
последовательности возврата каретки / новой строки.--show-create-skip-secondary-engine =
значение
Исключает пункт
ВТОРИЧНЫЙ ДВИГАТЕЛЬ
из
CREATE TABLE
операторов. Это
делает это путем включения
show_create_table_skip_secondary_engine
системная переменная на время операции дампа.
Кроме того, вы можете включить
show_create_table_skip_secondary_engine
системная переменная до использования mysqldump .Эта опция была добавлена в MySQL 8.0.18. Попытка
mysqldump работа с
--show-create-skip-secondary-engine
вариант в выпуске до MySQL 8.0,18, что не
поддержать
show_create_table_skip_secondary_engine
переменная вызывает ошибку.--tab =
,dir_name
-T
dir_name
Создавать файлы данных в текстовом формате, разделенные табуляцией. Для каждого
выгруженная таблица, mysqldump создает
имя_таблицы
.sql
файл, содержащийCREATE
, который создает таблицу, и оператор
TABLE
сервер пишет
имя_таблицы
.txt
файл, содержащий его данные. Значение опции - это
каталог, в который можно записать файлы.Заметка
Эту опцию следует использовать только тогда, когда
mysqldump запускается на той же машине, что и
сервер mysqld .Потому что сервер
создает в каталоге* .txt
файлов
что вы укажете, каталог должен быть доступен для записи
сервер и учетная запись MySQL, которую вы используете, должны иметь
FILE
привилегия. Потому что
mysqldump создает
* . sql
в том же каталоге, он должен
быть доступным для записи вашей системной учетной записи.По умолчанию файлы данных
.txt
форматируется с использованием символов табуляции между значениями столбца и
перевод строки в конце каждой строки.Формат можно указать
явно используя
- поля -
иxxx
- линии-завершены-по
опции.Значения столбца преобразуются в указанный набор символов
посредством
- набор символов по умолчанию
вариант.--tz-utc
Эта опция включает
TIMESTAMP
столбцы для сброса и перезагрузки между серверами в
разные часовые пояса. mysqldump устанавливает свое
часовой пояс подключения к UTC и добавляетSET
в файл дампа. Без этого
TIME_ZONE = '+ 00:00'
вариант,TIMESTAMP
столбцов
выгружается и перезагружается в часовых поясах, локальных для источника
и целевые серверы, что может привести к
измените, если серверы находятся в разных часовых поясах.
--tz-utc
также защищает от изменений из-за
на летнее время.--tz-utc
- это
включен по умолчанию. Чтобы отключить его, используйте
- skip-tz-utc
.--xml
,-X
Записать вывод дампа как правильно сформированный XML.
ПУСТО
,
'NULL'
и пустые значения : для
столбец с именемимя_столбца
,
NULL
значение, пустая строка и
строковое значение'NULL'
выделяются
друг от друга в выводе, генерируемом этой опцией как
следует.Значение: Представление XML: NULL
( неизвестное значение )<поле name = "
имя_столбца
"
xsi: nil = "true" />'
( пустая строка )<поле name = "
column_name
">'NULL'
( строковое значение )<поле name = "
column_name
"> NULLВывод клиента mysql при запуске
используя также опцию--xml
следует предыдущим правилам. (Увидеть
Раздел 4.5.1.1, «Параметры клиента mysql».)Вывод XML из mysqldump включает
Пространство имен XML, как показано здесь:оболочка> mysqldump --xml -u корневой мир Город xml version = "1.0"?>
1 Кабул AFG Кабол 1780000 4079 Рафах PSE Рафах
Параметры фильтрации
Следующие параметры определяют, какие типы объектов схемы
записывается в файл дампа: по категориям, например по триггерам или
События; по имени, например, выбирая, какие базы данных и
таблицы для сброса; или даже фильтрация строк из данных таблицы с помощью
пункт WHERE
.
- все базы данных
,-A
Дамп всех таблиц во всех базах данных. Это то же самое, что использовать
опция--databases
и
именование всех баз данных в командной строке.До MySQL 8.0
- подпрограммы
и
--события
варианты для
mysqldump и
mysqlpump не требовалось включать
сохраненные процедуры и события при использовании
- опция для всех баз данных
:
В дамп включена системаmysql
база данных, а следовательно, и
MySQL. proc
и
mysql.event
таблиц, содержащих сохраненные
определения правил и событий. Начиная с MySQL 8.0,
mysql.event
и
mysql.proc
таблицы не используются.
Определения соответствующих объектов хранятся в данных
таблицы словаря, но эти таблицы не выгружаются. Чтобы
включить сохраненные процедуры и события в дамп, созданный с помощью
--all-databases
, используйте
- подпрограммы
и
--события
опции
явно.- базы данных
,-B
Сбросьте несколько баз данных. Как обычно,
mysqldump обрабатывает первый аргумент имени
в командной строке в качестве имени базы данных и следующих имен
как имена таблиц. С этой опцией обрабатываются все имена
аргументы как имена базы данных.СОЗДАТЬ
и
БАЗА ДАННЫХИСПОЛЬЗУЙТЕ
операторы включаются в вывод перед каждым новым
база данных.Эта опция может использоваться для сброса
performance_schema
база данных, которая
обычно не сбрасывается даже с
- опция для всех баз данных
.
(Также используйте
- скиплок-столы
вариант.)- события
,-E
Включить события планировщика событий для сброшенных баз данных в
выход.Для этого варианта требуется
EVENT
привилегии для тех, кто
базы данных.Результат, созданный с помощью
--events
содержитСОЗДАТЬ СОБЫТИЕ
заявления для создания событий.--ignore-error =
ошибка [, ошибка] . ..
Игнорируйте указанные ошибки. Значение параметра - это список
номера ошибок через запятую, указывающие ошибки
игнорировать во время выполнения mysqldump .Если
-force
вариант также
дано игнорировать все ошибки,
- сила
имеет приоритет.--ignore-table =
db_name.tbl_name
Не выгружайте данную таблицу, которая должна быть указана с помощью
имена базы данных и таблицы. Чтобы игнорировать несколько
таблицы, используйте эту опцию несколько раз. Эта опция также может
использоваться для игнорирования просмотров.- нет данных
,-d
Не записывать информацию о строках таблицы (то есть не выгружать
содержание таблицы). Это полезно, если вы хотите сбросить только
CREATE TABLE
заявление для
таблица (например, для создания пустой копии таблицы
загрузив файл дампа).- подпрограммы
,-R
Включите хранимые подпрограммы (процедуры и функции) для
выгруженные базы данных на выходе.Для этого варианта требуется
globalSELECT
привилегия.Результат, сгенерированный с помощью
- подпрограмм
содержитСОЗДАТЬ ПРОЦЕДУРУ
и
CREATE FUNCTION
операторов для
создать подпрограммы.- столы
Заменить
- базы данных
или вариант-B
. mysqldump
рассматривает все аргументы имени, следующие за параметром, как таблицу
имена.- триггеры
Включите в вывод триггеры для каждой выгружаемой таблицы. Эта
опция включена по умолчанию; отключить его с помощью
- триггеры пропуска
.Чтобы иметь возможность сбрасывать триггеры таблицы, вы должны иметь
TRIGGER
привилегия для
Таблица.Допускаются множественные триггеры.
mysqldump сбрасывает триггеры при активации
порядок, чтобы при перезагрузке файла дампа триггеры
созданы в том же порядке активации. Однако если
mysqldump файл дампа содержит несколько
триггеры для таблицы с одним и тем же событием триггера и
время действия, при попытках загрузить дамп возникает ошибка
файл на старый сервер, который не поддерживает несколько
триггеры. (Для обходного пути см.
Примечания к понижению версии;
вы можете преобразовать триггеры для совместимости со старыми
серверов.)--where = '
,where_condition
'
-w
'где_условие
'Дампить только строки, выбранные данным
ГДЕ
состояние. Цитаты вокруг
условие является обязательным, если оно содержит пробелы или другие
символы, которые являются специальными для вашего командного интерпретатора.Примеры:
--where = "user = 'jimf'" -w "ИД пользователя> 1" -w "ИД пользователя <1"
Параметры производительности
Следующие варианты наиболее актуальны для выступления
особенно операций восстановления. Для больших наборов данных
операция восстановления (обработка INSERT
операторы в файле дампа) является наиболее трудоемкой частью.
Когда необходимо быстро восстановить данные, спланируйте и протестируйте
выполнение этого этапа заранее.Время восстановления измерено
через несколько часов вы можете предпочесть альтернативное резервное копирование и восстановление
решение, такое как MySQL
Enterprise Backup для InnoDB
- только и
многофункциональные базы данных.
На производительность также влияет
транзакционный
варианты, в первую очередь для операции дампа.
--статистика-столбец
Добавить
ANALYZE TABLE
операторов
к выходу для генерации статистики гистограммы для сброшенных
таблицы при перезагрузке файла дампа.Этот вариант
по умолчанию отключено, поскольку генерация гистограммы для больших
столы могут занять много времени.- отключение клавиш
,-K
Для каждой таблицы окружите
INSERT
операторы с
/ *! 40000 ИЗМЕНИТЬ ТАБЛИЦУ
и
имя_таблицы
ОТКЛЮЧЕНИЕ КЛЮЧЕЙ
* /;/ *! 40000 ИЗМЕНЕНИЕ ТАБЛИЦЫ
заявлений. Это делает загрузку файла дампа
имя_таблицы
РАЗРЕШЕНИЕ КЛЮЧЕЙ
* /;
быстрее, потому что индексы создаются после того, как все строки
вставлен. Этот вариант эффективен только для неуникальных
индексыMyISAM
таблиц.- удлиненная вставка
,-e
Напишите инструкции
INSERT
, используя
многострочный синтаксис, включающий несколько
ЗНАЧЕНИЯ
списков. Это приводит к меньшему
дамп файла и ускоряет вставку при перезагрузке файла.- вставить-игнорировать
Напишите
ВСТАВИТЬ
, а не
ИГНОРИРОВАТЬ утверждения
INSERT
заявления.--max-allowed-packet =
значение
Максимальный размер буфера для клиент / сервер
общение. По умолчанию - 24 МБ, максимум - 1 ГБ.--net-buffer-length =
значение
Начальный размер буфера для клиент / сервер
общение. При создании многорядной
INSERT
операторы (как с
- удлиненная вставка
или
- опция опт
),
mysqldump создает строки до
- длина сетевого буфера
байт
длинная.Если вы увеличите эту переменную, убедитесь, что MySQL
серверnet_buffer_length
системная переменная имеет значение как минимум такое большое.- тайм-аут сети
,
-М
Включите выгрузку больших таблиц, установив
--max-allowed-packet от
до
максимальное значение и сетевые таймауты чтения и записи в
большое значение. Эта опция включена по умолчанию. Отключить
это, используйте
- тайм-аут пропуска сети
.- опт
Этот параметр, включенный по умолчанию, является сокращением для
комбинация
--добавить-выпустить-таблицу
--добавить замки
- создать параметры
- отключение клавиш
- вставка удлиненная
- замки-столы
- быстрый
- кодировка набора
.Это дает
быстрая операция дампа и создает файл дампа, который можно
быстро перезагрузили на сервер MySQL.Поскольку параметр
--opt
включен
по умолчанию вы указываете только обратное,
- пропустить опцию
, чтобы выключить
несколько настроек по умолчанию. См. Обсуждение
mysqldump
группы опций для информации об выборочно
включение или отключение подмножества параметров, на которые влияет
- опт
.- быстрый
,- q
Эта опция полезна для сброса больших таблиц. Это заставляет
mysqldump для получения строк для таблицы
с сервера по одной строке, а не извлекать
весь набор строк и буферизация его в памяти перед записью
вне.- пропустить опцию
См. Описание
- опция опт
.
Варианты транзакций
Следующие параметры влияют на производительность дампа.
эксплуатации, в отличие от надежности и согласованности
экспортированные данные.
--добавить замки
Окружите каждую свалку стола замком
LOCK
и
ТАБЛИЦЫ
РАЗБЛОКИРОВАТЬ
заявлений. Это приводит к более быстрым вставкам
ТАБЛИЦЫ
при перезагрузке файла дампа.Увидеть
Раздел 8.2.5.1, «Оптимизация операторов INSERT».- промывочные журналы
,-F
Перед запуском дампа очистите файлы журнала сервера MySQL.
Для этого варианта требуется
ПЕРЕЗАГРУЗИТЬ
привилегия. Если вы используете
этот вариант в сочетании с
- опция для всех баз данных
,
журналы сбрасываются для каждой базы данных
сбросил .Исключение составляют случаи использования
- блокировать все таблицы
,
--master-data
, или
- одинарная транзакция
: In
в этом случае журналы сбрасываются только один раз, что соответствует
момент, когда все таблицы заблокированы
СТОЛЫ ДЛЯ ПРОМЫВКИ С БЛОКИРОВКОЙ СЧИТЫВАНИЯ
.
Если вы хотите, чтобы дамп и промывка журнала происходили точно в
в тот же момент вы должны использовать
- промывочные журналы
вместе с
- блокировать все таблицы
,
--master-data
, или
- разовая операция
.- флэш-привилегии
Добавить
ПРИВИЛЕГИИ ПРОМЫВКИ
оператор вывода дампа после сброса
база данных mysql
. Этот вариант должен быть
используется каждый раз, когда дамп содержитmysql
база данных и любая другая база данных, которая зависит от данных в
база данныхmysql
для правильного
восстановление.Поскольку файл дампа содержит
FLUSH
, перезагрузка файла требует
PRIVILEGES
привилегии, достаточные для выполнения этого оператора.- блокировать все таблицы
,-x
Заблокируйте все таблицы во всех базах данных. Это достигается
получение глобальной блокировки чтения на время всего
свалка. Эта опция автоматически отключается
- разовая операция
и
- столы блокировки
.- запорные столы
,-l
Для каждой выгружаемой базы данных заблокируйте все таблицы для дампа
перед их сбросом. Таблицы заблокированы
ЧИТАТЬ ЛОКАЛЬНЫЙ
для разрешения одновременных вставок
в случае таблицMyISAM
. Для
транзакционные таблицы, такие какInnoDB
,
- разовая транзакция
- это
намного лучший вариант, чем--lock-tables
потому что ему вообще не нужно блокировать таблицы.Поскольку
--lock-tables
блокирует таблицы для каждого
отдельно, эта опция не гарантирует, что
таблицы в файле дампа логически согласованы между
базы данных. Таблицы в разных базах данных могут быть сброшены в
совершенно разные состояния.Некоторые варианты, например
- опт
, автоматически
включить--lock-tables
.Если хотите
переопределите это, используйте--skip-lock-tables
в
конец списка опций.- без автоматической фиксации
Приложите
INSERT
заявления
для каждой выгружаемой таблицы в пределахSET autocommit =
и
0COMMIT
заявления.- первичный
Дамп каждой строки таблицы, отсортированной по первичному ключу или по
первый уникальный индекс, если такой индекс существует. Это полезно
при выгрузке таблицыMyISAM
для загрузки
в таблицуInnoDB
, но делает дамп
операция занимает значительно больше времени.--shared-memory-base-name =
имя
В Windows имя разделяемой памяти, используемое для подключений.
сделано с использованием общей памяти на локальном сервере. По умолчанию
значениеMYSQL
.Имя общей памяти
чувствительный к регистру.Этот параметр применяется только в том случае, если сервер был запущен с
shared_memory
система
переменная включена для поддержки соединений с общей памятью.- разовая операция
Эта опция устанавливает режим изоляции транзакции на
ПОВТОРНОЕ ЧТЕНИЕ
и отправляет
START
SQL-запрос к серверу перед
TRANSACTION
сброс данных. Это полезно только с транзакционными таблицами
например,InnoDB
, потому что тогда он сбрасывает
согласованное состояние базы данных в то время, когда
СТАРТ
была выпущена без блокировки каких-либо
СДЕЛКА
Приложения.При использовании этой опции следует помнить, что только
Таблицы InnoDB
выгружаются в согласованном
штат. Например, любойMyISAM
или
ПАМЯТЬ
таблиц сброшены при использовании этого
опция может все еще изменить состояние.Хотя
- дамп одной транзакции
находится в процессе, чтобы обеспечить действительный файл дампа (правильная таблица
содержимое и координаты двоичного журнала), других подключений нет
следует использовать следующие утверждения:
ИЗМЕНИТЬ ТАБЛИЦУ
,
СОЗДАТЬ ТАБЛИЦУ
,
ТАБЛИЦА ПАДЕНИЯ
,
ПЕРЕИМЕНОВАНИЕ ТАБЛИЦЫ
,
ОБРЕЗАННАЯ ТАБЛИЦА
. Последовательный
read не изолирован от этих утверждений, поэтому используйте их
на стол, который будет сброшен, может вызвать
SELECT
, который выполняется
mysqldump для получения содержимого таблицы
получить неверное содержимое или потерпеть неудачу.- опцион
на одну транзакцию и
- замки-столы
вариант есть
взаимоисключающие, посколькуLOCK
заставляет любые ожидающие транзакции быть
ТАБЛИЦЫ
совершено неявно.Чтобы выгрузить большие таблицы, объедините
- опцион
на одну транзакцию с
- быстрый вариант
.
Группы опций
Опция
--opt
включается
несколько настроек, которые работают вместе для выполнения быстрого дампа
операция. Все эти настройки включены по умолчанию, потому что
--opt
по умолчанию включен. Таким образом, вы редко, если
всегда указывайте- опт
. Вместо этого вы можете повернуть
эти настройки отключите как группу, указав
- skip-opt
, необязательно повторно включить
определенные настройки, указав соответствующие параметры позже
в командной строке.Опция
--compact
превращает
выключить несколько настроек, которые определяют, является ли необязательным
утверждения и комментарии появляются в выводе.Опять же, ты можешь
следуйте этому параметру с другими параметрами, которые повторно включают определенные
настройки или включите все настройки с помощью
- skip-compact
form.
При выборочном включении или отключении эффекта группы
вариант, порядок важен, потому что варианты обрабатываются в первую очередь
длиться. Например,
- отключение клавиш
- замки-столы
- пропустить вариант
не будет
предполагаемый эффект; это то же самое, что и
- пропустить
отдельно.
Примеры
Чтобы сделать резервную копию всей базы данных:
оболочка> mysqldump db_name > backup-file.sql
Чтобы загрузить файл дампа обратно на сервер:
оболочка> mysql db_name < backup-file.sql
Другой способ перезагрузить файл дампа:
оболочка> mysql -e "источник / путь к файлу резервной копии / резервной копии.sql " имя_бд
mysqldump также очень полезен для заполнения
базы данных путем копирования данных с одного сервера MySQL на другой:
оболочка> mysqldump --opt db_name | mysql --host = удаленный_хост -C имя_бд
Вы можете выгрузить несколько баз данных одной командой:
оболочка> mysqldump --databases db_name1 [ db_name2 . ..]> my_databases.sql
Чтобы выгрузить все базы данных, используйте
- опция для всех баз данных
:
оболочка> mysqldump --all-databases> all_databases.sql
Для таблиц InnoDB
,
mysqldump предоставляет способ сделать онлайн
резервный:
оболочка> mysqldump --all-databases --master-data --single-transaction> all_databases.sql
Эта резервная копия устанавливает глобальную блокировку чтения для всех таблиц (используя
СТОЛЫ ДЛЯ ПРОМЫВКИ С БЛОКИРОВКОЙ ЧТЕНИЯ
) в
начало свалки.Как только этот замок был
считываются координаты двоичного журнала и блокировка
выпущенный. Если выполняются длинные операторы обновления, когда
FLUSH
выписка выдается,
Сервер MySQL может зависнуть до тех пор, пока эти операторы не закончатся.
После этого дамп становится свободным от блокировки и не мешает
читает и пишет по таблицам. Если утверждения обновления,
сервер MySQL получает короткие (с точки зрения выполнения
время) начальный период блокировки не должен быть заметен, даже
со многими обновлениями.
Для восстановления на определенный момент времени (также известного как
«Повторение транзакций», когда вам нужно восстановить старую
резервное копирование и воспроизведение изменений, произошедших после этого резервного копирования),
часто бывает полезно повернуть двоичный журнал (см.
Раздел 5.4.4, «Двоичный журнал») или хотя бы знать двоичный журнал.
координаты, которым соответствует дамп:
оболочка> mysqldump --all-databases --master-data = 2> all_databases.sql
Или:
оболочка> mysqldump --all-databases --flush-logs --master-data = 2
> все_базы данных.sql
- master-data
и
- опционы на одну транзакцию
могут использоваться одновременно, что обеспечивает удобный способ
сделать онлайн-резервную копию, пригодную для использования до момента времени
восстановление, если таблицы хранятся с использованием
InnoDB
накопитель.
Для получения дополнительной информации о создании резервных копий см.
Раздел 7.2, «Методы резервного копирования базы данных» и
Раздел 7.3, «Пример стратегии резервного копирования и восстановления».
Ограничения
mysqldump не выгружает
performance_schema
или sys
схема по умолчанию. Чтобы сбросить любой из них, назовите их явно на
командная строка. Вы также можете назвать их
- базы данных
вариант. Для
performance_schema
, также используйте
- скиплок-столы
вариант.
mysqldump не выгружает
INFORMATION_SCHEMA
схема.
mysqldump не делает дамп
InnoDB
СОЗДАТЬ
заявлений.
TABLESPACE
mysqldump не выгружает кластер NDB
ndbinfo
информационная база данных.
mysqldump включает операторы для воссоздания
general_log
и
slow_query_log
таблиц для дампов
база данных mysql
.Содержимое таблицы журнала не
свалили.
Если у вас возникли проблемы с резервным копированием просмотров из-за недостаточного
привилегии, см. Раздел 25.9, «Ограничения на просмотры» для
обходной путь.
Как создать резервную копию и восстановить базы данных MySQL с помощью Mysqldump
В этом руководстве объясняется, как создавать резервные копии и восстанавливать базы данных MySQL или MariaDB из командной строки с помощью утилиты mysqldump.
Файлы резервных копий, создаваемые утилитой mysqldump, в основном представляют собой набор операторов SQL, которые можно использовать для воссоздания исходной базы данных.Команда mysqldump также может создавать файлы в форматах CSV и XML.
Вы также можете использовать утилиту mysqldump для переноса базы данных MySQL на другой сервер MySQL.
Если вы не создадите резервную копию баз данных, программная ошибка или отказ жесткого диска могут иметь катастрофические последствия. Чтобы сэкономить время и нервы, настоятельно рекомендуется принять меры предосторожности и регулярно создавать резервные копии баз данных MySQL.
Синтаксис команды Mysqldump #
Прежде чем приступить к использованию команды mysqldump, давайте начнем с обзора основного синтаксиса.
Выражения утилиты mysqldump имеют следующий вид:
mysqldump [options]> file.sql
Для использования команды mysqldump сервер MySQL должен быть доступен и запущен.
Резервное копирование одной базы данных MySQL #
Наиболее распространенный вариант использования инструмента mysqldump - резервное копирование одной базы данных.
Например, чтобы создать резервную копию базы данных с именем имя_базы_данных
с помощью пользователя root
и сохранить ее в файл с именем имя_базы_данных. sql
запустите следующую команду:
mysqldump -u root -p имя_базы_данных> имя_базы_данных.sql
Вам будет предложено ввести пароль root. После успешной аутентификации начнется процесс дампа. В зависимости от размера базы данных процесс может занять некоторое время.
Если вы вошли в систему как тот же пользователь, которого используете для выполнения экспорта, и этот пользователь не требует пароля, вы можете опустить параметры -u
и -p
:
mysqldump имя_базы_данных> имя_базы_данных.sql
Резервное копирование нескольких баз данных MySQL #
Для резервного копирования нескольких баз данных MySQL с помощью одной команды вам необходимо использовать параметр --database
, за которым следует список баз данных, которые вы хотите создать резервную копию. Каждое имя базы данных должно быть разделено пробелом.
mysqldump -u root -p --databases имя_базы_данных_a имя_базы_данных_b> databases_a_b. sql
Приведенная выше команда создаст файл дампа, содержащий обе базы данных.
Резервное копирование всех баз данных MySQL #
Используйте параметр --all-databases
для резервного копирования всех баз данных MySQL:
mysqldump -u root -p --all-databases> all_databases.sql
Как и в предыдущем примере, приведенная выше команда создаст один файл дампа, содержащий все базы данных.
Резервное копирование всех баз данных MySQL в отдельные файлы #
Утилита mysqldump
не предоставляет возможности резервного копирования всех баз данных в отдельные файлы, но мы легко достигаем этого с помощью простого цикла bash FOR
:
для БД в $ (mysql -e 'показать базы данных' -s --skip-column-names); делать
mysqldump $ DB> "$ DB.sql";
сделанный
Приведенная выше команда создаст отдельный файл дампа для каждой базы данных, используя имя базы данных в качестве имени файла.
Создание сжатой резервной копии базы данных MySQL #
Если размер базы данных очень велик, рекомендуется сжать выходные данные. Для этого просто направьте вывод в утилиту gzip
и перенаправьте его в файл, как показано ниже:
mysqldump имя_базы_данных | gzip> имя_базы_данных.sql.gz
Создание резервной копии с отметкой времени #
Если вы хотите хранить более одной резервной копии в одном месте, вы можете добавить текущую дату к имени файла резервной копии:
mysqldump имя_базы_данных> имя_базы_данных - $ (дата +% Y% m% d).sql
Приведенная выше команда создаст файл следующего формата: имя_базы_данных-20180617.sql
Восстановление дампа MySQL #
Восстановить дамп MySQL можно с помощью инструмента mysql
. Общий синтаксис команды следующий:
mysql имя_базы_данных
В большинстве случаев вам потребуется создать базу данных для импорта. Если база данных уже существует, сначала ее нужно удалить.
В следующем примере первая команда создаст базу данных с именем имя_базы_данных
, а затем импортирует дамп имя_базы_данных.sql
в него:
mysql -u root -p -e "создать базу данных имя_базы_данных";
mysql -u root -p имя_базы_данных <имя_базы_данных.sql
Восстановить единую базу данных MySQL из полного дампа MySQL #
Если вы создали резервную копию всех своих баз данных с помощью параметра -all-databases
и хотите восстановить одна база данных из файла резервной копии, который содержит несколько баз данных, используйте параметр --one-database
, как показано ниже:
mysql --one-database имя_базы_данных
Экспорт и импорт базы данных MySQL одной командой #
Вместо создания файла дампа из одной базы данных и последующего импорта резервной копии в другую базу данных MySQL вы можете использовать следующий однострочный файл:
mysqldump -u root -p имя_базы_данных | mysql -h remote_host -u root -p имя_удаленной_базы_данных
Приведенная выше команда направит вывод в клиент mysql на удаленном хосте и импортирует его в базу данных с именем имя_удаленной_данных
. Перед запуском команды убедитесь, что база данных уже существует на удаленном сервере.
Автоматизация резервного копирования с помощью Cron #
Автоматизировать процесс резервного копирования баз данных так же просто, как создать задание cron, которое будет запускать команду mysqldump в указанное время.
Чтобы настроить автоматическое резервное копирование базы данных MySQL с помощью cronjob, выполните следующие действия:
Создайте файл с именем
.my.cnf
в домашнем каталоге пользователя:sudo nano ~ /.my.cnf
Скопируйте и вставьте следующий текст в файл .my.cnf.
[клиент] пользователь = dbuser пароль = dbpasswd
Не забудьте заменить
dbuser
иdbpasswd
на пользователя базы данных и пароль пользователя.Ограничьте права доступа к файлу учетных данных, чтобы только ваш пользователь имел к нему доступ:
chmod 600 ~ / . my.cnf
Создайте каталог для хранения резервных копий:
mkdir ~ / db_backups
Откройте файл crontab пользователя:
crontab -e
Добавьте следующее задание cron, которое будет создавать резервную копию базы данных с именем
mydb
каждый день в 3 часа ночи:0 3 * * * / usr / bin / mysqldump -u dbuser mydb> / home / username / db_backups / mydb - $ (date + \% Y \% m \% d).sql
Не забудьте заменить
имя пользователя
своим фактическим именем пользователя. Мы также избегаем знаков процента (%
), потому что они имеют особое значение в crontab.
Вы также можете создать другое задание cron для удаления любых резервных копий старше 30 дней:
find / path / to / backups -type f -name "* .sql" -mtime +30 -delete
Конечно, вам необходимо настроить команду в соответствии с местоположением резервной копии и именами файлов. Чтобы узнать больше о команде find, ознакомьтесь с нашим руководством по поиску файлов в Linux с помощью командной строки.
Заключение №
В этом руководстве рассматриваются только основы, но оно должно стать хорошим началом для всех, кто хочет научиться создавать и восстанавливать базы данных MySQL из командной строки с помощью утилиты mysqldump.
Если вы хотите узнать больше о работе с MySQL из командной строки, ознакомьтесь с нашим Руководством по управлению учетными записями пользователей и базами данных MySQL.
Вы также можете проверить руководство о том, как сбросить пароль root MySQL, если вы его забыли.
Если у вас есть вопросы или отзывы, не стесняйтесь оставлять комментарии.
Дамп базы данных - это текстовый файл, содержащий набор операторов SQL, которые необходимо запустить на сервере SQL, чтобы создать базу данных со всей внутренней структурой и заполнить ее значениями. По сути, это тип резервного копирования, который создается на «логическом» уровне и может использоваться для восстановления содержимого базы данных после события потери данных. В отличие от «физического» резервного копирования двоичных файлов СУБД (которые используются исключительно сервером и не могут быть скопированы без его остановки), дамп базы данных создается через интерфейсы, предоставляемые базой данных. Как правило, дамп базы данных может использоваться для нескольких целей:
Для баз данных MySQL можно выполнить все перечисленные выше операции с помощью Handy Backup. Плагин MySQL , используемый в нашем программном обеспечении, позволяет делать снимки дампа MySQL, которые можно восстановить, не прерывая работу сервера. Подробнее о резервном копировании MySQL ... Версия 8.2.1, от 15 января 2021 года. 112 МБ Версия Small Server нашей программы позволяет создавать дампы базы данных MySQL, а также выполнять резервное копирование Oracle, IBM DB2, MS SQL и других баз данных. Скачайте полнофункциональную пробную версию - это бесплатно! По сравнению с резервным копированием двоичных файлов, дампы базы данных имеют ряд преимуществ:
В следующем видеоуроке вы можете узнать, как создавать резервные копии и восстанавливать базы данных MySQL с помощью Handy Backup.
Примечание: Инструкции в этом видео предполагают, что на вашем компьютере уже установлена программа Handy Backup. Если вы еще этого не сделали, скачайте его. Наше программное обеспечение имеет ряд расширенных плагинов, предназначенных для резервного копирования и восстановления различных баз данных.Хотя все они поддерживают горячее резервное копирование, есть только один, MySQL Backup , который может создавать файлы дампа базы данных. Мы приглашаем вас попробовать его прямо сейчас - его легко настроить и использовать! См. Также: | Свяжитесь с намиСрок действия
Глоссарий по программному обеспечению резервного копированияВ текущем глоссарии объясняются различные термины, с которыми вы можете встретиться при работе с Handy Backup или другим программным обеспечением для резервного копирования. Handy Backup - это утилита резервного копирования для серверов Windows и ПК, известная своей гибкостью и простотой использования. Глоссарий содержит 172 термина. Текущий раздел Базы данных содержит 17 терминов. Другие термины «Базы данных»
|
Используйте mysqldump для резервного копирования MySQL или MariaDB
Обновлено
, by Linode
Traducciones al Español
Estamos traduciendo nuestros guías y tutoriales al Español.Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
MySQL и
MariaDB включает
Утилита mysqldump для упрощения процесса создания резервной копии базы данных или системы баз данных. Использование mysqldump
создает логическую резервную копию . Вы можете использовать этот инструмент, только если ваш процесс базы данных доступен и работает.
Если ваша база данных недоступна по какой-либо причине, вы можете вместо этого создать
физическая резервная копия , которая является копией структуры файловой системы, содержащей ваши данные.
Инструкции в этом руководстве применимы как к MySQL, так и к MariaDB. Для упрощения будет использовано имя MySQL.
Перед началом работы
Вам потребуется работающая установка MySQL или MariaDB, а также пользователь базы данных для выполнения резервного копирования. Для получения справки по установке см.
Документация Linode MySQL.Вам потребуется root-доступ к системе или учетная запись пользователя с привилегиями
sudo
.
Резервное копирование базы данных
Общий синтаксис команды mysqldump
:
mysqldump -u [имя пользователя] -p [имя_базы_данных]> [имя_файла] - $ (date +% F) .sql
-
mysqldump
запрашивает пароль перед запуском процесса резервного копирования. - В зависимости от размера базы данных это может занять некоторое время.
- Резервная копия базы данных будет создана в каталоге, в котором выполняется команда.
-
- $ (date +% F)
добавляет метку времени к имени файла.
Примеры вариантов использования:
Создание резервной копии всей системы управления базами данных (СУБД):
mysqldump --all-databases --single-transaction --quick --lock-tables = false> полная резервная копия - $ (дата +% F) .sql -u root -p
Создайте резервную копию определенной базы данных.Замените
db1
именем базы данных, для которой требуется создать резервную копию:mysqldump -u username -p db1 --single-transaction --quick --lock-tables = false> db1-backup - $ (date + % F) .sql
Создайте резервную копию одной таблицы из любой базы данных. В приведенном ниже примере
table1
экспортируется из базы данныхdb1
:mysqldump -u username -p --single-transaction --quick --lock-tables = false db1 table1> db1-table1 - $ ( дата +% F). sql
Вот разбивка опций команды mysqldump
, использованных выше:
-
--single-transaction
: Выполните инструкцию BEGIN SQL перед сбросом данных с сервера. -
--quick
: Принудительно выводить таблицы построчно. Это обеспечивает дополнительную безопасность для систем с небольшим объемом оперативной памяти и / или большими базами данных, где хранение таблиц в памяти может стать проблематичным. -
--lock-tables = false
: Не блокировать таблицы для сеанса резервного копирования.
Автоматическое резервное копирование с помощью cron
В / etc / crontab
можно добавлять записи для регулярного планирования резервного копирования базы данных.
Создайте файл для хранения учетных данных пользователя root MySQL, который будет выполнять резервное копирование. Обратите внимание, что системный пользователь, в домашнем каталоге которого хранится этот файл, может не иметь отношения к каким-либо пользователям MySQL.
- Файл: /home/example_user/.mylogin.cnf
1 2 3
[клиент] пользователь = корень password = пароль корневого пользователя MySQL
Ограничить права доступа к файлу учетных данных:
chmod 600 / home / example_user /.mylogin.cnf
Создайте файл задания cron. Ниже приведен пример задания cron для резервного копирования всей системы управления базами данных каждый день в 01:00:
- Файл: /etc/cron.daily/mysqldump
1
0 1 * * * / usr / bin / mysqldump --defaults-extra-file = / home / example_user / .my.cnf -u root --single-transaction --quick --lock-tables = false --all-databases> full-backup - $ (date + \% F) .sql
Дополнительные сведения о cron см.
cron (8) и
cron (5) справочные страницы.
Восстановить резервную копию
Общий синтаксис команды восстановления:
mysql -u [имя пользователя] -p [имя базы данных] <[имя файла] .sql
Восстановить всю резервную копию СУБД. Вам будет предложено ввести пароль пользователя root MySQL:
Это перезапишет все текущие данные в системе баз данных MySQLmysql -u root -p
Восстановить единый дамп базы данных.Пустая или старая целевая база данных должна уже существовать для импорта данных, и пользователь MySQL, в котором вы запускаете команду, должен иметь доступ на запись в эту базу данных:
mysql -u [username] -p db1
Восстановите одну таблицу, у вас должна быть целевая база данных, готовая принимать данные:
mysql -u dbadmin -p db1
Эта страница была первоначально опубликована на
Как импортировать и экспортировать базы данных в MySQL или MariaDB
Автор выбрал Фонд бесплатных и открытых источников для получения пожертвования в рамках программы Write for DOnations.
Введение
Импорт и экспорт баз данных - обычная задача при разработке программного обеспечения. Вы можете использовать дампы данных для резервного копирования и восстановления вашей информации. Вы также можете использовать их для переноса данных на новый сервер или среду разработки.
В этом руководстве вы будете работать с дампами базы данных в MySQL или MariaDB (команды взаимозаменяемы).В частности, вы экспортируете базу данных, а затем импортируете эту базу данных из файла дампа.
Предварительные требования
Для импорта или экспорта базы данных MySQL или MariaDB вам потребуется:
Примечание: В качестве альтернативы ручной установке вы можете изучить приложение MySQL One-Click на DigitalOcean Marketplace.
Шаг 1. Экспорт базы данных MySQL или MariaDB
Консольная утилита mysqldump
экспортирует базы данных в текстовые файлы SQL.Это упрощает перенос и перемещение баз данных. Вам понадобится имя вашей базы данных и учетные данные для учетной записи, права которой разрешают как минимум полный доступ только для чтения к базе данных.
Используйте mysqldump
для экспорта базы данных:
- mysqldump -u имя пользователя -p имя_базы_данных> data-dump.sql
-
имя пользователя
- это имя пользователя, под которым вы можете войти в базу данных с -
имя_базы_данных
- имя базы данных для экспорта -
дамп данных.sql
- это файл в текущем каталоге, в котором хранится вывод.
Команда не выдаст визуального вывода, но вы можете проверить содержимое data-dump.sql
, чтобы проверить, является ли это допустимым файлом дампа SQL.
Выполните следующую команду:
Верх файла должен выглядеть примерно так, показывая дамп MySQL для базы данных с именем имя_базы_данных
.
Фрагмент дампа SQL
- Дамп MySQL 10.13 Дистриб 5.7.16, для Linux (x86_64)
-
- Хост: localhost База данных: имя_базы_данных
- ------------------------------------------------ ------
- Версия сервера 5.7.16-0ubuntu0.16.04.1
Если в процессе экспорта возникнут какие-либо ошибки, mysqldump
выведет их на экран.
Шаг 2. Импорт базы данных MySQL или MariaDB
Чтобы импортировать существующий файл дампа в MySQL или MariaDB, вам нужно будет создать новую базу данных. Эта база данных будет содержать импортированные данные.
Сначала войдите в MySQL как root или другой пользователь с достаточными привилегиями для создания новых баз данных:
Эта команда перенесет вас в командную строку оболочки MySQL. Затем создайте новую базу данных с помощью следующей команды. В этом примере новая база данных называется new_database
:
- СОЗДАТЬ БАЗУ ДАННЫХ new_database;
Вы увидите этот вывод, подтверждающий создание базы данных.
Выход
Запрос в порядке, затронута 1 строка (0,00 сек)
Затем выйдите из оболочки MySQL, нажав CTRL + D
. Из обычной командной строки вы можете импортировать файл дампа с помощью следующей команды:
- mysql -u имя пользователя -p new_database
-
имя пользователя
- это имя пользователя, под которым вы можете войти в базу данных с -
новая база данных
- это имя только что созданной базы данных -
дамп данных.sql
- это файл дампа данных для импорта, расположенный в текущем каталоге
Если команда выполняется успешно, она не выдаст никаких результатов. Если во время процесса возникнут какие-либо ошибки, mysql
вместо этого выведет их на терминал. Чтобы проверить, был ли импорт успешным, войдите в оболочку MySQL и проверьте данные. Выбор новой базы данных с USE new_database
, а затем SHOW TABLES;
или аналогичную команду, чтобы просмотреть некоторые данные.
Заключение
В этом руководстве вы создали дамп базы данных из базы данных MySQL или MariaDB. Затем вы импортировали этот дамп данных в новую базу данных. mysqldump
имеет дополнительные настройки, которые можно использовать для изменения способа создания дампов данных системой. Вы можете узнать больше на официальной странице документации mysqldump.
Чтобы узнать больше о MySQL, посетите нашу страницу ресурсов MySQL.
Чтобы узнать больше о запросах MySQL, ознакомьтесь с нашим учебным пособием «Введение в запросы в MySQL».
Полное руководство по mysqldump
# Introduction
Всем сложным приложениям для хранения информации требуется какая-то база данных. MySQL - одна из самых популярных баз данных, используемых в Интернете. Большая часть времени и стоимости бизнеса вкладывается в базу данных и ее ключ для обеспечения безопасности этих данных. SnapShooter использует MySQL для управления и резервного копирования серверов и баз данных клиентов.
В этом руководстве мы подробно рассмотрим утилиту mysqldump. Мы рассмотрим способы создания резервной копии, а также общие ошибки, с которыми пользователи сталкиваются при ее использовании.
# Что такое mysqldump?
MySQL - это одна из наиболее широко используемых систем управления реляционными базами данных с открытым исходным кодом. Он используется для хранения чего угодно, от простого имени до галереи изображений или большого количества информации в сети. mysqldump - это часть пакета реляционной базы данных MySQL, которая используется для создания дампа (резервного копирования) базы данных или набора баз данных в простой текстовый файл. Текстовый файл - это набор операторов SQL, которые используются для восстановления базы данных в исходное состояние.
Обычно mysqldump используется для экспорта базы данных в файл резервной копии (как мы делаем в SnapShooter), а также для перемещения базы данных на другой хост. Команда mysqldump также генерирует вывод в XML, CSV и других текстовых форматах с разделителями.
# Basic Как использовать MySQL Dump
Базовый синтаксис команды Mysqldump показан ниже:
mysqldump -u ИМЯ ПОЛЬЗОВАТЕЛЯ -p ПАРОЛЬ ИМЯ БД> DBBACKUP.sql
mysqldump -u ИМЯ ПОЛЬЗОВАТЕЛЯ -pPASSWORD --databases DB1 DB2 DB3.. > DBBACKUP.sql
mysqldump -u ИМЯ ПОЛЬЗОВАТЕЛЯ -pPASSWORD --all-databases> ALLDBBACKUP.sql
# Краткое описание каждой опции показано ниже:
-u
Указывает ваше имя пользователя MySQL.
-п
Указывает ваш пароль MySQL.
DBNAME
Имя базы данных, для которой требуется создать резервную копию.
DBBACKUP.sql
Имя файла резервной копии, который вы хотите создать.
-h
Указывает имя хоста сервера базы данных MySQL.
- Базы данных
Используется для определения базы данных.
-все-базы данных
Используется для резервного копирования всех баз данных.
--default-auth = плагин
Он используется для указания подключаемого модуля проверки подлинности на стороне клиента.
- сжатие
Используется для включения сжатия в протоколе сервер / клиент.
-П
Используется для указания номера порта, используемого для подключения к MySQL.
# Как сделать резервную копию одной базы данных MySQL
Самый простой и легкий способ сделать резервную копию отдельной базы данных - выполнить следующую команду:
mysqldump -u root -ppassword wpdb> wpdb_backup.sql
Эта команда создаст дамп базы данных с именем wpdb и сгенерирует единственный файл с именем wpdb_backup.sql.
# Как сделать резервную копию нескольких баз данных MySQL
С помощью mysqldump вы также можете сделать резервную копию нескольких баз данных в один файл.
Например, создайте дамп базы данных с именем wpdb1, wpdb2 и wpdb3 и сгенерируйте один файл резервной копии с именем wpdb_backup3.sql, выполните следующую команду:
mysqldump -u root -ppassword --databases wpdb1 wpdb2 wpdb3> wpdb_backup3.sql
# Как сделать резервную копию всех баз данных MySQL
Mysqldump также позволяет создавать резервные копии всех баз данных в вашей системе.
Например, сделайте резервную копию всех баз данных и создайте один файл резервной копии с именем alldb_backup.sql, выполните следующую команду:
mysqldump -u root -ppassword --all-databases> alldb_backup.sql
# Как сделать резервную копию только структуры баз данных MySQL
Если вы хотите создать резервную копию структуры базы данных, вы должны использовать параметр –no-data в команде mysqldump.
Например, он генерирует резервную копию структуры базы данных базы данных wpdb, выполните следующую команду:
mysqldump -u root -ppassword --no-data wpdb> wpdb_backup. sql
# Как сделать резервную копию одной таблицы MySQL
Если вы хотите создать резервную копию определенной таблицы, вам нужно будет указать имя таблицы после имени базы данных.
Например, сгенерируйте резервную копию таблицы wptable базы данных wpdb, выполните следующую команду:
mysqldump -u root -ppassword --no-data wpdb wptable> wpdbtable_backup.sql
# Как сделать резервную копию MySQL без структуры
Если вы хотите создать резервную копию данных без структуры базы данных, вы должны использовать параметр –no-create-info в команде mysqldump.
Например, генерирует резервную копию данных базы данных wpdb, выполните следующую команду:
mysqldump -u root -ppassword wpdb --no-create-info> wpdb_backup.sql
# Basic Как импортировать mysqldump
Самый простой и легкий способ импортировать базу данных с помощью следующей команды:
mysql -u root -ppassword wpdb sql
Примечание. Перед импортом базы данных вам потребуется создать пустую базу данных на целевой машине.
Вы также можете импортировать базу данных с помощью команды mysqlimport, если хотите восстановить базу данных, которая уже существует на целевой машине.
mysqlimport -u root -ppassword wpdb
Если вы хотите импортировать все базы данных, выполните следующую команду:
mysql -u корень -ppassword
# MySQLDump что делает флаг --quick?
mysqldump работает путем извлечения и выгрузки содержимого таблицы по строкам или извлечения всего содержимого из таблицы и буферизации его в памяти перед сбросом.Это вызовет проблему, если вы экспортируете большие таблицы.
Используйте команду mysqldump с флагом --quick для считывания больших таблиц способом, который не требует больших объемов оперативной памяти для размещения всей таблицы в памяти. Это обеспечит дополнительную безопасность для систем с небольшим объемом оперативной памяти и большими базами данных.
# Можно ли использовать предложение Where с MySQLDump?
Конечно, легко использовать предложение where с командой mysqldump. Если у вас есть база данных с большим количеством таблиц, и каждая таблица содержит миллиард записей, и если вам нужны записи за определенный год, вы можете использовать предложение where с командой mysqldump.Предложение Where позволяет вам передать строку для условия и получить нужные записи.
Например, выберите все записи из таблицы с именем mytable и базы данных с именем wpdb, где значение поля date_created больше, чем '2018-02-01', выполните следующую команду:
mysqldump -u root -ppassword wpdb --tables mytable --where = "date_created> '2018-02-01'"> wpdb_myrecord.sql
# mysqldump Общие ошибки и исправления
# mysqldump: ошибка 2013: потеряно соединение с сервером mysql во время запроса при сбросе таблицы?
По-прежнему возникают проблемы с mysqldump? Позвольте нам автоматизировать резервное копирование mysql - получите бесплатную пробную версию сегодня
Вы должны увеличить значение max_allowed_packet, net_write_timeout, net_read_timeout и innodb_buffer_pool_size до соответствующих уровней, чтобы исправить ошибку.
Чтобы установить указанное выше значение, отредактируйте файл конфигурации MySQL:
нано /etc/mysql/my.cnf
Добавьте следующие строки в разделы [mysqld] и [mysqldump]:
[mysqld]
innodb_buffer_pool_size = 100 млн
max_allowed_packet = 1024 МБ
[mysqldump]
max_allowed_packet = 1024 МБ
net_read_timeout = 3600
net_write_timeout = 3600
Сохраните и закройте файл, когда закончите. Затем перезапустите службу MySQL, чтобы изменения вступили в силу.
перезапуск службы mysql или перезапуск systemctl mysqld
# mysqldump: error 2020: получил пакет больше, чем max_allowed_packet байтов при сбросе таблицы?
Когда база данных, которую вы пытаетесь сделать резервную копию, очень большая, а для параметра max_allowed_packet установлено низкое значение.Это вызовет указанную выше ошибку.
Вы можете исправить ошибку, отредактировав файл конфигурации MySQL:
нано /etc/mysql/my. cnf
Увеличьте значение max_allowed_packet в разделе [mysqld] и [mysqldump]
[mysqld]
max_allowed_packet = желаемое значение
[mysqldump]
max_allowed_packet = желаемое значение
Сохраните и закройте файл, когда закончите. Затем перезапустите службу MySQL, чтобы изменения вступили в силу.
перезапуск службы mysql или перезапуск systemctl mysqld
# mysqldump при использовании таблиц блокировки?
По умолчанию команда mysqldump блокирует все таблицы до завершения резервного копирования. Но это плохой вариант в реальной среде, где база данных обширна и требуется время безотказной работы.
В первую очередь используется для защиты целостности данных при выгрузке таблиц MyISAM. Таблицы MyISAM требуют этой блокировки, потому что они не поддерживают транзакции.Если вы используете сочетание таблиц MyISAM и InnoDB, то выгрузите свои таблицы MyISAM отдельно от таблиц InnoDB, используя опцию --lock-tables
.
InnoDB в настоящее время является механизмом хранения таблиц по умолчанию. Таким образом, вы можете пропустить параметр блокировки таблиц, используя --skip-lock-tables
, чтобы остановить поведение, и --single-transaction
, чтобы запустить mysqldump внутри транзакции.
# Не удалось выполнить 'show create table x' Таблица не существует (1146)
Хотите выполнять резервное копирование, игнорируя таблицы - получите бесплатную пробную версию сегодня
Несколько раз таблица удалялась в процессе резервного копирования.В этом случае вы можете ограничить определенные таблицы с помощью команды mysqldump, используя параметр --ignore-table.
Вам нужно будет указать имена базы данных и таблицы, как показано ниже:
mysqldump -u root -ppassword dbname --ignore-table = tablename> db_backup.sql
Вы также можете игнорировать несколько таблиц, указав параметр для каждой таблицы, как показано ниже:
mysqldump -u root -ppassword dbname --ignore-table = table1 --ignore-table = table2> db_backup. sql
# mysqldump unknown database при выборе базы данных
Обычно эта ошибка возникает, когда вы указываете пароль в командной строке с флагом -p и между -p и паролем есть пробел.
Например, если вы хотите создать дамп базы данных с именем wpdb, используя пользователя «root» и пароль «your-password», и используйте следующую команду:
Приведенная выше команда выдаст сообщение об ошибке "" Неизвестная база данных ваш-пароль "при выборе базы данных".
На самом деле, вы должны указать пароль без пробела после ключа -p, как показано ниже:
mysqldump -u root -pyour-password wpdb> wpdb_backup.sql
# mysqldump получил ошибку 1044 при выборе базы данных
Вы получите эту ошибку, если попытаетесь сбросить базу данных с пользователем, у которого недостаточно прав для доступа к выбранной базе данных.
Чтобы исправить эту ошибку, назначьте пользователю соответствующие права доступа к базе данных.
Сначала войдите в MySQL с помощью следующей команды:
mysql -u корень -p
Введите пароль root для MySQL, затем предоставьте пользователю все права доступа к базе данных:
ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА wpdb. * TO 'your_user' @ 'localhost';
Затем сбросьте привилегии и выйдите из MySQL с помощью следующей команды:
ПРИВИЛЕГИИ ПРОМЫВКИ;
ВЫХОД;
# доступ mysqldump запрещен для пользователя при попытке подключения
У этой ошибки несколько причин.Наиболее частые причины этой ошибки перечислены ниже:
# 1. Неверная команда mysqldump
Одна из распространенных причин этой ошибки заключается в том, что вы используете неправильный формат команды mysqldump.
Например, общий синтаксис резервного копирования базы данных с помощью mysqldump показан ниже:
mysqldump -u пользователь -ppasword база данных> database. sql
Вы получите указанную выше ошибку, если сделаете резервную копию базы данных без указания имени пользователя и пароля, как показано ниже:
база данных mysqldump> база данных.sql
Вы должны получить следующую ошибку:
mysqldump: Получена ошибка: 1045: «Доступ запрещен для пользователя 'user' @ 'localhost' (с использованием пароля: NO)» при попытке подключения
# 2. Неверные учетные данные пользователя
Вы также получите указанную выше ошибку, если используете неправильное имя пользователя и пароль при подключении к базе данных. Следовательно, MySQL не может проверить подлинность учетной записи и выдает эту ошибку.
# 3. Удаленному хосту не разрешено подключаться к базе данных
Вы также увидите эту ошибку, если пытаетесь создать резервную копию базы данных на удаленном сервере.Потому что удаленный хост запрещает внешние подключения, и они позволяют подключаться только с локального хоста.
Чтобы исправить это, настройте сервер MySQL так, чтобы он разрешал соединения с удаленного хоста.
# Как сделать резервную копию большой базы данных mysqldump
Несколько полезных советов и приемов при использовании mysqldump для очень большой базы данных.
# 1. Как сжать вывод mysqldump
Рекомендуется сжать резервную копию базы данных в формате gzip, чтобы уменьшить размер базы данных.
Выполните следующую команду, чтобы выгрузить базу данных с именем wpdb и заархивировать ее одновременно:
mysqldump -u root -ppassword wpdb | gzip> wpdb_backup.sql.gz
Если вы хотите восстановить сжатую базу данных, выполните следующую команду:
gunzip
# 2. Как импортировать большую базу данных MySQL
Сначала войдите в оболочку MySQL, используя следующую команду:
mysql -u корень -p
Введите пароль root для MySQL, затем установите для длины сетевого буфера большое число байтов, как показано ниже:
установить глобальную net_buffer_length = 1000000;
Далее также установите максимально допустимый размер пакета на большое число байтов, как показано ниже:
установить глобальный max_allowed_packet = 1000000000;
Затем отключите проверку внешнего ключа, чтобы избежать задержек, ошибок и нежелательного поведения, как показано ниже:
НАБОР foreign_key_checks = 0;
УСТАНОВИТЬ UNIQUE_CHECKS = 0;
УСТАНОВИТЬ АВТОКОММИТ = 0;
Затем импортируйте файл дампа с помощью следующей команды:
источник / резервный путь / wpdb. sql
Когда вы закончите, включите проверку внешнего ключа с помощью следующей команды:
УСТАНОВИТЬ foreign_key_checks = 1;
УСТАНОВИТЬ UNIQUE_CHECKS = 1;
УСТАНОВИТЬ АВТОКОММИТ = 1;
# 3. Разделить базы данных в отдельные файлы данных
Если у вас большая база данных, вы также можете разделить их по отдельности на отдельные файлы данных.
Вы можете создать новый файл со списком всех баз данных, используя следующую команду:
mysql -u root -ppassword -A --skip-column-names -e "ВЫБРАТЬ имя_схемы ИЗ
information_schema.schemata WHERE schema_name NOT IN ('information_schema', 'mysql') ">
db_list.txt
Когда у вас есть список баз данных, вы можете запустить цикл с помощью команды mysqldump через список, как показано ниже:
для БД в `cat db_list.txt`
делать
mysqldump -u root -ppassword --hex-blob --routines --triggers $ {DB} | gzip> $ {DB} .sql.gz &
сделанный
ждать
# mysqldump без пароля
Когда вы создаете дамп базы данных с помощью mysqldump, вам нужно будет указать имя пользователя и пароль с помощью команды. Если вы не хотите каждый раз указывать имя пользователя и пароль с помощью команды mysqldump, вам просто нужно создать файл в своем домашнем каталоге с учетными данными MySQL. Это отключит запрос пароля mysqldump.
Для этого создайте в домашнем каталоге новый файл:
нано ~ / mysql.txt
Добавьте свои корневые учетные данные MySQL, как показано ниже:
[mysqldump]
пользователь = корень
пароль = пароль
Сохраните и закройте файл, когда закончите.
Теперь вы можете указать свой файл учетных данных MySQL, используя параметр --defaults-file, как показано ниже:
mysqldump --defaults-file = ~ / mysql.txt wpdb> wpdb_backup.sql
.