Для работы с дампами баз данных MySql существует клиентская программа mysqldump, изначально написанная Игорем Романенко (Igor Romanenko). Mysqldump входит в состав дистрибутивов всех клонов MySql. Полная документация — http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html, а здесь только краткая шпаргалка по использованию основных функций.
Программа mysqldump позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL сервер (не обязательно MySQL сервер).
Существует три основных способов использования mysqldump: создать набор из одной или более таблиц, набор из одного или более полных баз данных, или весь сервер MySQL, как показано здесь:
$ mysqldump [options] db_name [tbl_name . ] $ mysqldump [options] -B db_name . $ mysqldump [options] -A
Например, сделать дамп базы DATABASE:
$ mysqldump -u USER -hHOST-pPASSWORD DATABASE > /path/to/file/dump.sql
- -u или -–user=… — имя пользователя
- -h или —host=… — удаленный хост (для локального хоста можно опустить этот параметр)
- -p или —password — запросить пароль
- database — имя базы данных
- damp.sql — файл для дампа
Залить базу из файла дампа:
Как сделать дамп базы данных?
$ mysql -u USER -hHOST-pPASSWORD DATABASE < /path/to/file/dump.sql
Основные опции программы mysqldump:
—add-drop-database
Добавляет оператор DROP DATABASE перед каждым оператором CREATE DATABASE.
—add-drop-table
Добавляет оператор DROP TABLE перед каждым оператором CREATE TABLE.
—all-databases, -A
Сохраняет все таблицы из всех баз данных, которые находятся под управлением текущего сервера.
—complete-insert, -c
Используется полная форма оператора INSERT (с именами столбцов).
—create-options
Добавляет дополнительную информацию в операторы CREATE TABLE. Это может быть тип таблицы, начальное значение AUTO_INCREMENT и другие параметры.
—databases, -B
Параметр позволяет указать имена нескольких баз данных, для которых необходимо создать дамп.
—delayed
Использовать команду INSERT DELAYED при вставке строк.
—flush-logs, -F
Записать на диск данные системного журнала из буфера MySQL-сервера перед началом выполнения дампа. Очень рекомендуется использовать.
—no-create-db, -n
Подавляет создание в дампе операторов CREATE DATABASE, которые автоматически добавляются при использовании параметров —databases и —all-databases.
—no-data, -d
Подавляет создание операторов INSERT в дампе, что может быть полезно при создании дампа только структуры базы данных без самих данных.
—port, -P
Номер TCP порта, используемого для подключения к хосту. Если порт нестандартный, то использовать обязательно
—replace
Добавляет ключевое слово REPLACE в оператор INSERT.
—result-file=/path/to/file, -r /path/to/file
Параметр направляет дамп в файл file. Имеет смысл только в Windows. В Linux системах лучше перенаправить результат в файл при помощи последовательностей > и >>.
8. Создание дампа базы данных
—socket=/path/to/socket, -S /path/to/socket
Файл сокета для подсоединения к localhost. Это для любителей использовать нестандартные настройки.
—tables
Прерывает действие параметра —databases (-B). Все аргументы, следующие за этим параметром, трактуются как имена таблиц.
—verbose, -v
Расширенный режим вывода. Вывод детальной информации о работе программы.
—version, -V
Вывести информацию о версии программы.
—where=’where-condition’, -w ‘where-condition’
Выполнить дамп только для выбранных записей. Кавычки обязательны.
—help
Вывести справочную информацию и выйти из программы.
Примеры использования программы mysqldump
Создание только структуры базы без данных
mysqldump —no-data — u USER -pPASSWORD DATABASE > /path/to/file/schema.sql
Создание дампа только нескольких таблиц
mysqldump -u USER -pPASSWORD DATABASE —tables TABLE1 TABLE2 TABLE3 > /path/to/file/dump_table.sql
Создание дампа и архивирование его
mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz
Создание архивного дампа с указанием его даты
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +/path/to/outputfile.sql.%Y%m%d.%H%M%S.gz`
Похожие статьи на сайте
- Шпаргалка основных команд mysql по работе с базой данных и таблицам
- Настройка удаленного доступа MySQL и MariaDB в Linux Ubuntu
- Процесс создания базы MySQL, нового пользователя и загрузки дампа
- Как посмотреть всех пользователей и привилегии в MySQL
- Проверка, восстановление и оптимизация баз MySQL
- Установка Nginx, MariaDB и PHP-FPM на Ubuntu 16.04
- Как полностью удалить MySQL из Ubuntu
- Удаление всех таблиц из базы MySQL
- Установка сервера percona
- Установка Nginx+php5-fpm+MariaDB на Ubuntu 14.04
- Дампы баз данных MySql — mysqldump
- Перенос баз данных MySQL
- Защита phpMyAdmin
Источник: www.oslogic.ru
Как создать дамп базы данных
ISPmanager даёт возможность работать с сервером баз данных через графический интерфейс — создавать, удалять базы, настраивать пользователей и привилегии. Сюда же входит возможность скачивания и разворачивания дампов — через саму панель ISPmanager или устанавливаемый в наборе с ней phpMyAdmin.
ISPmanager
Чтобы скачать дамп базы сайта из ISPmanager, откройте раздел Базы данных.
В списке баз выберите ту, дамп которой вам нужен, и в выпадающем меню Дамп нажмите Экспорт. Здесь же доступна загрузка своего дампа или восстановление из локальной копии (Импорт).
phpMyAdmin
Также выполнить экспорт базы можно через панель phpMyAdmin — она устанавливается в сборке ISPmanager. Откройте раздел Базы данных, выберите нужную базу в списке и нажмите Web-интерфейс БД.
Вы будете автоматически
Обновлено: 12.02.2023 Опубликовано: 15.07.2016
В статье рассмотрим общие принципы выполнения резервного копирования СУБД MySQL или MariaDB. Также рассмотрим некоторые примеры часто используемых ключей и параметров резервирования.
Синтаксис и базовая команда
Создание дампа выполняется из командной строки Linux или Microsoft с помощью утилиты mysqldump. Она идет в составе с пакетом mysql/mariadb (mysql-client) и может быть запущена как локально на сервере СУБД, так и с удаленного компьютера. Общий синтаксис:
mysqldump [опции] >
Пример базовой команды для резервирования базы:
mysqldump -v -h127.0.0.1 -uroot -p base > /tmp/dump.sql
* в данном примере мы создадим резервную копию базы base и поместим его в папку /tmp, назвав сам файл dump.sql. Подключение к базе на сервере 127.0.0.1 происходит от пользователя root. Это самый простой пример создания дампа MySQL. Базовые параметры команды mysqldump:
-h | Адрес сервера, к которому нужно подключиться. |
-u | Учетная запись, от которой выполняется резервное копирование. Необходимо, чтобы у пользователя были соответствующие права. |
-p | Пароль учетной записи. Его можно ввести в команде, например -p12345 (для скрипта) или оставить -p (безопаснее). |
* полный перечень параметров смотрите в официальном руководстве.
Примеры создания дампа MySQL
Перейдем сразу к рассмотрению примеров.
1. С последующим архивированием
export DBNAME=base
mysqldump -uroot -p $ | gzip > /tmp/$.sql.gz
* в данном примере мы сначала создали переменную DBNAME, в которую внесли значение с именем базы, которую необходимо забэкапить. После выполняем команду mysqldump, результат выполнения которой по конвееру отдаем архиватору gzip. В результате мы получит дамп по пути /tmp/.sql.gz Или с подробным выводом информации на экран (дольше по времени):
mysqldump -v -uroot -p $ | gzip > /tmp/$.sql.gz
2. Для одновременно нескольких баз
Просто перечисляем имена баз через пробел и добавляем параметр -B
mysqldump -v -uroot -p -B base1 base2 base3 > /tmp/dump_multiply_bases.sql
3. Для всех баз одной командой
Для этого ставим —all-databases, вместо имен баз
mysqldump -v -uroot -p —all-databases > /tmp/dump_all_bases.sql
4. Резервирование только структуры базы
Для уточнения, это создание копии только самих таблиц без данных. Делается добавлением параметра —no-data
mysqldump -v -uroot -p —no-data base1 > /tmp/dump_base1_nodata.sql
5. Создание копии определенной таблицы
Для этого после базы через пробел перечисляем названия таблиц
mysqldump -v -uroot -p base1 table1 table2 > /tmp/dump_base1_tables.sql
6. Резервирование прав доступа на СУБД
Позволяет выгрузить все учетные записи с паролями. Удобно для переноса СУБД на новый сервер без потери доступа к нему.
mysqldump -v -uroot -p mysql user > /tmp/mysql_user.sql
* после восстановления этого дампа, необходимо в sql shell выполнить команду flush privileges;
7. Проигнорировать определенную таблицу
Выполняется при помощи ключа ignore-table:
mysqldump -v -uroot -p base —ignore-table=base.logs > /tmp/base.sql
Учетная запись
В наших примерах мы создаем дамп от пользователя root. Также можно задействовать любую учетную запись, у которой есть права на базу, дамп которой мы хотим сделать. Если же нам нужна отдельная запись с минимальными правами, достаточными для резервного копирования, создаем ее SQL-командой:
* в данном примере мы создадим пользователя backup с паролем backup123. Теперь дадим разрешение созданной учетной записи выполнять подключение и создание резервной копии:
Также мы можем создать локальный конфигурационный файл для пользователя системы, из под которого будет запускаться утилита mysqldump. В нем мы можем указать некоторые опции, чтобы не вводить их каждый раз. Создаем файл:
[mysqldump]
host = 127.0.0.1
user=backup
password=»backup123″
Теперь можно вводить:
mysqldump base > /tmp/dump.sql
Скрипт для резервного копирования
Для повседневных операций по резервному копированию MySQL рекомендуется написать скрипт и запускать его через cron. Подробнее процесс описан в статье Пример скрипта для создания резервной копии MySQL (для Linux).
Резервное копирование в phpMyAdmin
В качестве графического инструмента для работы с MySQL/MariaDB используется phpMyAdmin. Разберем, как с его помощью сделать экспорт данных. В верхней части меню кликаем по Экспорт: В разделе «Способ экспорта» ставим переключатель в положение Обычный:
* обычный режим откроет дополнительные опции для резервного экспорта данных. Выбираем компрессию, например, zip:
И в нижней части окна нажимаем OK.
Начнется загрузка файла с резервной копией на компьютер.
Возможные проблемы
Incorrect key file for table
Ошибка появляется во время выполнения резервного копирования. Более полный текст:
mysqldump: Error 1034: Incorrect key file for table ‘
- Логическая ошибка таблицы.
- Нехватка места на разделе с каталогом для временных данных.
Решение: в зависимости от причины, решений будет несколько.
1. Проще всего сначала проверить место на диске. В конфигурационном файле СУБД (как правило, /etc/my.cnf) можно найти опцию tmpdir — она указывает на каталог, который используется под создание временных таблиц. Если опции нет, то используется путь /tmp.
Необходимо, чтобы для данного раздела было достаточно места. Проверить можно командой:
2. Если наша таблица повреждена, то пробуем ее востановить. Данный процесс зависит от типа таблицы, с которой возникла проблема.
а) Если тип MyISAM.
В командной оболочке SQL вводим:
> REPAIR TABLE USE_FRM;
После повторяем попытку создать резервную копию.
б) Если таблица типа INNODB.
Открываем конфигурационный файл СУБД:
В радел [mysqld] добавим опцию:
[mysqld]
.
innodb_force_recovery = 1
Перезапускаем сервер баз данных, например:
systemctl restart mysql
Пробуем сделать резервную копию. Если получим такую же ошибку, меняем значение innodb_force_recovery с 1 на 2:
[mysqld]
.
innodb_force_recovery = 2
И так по кругу, до значения 6, пока не получим положительный результат.
Параметр innodb_force_recovery может оказаться опасным, так как при его использовании возможны потери данных. Чем ниже значение, тем меньше рисков. Если пришлось поднять значение выше 2, то необходимо внимательно проверить наличие важной информации в базе.
Для восстановления базы читайте инструкцию Как восстановить базу MySQL
Источник: www.dmosk.ru