Создание sql-дампа базы данных. Восстановление базы из дампа. Базы данных dump
Утилита mysqldump и шпаргалка по параметрам / Мастерская интернет-разработчика
7 июня 2009 г. InnoDB MyISAM MySQL Бэкап
Утилита mysqldump позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.
Так же mysqldump имеет возможность развертывания баз данных из созданного sql-файла.
Создание дампа
Разберем пример простейшее использования, задампим базу данных "database" при помощи перенаправления потока в файл "database.sql":
mysqldump -uroot -h82.82.82.82 -p database > database.sqlгде:
- -u или -–user=... - имя пользователя
- -h или --host=... - удаленный хост (для локального хоста можно опустить этот параметр)
- -p или --password - запросить пароль
- database - имя базы данных
- database.sql - файл для дампа
Для того чтобы сделать дамп несколько баз данных, необходимо использовать параметр --databases (или сокращенно -B), пример:
mysqldump -uroot -h82.82.82.82 -p -B database1 database2 database3 > databases.sqlА для того чтобы сделать дамп всех баз данных, необходимо использовать параметр --all-databases (или сокращенно -A), пример:
mysqldump -uroot -h82.82.82.82 -p -A > all-databases.sqlРазвертывание дампа
Перенаправляем поток в обратную сторону и развертываем базу данных:
mysql -uroot -h82.82.82.82 -p database < database.sqlИли через mysql-console:
mysql> use database; mysql> source database.sqlНу, а если у нас gz-архив к примеру, то:
zcat database.sql.gz | mysql -uroot -h82.82.82.82 -p databaseПример использование некоторых параметров
Например, нам нужны данные с "продакшен версии базы" для "версии разработчика", то есть нам нужна "песочница". Выбираем не более 100 записей:
mysqldump -uroot -h82.82.82.82 -p --where="true limit 100" database > database.sqlИли нам нужна только структура, без данных:
mysqldump -uroot -h82.82.82.82 -p --no-data database > database.sqlДелаем дамп только триггеров, процедур и событий:
mysqldump --no-create-info --no-data --triggers --routines --events -uroot -p database | gzip > ~/database.sql.gzШпаргалка по параметрам
Приведу некоторые параметры, которые могут понадобится при работе с утилитой mysqldump.
--add-drop-databaseДобавляет оператор DROP DATABASE перед каждым оператором CREATE DATABASE.--add-drop-tableДобавляет оператор DROP TABLE перед каждым оператором CREATE TABLE.--add-locksДобавляет оператор LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы (для ускорения доступа к MySQL).--all-databases, -AСохраняет все таблицы из всех баз данных, которые находятся под управлением текущего сервера.--allow-keywordsРазрешить создавать имена столбцов, которые совпадают с ключевыми словами. Отсутствие конфликтов обеспечивается прибавлением имени таблицы в качестве префикса к имени каждого столбца.--comments, -iДанный параметр позволяет добавить в дамп дополнительную информацию, такую, как версия mysqldump, версия MySQL, имя хоста, на котором расположен сервер MySQL.--compactДанный параметр требует от mysqldump создать дамп, используя как можно более компактный формат. Параметр является противоположным --comments.--compatible=nameПараметр генерирует вывод, который совместим с другими СУБД или более старыми версиями MySQL. Вместо ключевого слова name можно использовать: "ansi", "mysql323", "mysql40", "postgresql", "oracle", "mssql", "db2", "maxdb", "no_key_options", "no_table_options", "no_field_options". Можно использовать несколько значений, разделив их запятыми.--complete-insert, -cИспользуется полная форма оператора INSERT (с именами столбцов).--create-optionsДобавляет дополнительную информацию в операторы CREATE TABLE. Это может быть тип таблицы, начальное значение AUTO_INCREMENT и другие параметры.--databases, -BПараметр позволяет указать имена нескольких баз данных, для которых необходимо создать дамп.--delayedИспользовать команду INSERT DELAYED при вставке строк.--delete-master-logsНа главном сервере репликации автоматически удаляются бинарные логи (logbin) после того, как дамп был успешно создан при помощи mysqldump. Этот параметр автоматически включает параметр "--master-data".--disable-keys, -KДля каждой таблицы, окружает оператор INSERT выражениями /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; и /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; в выводе результата дампа. Это ускорит загрузку данных на сервер для таблиц типа MyISAM, так как индексы создаются после внесения всех данных.--extended-insert, -eИспользовать команду INSERT с новым многострочным синтаксисом (повышает компактность и быстродействие операторов ввода).--flush-logs, -FЗаписать на диск данные системного журнала из буфера MySQL-сервера перед началом выполнения дампа.--force, -fПродолжать даже если в процессе создания дампа произошла ошибка.--hex-blobПараметр позволяет представить бинарные данные в полях типа BINARY, VARBINARY, BLOB и BIT в шестнадцатеричном формате. Так последовательность "abc" будет заменена на 0x616263.--ignore-table=db_name.tbl_nameПозволяет игнорировать таблицу tbl_name базы данных db_name при создании дампа. Если из дампа необходимо исключить несколько таблиц, необходимо использовать несколько параметров "--ignore-table", указывая по одной таблице в каждом из параметров.--insert-ignoreДобавляет ключевое слово IGNORE в оператор INSERT.--lock-all-tables, -xУказание этого параметра приводит к блокировке всех таблиц во всех базах данных на время создания полного дампа всех баз данных.--lock-tables, -lУказание этого параметра приводит к блокировке таблиц базы данных, для которой создается дамп.--no-autocommitВключает все операторы INSERT, относящиеся к одной таблице, в одну транзакцию, что приводит к увеличению скорости загрузки данных.--no-create-db, -nПодавляет создание в дампе операторов CREATE DATABASE, которые автоматически добавляются при использовании параметров --databases и --all-databases.--no-data, -dПодавляет создание операторов INSERT в дампе, что может быть полезно при создании дампа структуры базы данных без самих данных.--optПараметр предназначен для оптимизации скорости резервирования данных и является сокращением, включающим следующие опции: --quick --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --set-charset. Начиная с MySQL 4.1, параметр --opt используется по умолчанию, т.е. все вышеперечисленные параметры включаются по умолчанию, даже если они не указываются. Для того чтобы исключить такое поведение, необходимо воспользоваться параметров --skip-opt--order-by-primaryУказание параметра приводит к тому. что каждая таблица сортируется по первичному ключу или первому уникальному индексу.--port, -PНомер TCP порта, используемого для подключения к хосту.--protocol={TCP|SOCKET|PIPE|MEMORY}Параметр позволяет задать протокол подключения к серверу.--quick, -qПозволяет начать формирование дампа, не дожидаясь полной загрузки данных с сервера и экономя тем самым память.--quote-names, -QПомещает имена баз данных, таблиц и столбцов в обратные апострофы `. Начиная с MySQL 4.1, данный параметр включен по умолчанию.--replaceДобавляет ключевое слово REPLACE в оператор INSERT. Данный параметр впервые появился в MySQL 5.1.3.--result-file=/path/to/file, -r /path/to/fileПараметр направляет дамп в файл file. Этот параметр особенно удобен в Windows, без использования командной строки. когда можно перенаправить результат в файл при помощи последовательностей > и >>.--routines, -RДанный параметр создает дамп хранимых процедур и функций. Доступен с MySQL 5.1.2.--single-transactionПараметр создает дамп в виде одной транзакции.--skip-commentsДанный параметр позволяет подавить вывод в дамп дополнительной информации.--socket=/path/to/socket, -S /path/to/socketФайл сокета для подсоединения к localhost.--tab=/path/, -T /path/При использовании этого параметра в каталоге path для каждой таблицы создаются два отдельных файла: tbl_name.sql, содержащий оператор CREATE TABLE, и tbl_name.txt, который содержит данные таблиц, разделенные символом табуляции. Формат данных может быть переопределен явно с помощью параметров --fields-xxx и --lines-xxx.--tablesПерекрывает действия параметра --databases (-B). Все аргументы, следующие за этим параметром, трактуются как имена таблиц.--triggersСоздается дамп триггеров. Этот параметр включен по умолчанию. для его отключения следует использовать параметр --skip-triggers.--events, -EСоздается дамп событий. Смотрите MySQL Event Scheduler или встроенный диспетчер событий в MySQL.--tz-utcпри использовании данного параметра в дамп будет добавлен оператор вида SET TIME_ZONE='+00:00', который позволит обмениваться дампа в различных временных зонах.--verbose, -vРасширенный режим вывода. Вывод более детальной информации о работе программы.--version, -VВывести информацию о версии программы.--where='where-condition', -w 'where-condition'Выполнить дамп только выбранных записей. Обратите внимание, что кавычки обязательны.--xml, -XПредставляет дамп базы данных в виде XML.--first-slave, -xБлокирует все таблицы во всех базах данных.--debug=..., -#Отслеживать прохождение программы (для отладки).--helpВывести справочную информацию и выйти из программы.
Еще пару слов о бекапе в MySQL
mysqlhotcopy для MyISAM
Для быстрого резервирования БД с типом таблиц ISAM и MyISAM можно использовать "mysqlhotcopy", которая скопирует файлы *.frm, *.MYD и *.MYI:
# mysqlhotcopy db_name /path/to/dirДля InnoDB не подойдет данный способ, потому что при этом типе не обязательно все файлы будут храниться в директории базы данных.
xtrabackup для InnoDB
Для InnoDB есть xtrabackup, рекомендую посмотреть!UPD: XtraBackup - резервное копирование для innoDB
Бин-лог и репликации
Для репликации "mysqldump" не предназначена, для этого есть бин-лог (--log-bin):
# mysqlbinlog binlog.[0-9]* | mysqlДля полной репликации необходимо вести бин-лог с самого начала работы БД, то есть еще до создания структур и данных.
Резервирование данныс в MySQL 6.x
С версии MySQL 6.x доступен online-backup, вот слайд объясняющий нововведения:
Дамп и восстановление базы данных MySQL
Дамп и восстановление базы данных MySQL довольно просто и удобно делать удаленно через SSH или прямо через консоль сервера. Удаленно, это можно делать используя программы Putty/Kitty. Также указанные ниже примеры Вы можете выполнять и на Windows запустив командную строку ‘cmd‘. Ниже приведены примеры о том, как создавать дампы базы данных MySQL и затем восстанавливать их при необходимости, например для Вашего сайта, интернет-магазина или какого либо другого проекта.
Создание дампа базы данных MySQL
Для того, чтоб выполнять данные команды, подключитесь удаленно к Вашему серверу через SSH используя одну из перечисленных выше программ. После подключения и авторизации к серверу/хостингу, Вы можете вводить приведенные ниже команды.
# Бекап одной базы данных в файл dump_file.sql mysqldump -uroot -p your_base > dump_file.sql # На windows дамп лучше всего создавать немного другой командой, которая предотвращает # случайное затирание строк дампа из за конвертации символов перевода строки '\r\n' в '\n' mysqldump -uroot -p your_base -r dump_file_utf8.sql # Если Вам нужен бекап только отдельных таблиц, а не всей базы данных # (указываем наименования таблиц через пробел после названия базы данных) mysqldump -uroot -p your_base TABLE1 TABLE2 TABLE3 > dump_file.sql # Если нужно создать бекап только структуры базы данных без самих данных mysqldump -uroot -p --no-data your_base > dump_file.sql # Бекап всех баз данных в файл текущая_дата.gz mysqldump -uroot -p --all_databases | gzip -c > 'date "+%Y-%m-%d"'.gz # Бекап, где для каждой записи создается отдельный INSERT # и с явным указанием кодировки базы данных UTF-8 mysqldump -uroot -p --default-character-set=utf8 your_base --extended-insert=FALSE | gzip -c > 'date "+%Y-%m-%d"'.gz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Бекап одной базы данных в файл dump_file.sql mysqldump -uroot -p your_base > dump_file.sql
# На windows дамп лучше всего создавать немного другой командой, которая предотвращает # случайное затирание строк дампа из за конвертации символов перевода строки '\r\n' в '\n' mysqldump -uroot -p your_base -r dump_file_utf8.sql
# Если Вам нужен бекап только отдельных таблиц, а не всей базы данных # (указываем наименования таблиц через пробел после названия базы данных) mysqldump -uroot -p your_base TABLE1 TABLE2 TABLE3 > dump_file.sql
# Если нужно создать бекап только структуры базы данных без самих данных mysqldump -uroot -p --no-data your_base > dump_file.sql
# Бекап всех баз данных в файл текущая_дата.gz mysqldump -uroot -p --all_databases | gzip -c > 'date "+%Y-%m-%d"'.gz
# Бекап, где для каждой записи создается отдельный INSERT # и с явным указанием кодировки базы данных UTF-8 mysqldump -uroot -p --default-character-set=utf8 your_base --extended-insert=FALSE | gzip -c > 'date "+%Y-%m-%d"'.gz |
В приведенном выше примере, для создания бекапа используется утилита mysqldump, которая входит в состав mysql. Далее указываются параметры для создания бекапа базы данных, которые разберем подробнее:
- -u – параметр указывает логин, который будет использоваться для подключения к базе данных. В примере мы используем логин root, который нужно указать в этом параметре без пробела! В результате у нас это выглядит как -uroot
- -p – параметр указывает что нужно ввести пароль для указанного логина. Мы его оставили пустым, в результате чего пароль нужно будет ввести после нажатия “Enter” при выполнении команды. Тем не менее, можно указать пароль сразу же здесь, как и в параметре логина, без пробела после -p, однако этот способ не является безопасным, так как консоль сохраняет Ваши команды в лог файл и если Вы его регулярно не очищаете, то он может быть просмотрен злоумышленником.
- your_base – вместо этой строки в примере, вам необходимо указать реальное имя Вашей базы данных, для которой Вы создаете бекап.
- > – оператор который показывает направление действия, т.е. как бы указывает, что вы собираетесь сделать запись из базы в файл.
- dump_file.sql – это название Вашего файла .slq в которую нужно сохранить Вашу базу данных. Он указывается через пробел после оператора ‘>’. Вы можете задать любое другое имя. Например, чтобы в имени система автоматически вставила текущее время, достаточно указать строку вида:
после этой строки в примере указывается расширение файла ‘.gz‘. В результате будет создан файл вида ‘2014-11-15.gz‘.
Внимание! Если Вы указываете только имя файла, то он будет сохранен в той же директории, относительно которой Вы выполняете данную команду. Т.е. если Вы видите в строке приглашения ввода команд что-то вроде [root@dvs home]#, где root@dvs это логин и имя сервера, то файл будет создан в директории /home. Чтобы изменить сохранение файла по другому пути, укажите вместо имени полный путь для сохранения файла, например: /var/www/backup/dump_file.sql.
- Во втором примере, вместо оператора ‘>‘ используется оператор ‘|‘, который указывает на необходимость выполнения дополнительной команды gzip c параметром ‘-c‘ которая позволяет сразу же запаковать дамп в архив, а только затем сохранить его в файл вида ‘2014-11-15.gz‘, о чем сообщает оператор ‘>‘.
- Параметр –no-data позволяет создать дамп только структуры базы данных без самих данных. В некоторых случаях довольно полезно, когда данные не нужны.
- Параметры –default-character-set=utf8 и –extended-insert=FALSE. Первый позволяет Вам явно указать кодировку, которая используется этой базой данных, тем самым избежать сохранение базы в неверной кодировке Вместо utf8 можно указать любую другую кодировку, например cp1251. Второй параметр позволяет указать, что при экспорте для каждой записи необходимо создать отдельную команду INSERT. В некоторых случаях это может потребоваться при частичном восстановлении данных из дампа.
Восстановление базы данных из файла дампа MySQL
Теперь рассмотрим с Вами обратный процесс восстановления базы данных из файла дампа. Данное действие выполняется при помощи программы mysql. Рассмотрим сразу же пример.
# Восстанавливаем базу данных your_base из файла дампа dump_file mysql -uroot -p your_base < dump_file.sql
# Восстанавливаем базу данных your_base из файла дампа dump_file mysql -uroot -p your_base < dump_file.sql |
Здесь также используются параметры ‘-u‘ и ‘-p‘, которые указывают на логин и пароль для подключения к базе данных аналогично утилите mysqldump, рассмотренной в предыдущем примере. После этого идет название базы данных, а также файла, из которого необходимо восстановить данные. Между ними ставится оператор ‘<‘ который указывает направление, что мы хотим импортировать данные в базу из файла.
aione.ru
Дамп MySQL базы данных • Сам себе администратор
Несколько полезных приемов, которые позволят вам значительно ускорить работу с резервным копированием и восстановлением баз данных. Конечно дамп MySQL можно делать и с помощью стороннего ПО, того же phpMyAdmin, но встроенными утилитами самого сервера БД это удобнее и быстрее.
Делаем резервную копию (он же дамп, он же бекап)
Все данные одной базы
mysqldump -u USER -pPASSWORD DATABASE > dumpname.sql
mysqldump -u USER -pPASSWORD DATABASE > dumpname.sql |
USER — логин пользователя, PASSWORD — пароль. Обратите внимание, что между -p и PASSWORD нет пробела.
Все данные нескольких определенных баз
Добавляем параметр --databases или -B
mysqldump -u USER -pPASSWORD --databases DATABASE1 DATABASE2 DATABASE3 ... > dumpname.sql
mysqldump -u USER -pPASSWORD --databases DATABASE1 DATABASE2 DATABASE3 ... > dumpname.sql |
USER — логин пользователя, PASSWORD — пароль. Обратите внимание, что между -p и PASSWORD нет пробела.
Данные всех баз
Указываем ключ --all-databases или -A.
mysqldump -u USER -pPASSWORD --all-databases > dumpname.sql
mysqldump -u USER -pPASSWORD --all-databases > dumpname.sql |
USER — логин пользователя, PASSWORD — пароль. Обратите внимание, что между -p и PASSWORD нет пробела.
Дамп только структуры базы данных MySQL
За это это отвечает параметр --no-data или -d.
mysqldump --no-data -u USER -pPASSWORD DATABASE > dumpstruct.sql
mysqldump --no-data -u USER -pPASSWORD DATABASE > dumpstruct.sql |
Дамп определенных таблиц
mysqldump -u USER -pPASSWORD DATABASE TABLENAME1 TABLENAME2 .. > dumpstruct.sql
mysqldump -u USER -pPASSWORD DATABASE TABLENAME1 TABLENAME2 .. > dumpstruct.sql |
Сразу архивируем дамп MySQL
mysqldump -u USER -pPASSWORD DATABASE | gzip > dumpname.sql.gz
mysqldump -u USER -pPASSWORD DATABASE | gzip > dumpname.sql.gz |
Добавляем дату и время к дампу
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +dumpname.%Y%m%d_%H%M%S.sql.gz`
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +dumpname.%Y%m%d_%H%M%S.sql.gz` |
Восстанавливаем дамп MySQL
Заливаем все данные
mysql -u USER -pPASSWORD < dumpname.sql
mysql -u USER -pPASSWORD < dumpname.sql |
Заливаем данные в конкретную базу
mysql -u USER -pPASSWORD DATABASE < dumpname.sql
mysql -u USER -pPASSWORD DATABASE < dumpname.sql |
Заливаем данные из заархивированного дампа
gunzip < dumpfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
gunzip < dumpfile.sql.gz | mysql -u USER -pPASSWORD DATABASE |
Распространенные ошибки, возникающие при создании дампа MySQL
Error 2013: Lost connection to MySQL server during query ...
Error 2013: Lost connection to MySQL server during query ... |
Ошибка связана с тем, что не хватает времени для выполнения операции. Для исправления в конфигурационном файле /etc/my.cnf в секции [mysqldump] увеличьте значение параметров wait_timeout=600 и interactive_timeout=600. Значение времени подберите под ваши условия.
Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table ...
Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table ... |
Ошибка связана с тем, что объем вносимых данных превышает разрешенный. Решается 2-я способами:
- добавить параметр --max_allowed_packet=128M к нашим командам
- Добавить параметр max_allowed_packet=128M в секцию [mysqldump] конфигурационного файла /etc/my.cnf
Соответственно, размер данных указываем тот, который нам необходим.
Error 2006: MySQL server has gone away
Error 2006: MySQL server has gone away |
Данная ошибка может быть связана, как с недостаточным значение параметра wait_timeout, так и с маленьким размером max_allowed_packet. Решения собственно уже приведены.
host-consult.ru
Как сделать дамп базы данных 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Вот и вся магия
www.electronick.org.ua
Создание sql-дампа базы данных. Восстановление базы из дампа
Создавать дамп и восстанавливать базу данных MySQL можно удаленно через SSH или через консоль сервера. Для удаленной работы можно использовать программы Putty/Kitty. Непосредственное выполнение указанных действий производится с помощью командной строки ‘cmd‘.
Создание дампа базы данных MySQL
Для выполнения данных команд необходимо подключиться удаленно к серверу через SSH с помощью одной из перечисленных программ. После авторизации нужно ввести следующие команды. Для создания дампа (бекапа) одной базы данных в файл dump_file.sql:
На Windows бекап лучше создать следующей командой, предотвращающей случайное затирание строк дампа:
Если нужно создать дамп не всей базы, а лишь отдельных таблиц, необходимо указать названия таблиц через пробел после названия базы:
При создании дампа лишь структуры базы данных без данных:
Для создания дампа всех баз данных в файл текущая_дата.gz:
Для создания дампа используют утилиту mysqldump, входящую в состав MySql.
Рассмотрим подробнее параметры для создания дампа базы данных:
- -u – указание логина для подключения к базе данных. В примере используется логин root, который необходимо указывать в этом параметре без пробела, т.е. запись должна выглядеть -uroot
- -p – указание необходимости ввода пароля для указанного логина. Если оставить его пустым, то пароль необходимо будет ввести после нажатия клавиши Enter при выполнении команды. Иначе можно ввести пароль здесь же, но, как и в параметре логина, без пробела после параметра –p. Стоит заметить, что такой вариант является небезопасным, т.к. консоль сохраняет введенные команды в лог файл и его регулярно не очищать, то его может просмотреть злоумышленник
- your_base – реальное имя базы данных, для которой создается дамп
- > – оператор, показывающий направление действия, т.е. указывающий, что будет выполняться запись из базы в файл
- dump_file.sql – название файла .slq, в который необходимо сохранить базу данных. Его указывают через пробел после оператора направления действия (>). Можно дать любое имя. Для автоматической вставки системой в имя текущего времени, достаточно записать строку:
после которой указывают расширение файла .gz. В результате создастся файл, например, 2016-08-26.gz.
При указании только имени, файл будет сохранен в ту же директорию, относительно которой выполняется данная команда.
Например, в строке приглашения ввода команд отображается [root@htr domen]#. Здесь root@htr – логин и имя сервера. Тогда файл создастся в директории /domen. Чтобы сохранить файл в другую директорию, нужно указать полный путь сохранения файла, например, /DB1/backup/dump_file.sql.
- Оператор ‘|‘, который используется вместо оператора ‘>‘, указывает на необходимость выполнения команды gzip c параметром ‘-c‘ для упаковки дампа в архив и дальнейшего сохранения его в файл вида 2016-08-26.gz, что показывает оператор ‘>‘.
- –no-data – создание дампа лишь структуры базы данных без данных
- –default-character-set=utf8 – параметр позволяет явно указать кодировку, используемую этой базой данных во избежание сохранения базы в неверной кодировке. Вместо utf8 можно указать необходимую кодировку
- –extended-insert=FALSE – параметр указывает, что при экспорте для каждой записи нужно создать отдельную команду INSERT. Иногда это нужно для частичного восстановления данных из дампа.
Восстановление базы данных из файла дампа
Восстановление базы данных из дампа выполняется с помощью программы mysql.
Для восстановления базы данных your_base из файла dump_file:
Восстановление базы отличается от создания дампа лишь оператором.
spravochnick.ru
Делаем дамп базы MySQL
MySQL является довольно распространённой СУБД(Системой Управления Базами Данных) используемой на большинстве хостингов. Иногда возникает потребность сделать резервную копию базы данных (дамп базы данных mysql), или просто перенести базу с одного сервера (хостинга) на другой. Сделать это можно несколькими способами. Первый, и самый лёгкий способ сделать дамп базы Mysql - использовать web-приложение phpMyAdmin для управления БД через web-интерфейс. Для этого необходимо чтобы на хостинге была установлена phpMyAdmin.
Открываем браузер, переходим на страницу phpMyAdmin для вашей БД (предоставляется хостингом), если потребуется, вводим свой логин и пароль. Должна появиться такая страница:
Перейдите на вкладку Экспорт. В открывшемся окне выберите необходимые параметры (в общем случае ничего менять не нужно). Если поставить галочку в "Добавить DROP DATABASE" то когда вы будете ставить свой дамп обратно на сервер, то если база данных с таким именем (как у экспортируемой) уже есть, то она сначала удалится, а потом создастся экспортируемая БД. Галочка "Добавить DROP TABLE" означает то же самое, только для таблиц внутри этой БД. Рекомендуется поставить сжатие файла (Упаковать) с помощью какого-либо архиватора, это существенно уменьшить объём скачиваемого дампа. Если все параметры вас устраивают, то нажмите кнопку ОК.
Вскоре появится окно с предложением скачать дамп базы данных mysql себе на компьютер.
Для экспорта базы данных mysql на новый хостинг с помощью phpMyAdmin перейдите на вкладку импорт. Выберите полученный ранее файл дампа. Нажмите ОК.
Если всё пройдёт успешно, вверху страници появится зелёная надпись о том что экспорт базы данных mysql прошел успешно, в противном случае внизу красным появится сообщение об ошибке. Чаще всего это сообщения типа: такая база данных уже существует или нет прав для создания(удаления) базы данных такой-то.
Второй способ заключается в импорте базы данных mysql из командной строки.
Для этого:
В коммандной строке Linux вводим:
mysqldump my_database --user=username --password=my_password > my_dump.sqlВ текущей директории появится файл нашего дампа базы данных: my_dump.sql. Вот и всё, дамп базы данных mysql готов!
Чтобы восстановить базу данных mysql из дампа, необходимо выполнить следующую команду:
mysql -u username -p database < my_dump.sqlПоявится приглашение ввести пароль. Если никаких сообщений не выводилось, значит импорт базы данных Mysql прошел успешно!
Автор Bordac, http://bloggik.net
bloggik.net
Django - делаем дамп базы данных и восстанавливаем из него с dumpdata и loaddata
Сколько лет пишу на django, и только недавно внезапно обнаружил, что у неё оказывается есть встроенные стредства для дампа и последующего восстановления схемы базы данных. Это бывает довольно полезно, когда надо по быстрому кому-то передать дамп с тестовыми данными чтобы воспроизвести проблему, или просто передать фикстуры.
Экспорт (дамп) с dumpdata
dumpdata - это встроенная команда django, с помощью которой можно сделать бэкап (экспорт) текущих моделей базы данных или всей базы данных.
Синтаксис крайне простой. Следующая команда сделает дамп всей базы данных (всех приложений):
./manage.py dumpdata > db.jsonПосле этого в директории с проектом появится файл содержащий описание моделей и сами модели в json формате.
Так же можно сделать дамп моделей определенного приложения:
./manage.py dumpdata admin > admin.jsonИ дамп определенной таблицы:
./manage.py dumpdata admin.logentry > admin_logentry.jsonКоманда выше экспортирует таблицу admin.logentry.
Так же есть возможность исключить таблицы . Следующая команда экспортирует всю базу данных кроме таблицы auth.permission:
./manage.py dumpdata --exclude auth.permission > db.jsonПо-умолчанию данные экспортируются в одну строку, без какого либо форматирования. Это не очень удобно для чтения человеком, поэтому можно указать отстуступы с помощью ключа --indent. Следующая команда экспортирует таблицу auth.user в более удобном для восприятия человека виде:
./manage.py dumpdata auth.user --indent 2 > db.jsonВ результате выполнения этой команды создастся файл db.json с примерно таким содержимым:
Django - результат выполнения команды dumpdata в формате json
С помощью опции --format можно указать другой формат для экспортируемого файла.
Доступны следующие форматы:
- xml
- yaml (требуется дополнительно установить модуль yaml)
- json
Например, если следующая команда:
./manage.py dumpdata auth.user --indent 2 --format yaml > db.jsonЭкспортирует таблицу auth.user в файл с формате yaml:
Django - результат выполнения команды dumpdata в формате yaml
Импорт (восстановление) с loaddata
Команда loaddata позволяет загрузить фикстуры (экспортированные с помощью dumpdata данные). Синтаксис так же крайне прост:
./manage.py loaddata db.jsonВосстановление всей базы данных
Если вы попробуете сделать экспортировать данные на одном ПК, и восстановить на другом, то у вас ничего не выйдет. В процессе будет "выброшено" исключение IntegrityError. При этом на том же ПК, на котором был сделан экспорт - все будет импортироваться прекрасно. Чтобы избежать этой проблемы, из экспорта необходимо исключить таблицы contenttypes и auth.permissions:
./manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.jsonПосле этого импорт должен пройти без проблем:
./manage.py loaddata db.jsonthe-bosha.ru