Дамп базы данных - блог кодера. Как сделать дамп базы данных MySQL. Создание резервной копии базы данных CMS Joomla

Файл, в котором находится содержимое базы данных – это и есть дамп базы данных. С его помощью возможно восстановление с нуля. По сути, это просто-напросто копия. Но почему так и не назвать, копия базы данных.

Хранение базы данных происходит в разных файлах. Это зависит от типа операционной системы, от версии системы управления базой данных и др. Поэтому довольно непросто отыскать в системе все файлы одной базы данных и перенести в систему другую. Дамп как раз и служит для облегчения этой задачи.

Назначение дампа

Зачем же переносить базу данных?

  • Для создания резервных копий перед внесением кардинальных изменений в структуру сайт. Например, был установлен сторонний компонент, в результате сайт стал неработоспособным и требуется быстрое восстановление его работы. Вот здесь и используется аварийный дамп базы данных.
  • Сайт, как правило, сначала делается на локальной машине под виртуальным сервером, а потом его переносят на хостинг. И если с файлами вопрос более-менее понятный, то перенос базы данных вопрос не столь очевидно решаемый. И здесь опять понадобится дамп базы данных.

Как использовать дамп. Будем рассматривать стандартную для веб-программирования задачу: требуется перенести сайт, созданный на локальной машине на хостинг. Как же перенести базу данных MySql? Существует утилита phpMyAdmin. Она, как правило, должна быть установлена провайдером, и в состав денвера она должна входить. Воспользоваться ею можно прямо в браузере, потому что она написана на языке php.

Способ первый

  • В браузере надо перейти на страницу phpMyAdmin для требуемой базы данных.
  • На открывшейся странице войти во вкладку Экспорт.
  • Выбрать необходимые параметры. Если отметить пункт "Добавить DROP DATABASE", то при возвращении дампа обратно на сервер будет происходить следующее: если на сервере уже существует база данных с таким именем, то сначала удалится она, а уж потом создастся экспортируемая.
  • Поставить сжатие файла с помощью архиватора, чтобы уменьшить объем скачиваемого файла.
  • Если все отмечено правильно, надо нажать OK.
  • Через какое-то время появится окно, предлагающее скачать дамп базы данных.
  • Для экспорта базы данных на новый хостинг, надо перейти на вкладку Импорт, выбрать полученный файл дампа и нажать OK.

В случае удачного проведения операции, появится сообщение о том, что экспорт базы данных прошел успешно. В противном случае внизу появится сообщение об ошибке.

Способ второй

Заключается он в импорте базы данных из командной строки.

  • В командной строке вводим: mysqdump my database - -user=username –password>=my password>my_dump.sql
  • Появится файл базы данных. Дамп готов.
  • Для восстановления базы данных из дампа надо выполнить команду: Mysql -u username –p database

Прочитав эту статью, можно самостоятельно разобраться, как сделать дамп.

Дамп базы MySQL знаком каждому веб-мастеру. Это и неудивительно, ведь эта процедура выполняется в рамках резервного копирования или переноса базы данных на другой хостинг.

Следовательно, умение делать дамп базы данных MySQL немаловажно для любого веб-разработчика. Что это такое? Это файл, содержащий инструкции на языке SQL, за счет которых создается точная копия вашей БД как по содержанию, так и по структуре. Для каких ситуаций вам стоит сделать дамп базы MySQL:

  • Перенос БД на другой сервер

Дамп может понадобиться, если вы запланировали перенос базы данных на другой хостинг. С его помощью вы сможете без каких-либо трудностей воссоздать точную копию старой базы данных.

  • Резервное копирование базы данных

Виртуальный хостинг сайтов , на котором включено ежедневное резервное копирование. Регулярное резервное копирование данных сэкономит вам немало сил и нервов в случае непредвиденных ситуаций. Неудачный эксперимент с сайтом или крах сервера способен привести к потере всей базы, и лишь вовремя сделанный дамп поможет вам в этой ситуации. Естественно, при этом его нельзя хранить на одном сервере с основной базой, ведь в противном случае вы потеряете всю информацию без возможности ее восстановления.

Как сделать дамп базы MySQL?

Существуют различные способы создания дампа, и далее мы рассмотрим основные варианты:

  • Делаем дамп при помощи консоли MySQL

В этом случае для создания дампа БД используется командная строка или консоль MySQL, где нужно ввести команду mysqldump -uuser -ppass db_name > file_to_save. При этом user - это имя пользователя БД с достаточными правами для создания дампа, pass - пароль от базы данных, db_name - имя нужной БД, а вместо file_to_save необходимо указать имя файла, куда будет сохраняться дамп.

После правильно введенной команды в указанном месте появится файл с расширением.sql, который и является дампом базы данных. Этот способ наиболее универсален и популярен среди пользователей Unix-систем, например, Ubuntu, если вдруг потребуется перенос MySQL на другой сервер. В том же случае, если вы не знаете консольных команд, вам потребуется дополнительное программное обеспечение.

  • Делаем дамп базы данных при помощи phpMyAdmin

Если вы предпочитаете использовать дополнительное программное обеспечение, то можно сделать дамп базы данных средствами PHP при помощи, например, phpMyAdmin. Для этого выполните следующие действия:

  1. Войдите в phpMyAdmin.
  2. Выберите нужную базу данных из общего списка.
  3. Авторизуйтесь в выбранной БД.
  4. После авторизации в левой колонке будет сама база данных и служебная информация, которая к ней относится. Теперь вам нужно повторно выбрать вашу БД.
  5. Перейдите во вкладку "Экспорт", после чего включите некоторые настройки, а именно:

    Добавить DROP TABLE/VIEW/PROCEDURE/FUNCTION/EVENT

    Данная опция позволит вам в дальнейшем без опаски восстановить базу MySQL из дампа. Все таблицы, имеющие одинаковые имена, сначала будут удалены, то есть исполнится команда dpop, а затем заменятся на аналогичные из вашего дампа. В итоге вы обезопасите себя от создания дублей таблиц и как следствие, неправильной работы базы данных.

    Упаковать zip

    Включение этой опции обеспечит архивацию вашего дампа БД, и в итоге вы получите файл с расширением.zip. Это позволит вам быстро и корректно сохранить дамп даже при невысокой скорости соединения.

  6. Получаете готовый к использованию дамп БД. Если все было правильно сделано, то у вас будет архив, внутри которого находится файл с расширением.sql - дампом нужной вам базы данных.

Теперь вы знаете, как сделать дамп MySQL, если вам вдруг потребуется перенос базы на другой сервер или возникнет любая другая ситуация, когда может пригодиться резервная копия БД. Конечно, существует еще достаточно много способов создания дампа, помимо описанных выше. Но даже владение самыми простыми вариантами и регулярное применение их на практике позволит вам более уверенно чувствовать себя в любой непредвиденной ситуации, ведь достаточно будет просто развернуть дамп MySQL и быстро восстановить все базы данных.

Если вы решились купить dedicated server в нашей компании, то Вам выдается 100 ГБ на удаленном сервере бекапов, куда можно настроить автоматическое резервное копирование сайтов и баз данных. В таком случае, у вас всегда будет свежий дамп MySQL.

В том случае, когда у вас все же возникают сложности при создании дампа и смене сервера или хостинга, вы можете обратиться к сотрудникам техподдержки RigWEB, и они ответят на любые ваши вопросы в рамках своей компетенции. Если же вы по каким-то причинам не можете заниматься этим самостоятельно, наши специалисты бесплатно займутся переносом вашего сайта с другого хостинга на наш. Также мы обеспечим регулярное резервное копирование и своевременное предоставление актуальных копий ваших данных при необходимости. Пользуясь профессиональным хостингом RigWEB, вы можете быть уверены в максимальной защите своего проекта от любых неожиданностей!

Нет необходимости убеждать опытного Джумловода о регулярном бекапе сайта (backup - резервное копирование данных). Нередки взломы сайтов, бывают сбои у хостера, наконец, не исключена и "ошибка пилота", когда вы сами, случайно (тренируясь с командами Unix Shell , например), удалите весь сайт.

В CMS Joomla есть два объекта, которые нужно периодически резервировать: база данных MySQL и собственно файлы самой Joomla. Сущестует несколько способов создания и сохранения резервных копий, каждый имеет свои достоинства и недостатки. Для наглядности приведу их в виде табличек:

Резервное копирование средствами хостинг-провайдера.

Некоторые хостеры ежедневно делают резервную копию базы данных Joomla (и не только этой CMS) и файлов сайта. В случае необходимости, их можно восстановить одновременно или в отдельности.

Достоинства Недостатки
  • Все происходит автоматически, вам не нужно беспокоитсья, что забудете сделать резервную копию вовремя
  • Существуют несколько копий, бэкапы делаются каждые сутки. Вы можете восстановить, например, сайт на состояние 3 дня назад
  • Резервные копии отнимают дисковое пространство, отведенное вам хостером
  • Хранится ограниченное количество копий (как правило не более семи) за последние дни
  • Соответственно, если вы не вовремя заметили необходимость восстановления - вы рискуете потерять нужную резервную копию
  • Нет возможности настроить - какие директории подлежат бекапу, а какие нет

Резервное копирование средствами с помощью специальных компонентов Joomla (например - "JoomlaPack")

Достоинства Недостатки
  • Устанавливается в Joomla как стандартный компонент и всегда "под рукой"
  • Некоторые из них могут работать по расписанию и отсылать бекап базы MySQL на e-mail
  • Долгое время работы (создания бекапа)
  • Не всегда достаточно отведенного на хостинге времени для завершения работы скрипта (по умолчанию PHP скрипту дается 30 секунд)
  • Ненадежная работа на больших сайтах
  • Для компонентов, использующих Ajax-технологию (почти все) - требуется надёжное Интернет - соединение

Резервное копирование сторонними программами файлов и базы данных по-отдельности

Достоинства Недостатки
  • Работают не только с Joomla, но и с другими CMS
  • Позволяет выбрать какие директории резервировать, а какие нет
  • Доступны некоторые дополнительные функции, например: работа с файлами на хостинге, сброс (восстановление) пароля CуперАдминистратора Joomla
  • Позволяет создавать и распаковывать ZIP - архивы на сервере
  • Приходится устанавливать отдельные скрипты на хостинг, настраивать их, заводить для них отдельные пароли
  • "Полуавтоматическая" работа - вы должны сами указывать какие папки резервировать и следить за процессом
  • Создание бекапа файлов по частям (из-за 30 секундного ограничения работы скрипта)
  • Потенциальная опасность удалить (из-за невнимательности) нужные файлы или папки
  • Не всегда работает на бесплатных хостингах (например сайт, www.110mb.com)

В этой статье я опишу последний вариант: резервное копирование файлов и базы данных CMS Joomla сторонними программами.

Как сделать дамп базы данных MySQL. Создание резервной копии базы данных CMS Joomla

Программа создает резервную копию базы данных MySQL , независимо от того, какой CMS вы пользуетесь. Это отдельный PHP - скрипт.

/ mysql: как сделать дамп через консоль (терминал)

mysql: как сделать дамп через консоль (терминал)

Для бэкапа баз можно воспользоватся утилитой mysqldump. Она сделает дамп базы mysql в текстовый файл.

mysqldump -uuser -ppasswd -f database_name > dump.sql

Этой командой мы делаем бэкап базы данных под именем database_name в файл dump.sql

Еще несколько вариантов:

mysqldump -uuser -ppasswd -f --default-character-set=utf8 database_name | gzip -c > filename.sql.gz

Если нужно автоматизировать удаление старых архивов, можно воспользоваться cron и командой find. Запуская периодически

find ~/каталог-с-архивами -name "*.gz" -mtime +7 -exec rm -f {} ;

Тем самым Вы будете удалять архивы, которые "старше" 7 дней.

Несколько полезных параметров mysqldump:

Databases позволяет сделать так, что mysqldump включит в сценарий восстановления команды CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME и USE DBNAME. Это позволит создавать рабочие базы "с нуля". То есть, без использования --databases подразумевается, что пользователь восстанавливает одну базу данных и явно указывает, куда нужно помещать восстанавливаемые данные. Если же backup mysql создается с целью сделать полностью рабочую копию данных, например, на другом MySQL-сервере, то нужно использовать этот ключ;

All-databases позволяет сделать backup всех баз данных, которые существуют на данном MySQL-сервере. Если же нужно сделать копии только некоторых баз, нужно просто указать их через пробел при вызове mysqldump из командной строки (см. выше);

Add-drop-table - ключ, который заставит mysqldump добавлять в итоговый сценарий команду drop table перед созданием таблиц. Это позволит избежать некоторых ошибок при восстановлении базы из резервной копии. Конечно, нужно учитывать то, что таблицы, находящиеся в рабочей копии (если таблицы с таким же именем существуют в backup), перед восстановлением из резервной копии будут удалены из основной базы и пересозданы из backup;

No-data. С помощью этого ключа можно быстро сделать копию структуры таблицы/баз без самих данных. Например, Вы создали сложную таблицу и хотели бы сохранить на будущее ее структуру, а сами данные, которые находятся в этой таблице, Вам в резервной копии не нужны;

Восстановление из бэкапа

mysql -uroot -p --database DB --default-character-set=UTF-8

Оптимизация и обслуживание базы mysql

Есть и очень ленивая версия процесса, обработает все MyISAM таблицы во всех БД, доступных указанному пользователю и работает без остановки сервера MySQL:

mysqlcheck -u root -p --optimize --all-databases

Или в конкретной БД:

mysqlcheck -u root -p --optimize имя_базы_данных

Без оптимизации, только проверку и ремонт можно сделать и для таблиц типа InnoDB:

mysqlcheck -u root -p --auto-repair --check --all-databases

Привет, сейчас мы с Вами рассмотрим технологию Oracle Data Pump , с помощью которой мы можем экспортировать данные в дамп и импортировать данные из дампа в СУБД Oracle. Эта технология подразумевает использование утилит expdp и impdp , которые заменяют традиционные exp и imp, и сегодня мы с Вами научимся использовать их для создания дампа базы данных и импорта данных из этого дампа.

Как Вы, наверное, уже догадались, сейчас речь пойдет о СУБД Oracle, а именно о технологии Oracle Data Pump и начнем мы, конечно же, с обзора данной технологии.

Что такое Oracle Data Pump?

Oracle Data Pump – это технология позволяющая экспортировать и импортировать данные и метаданные в СУБД Oracle Database в специальный формат файлов дампа.

Данная технология впервые появилась в версии 10g и включается во все последующие версии Oracle Database. Для экспорта и импорта данных до Oracle Data Pump, т.е. до версии 10g, использовались традиционные утилиты exp и imp, возможности которых в 10 и выше версиях сохранены в целях совместимости. Особенностью Oracle Data Pump является то, что экспорт и импорт данных происходит на стороне сервера, dmp-файл формируется на файловой системе сервера, а также главным преимуществом Oracle Data Pump перед традиционным способом экспорта и импорта данных является более быстрая выгрузка и загрузка данных.

В Oracle Data Pump для экспорта и импорта данных созданы новые серверные утилиты expdp и impdp. Формат файлов дампа (dmp) используемый в этих утилитах, несовместим с форматом, который используется в exp и imp.

Expdp – утилита для экспорта данных в СУБД Oracle Database в дамп.

Impdp – утилита для импорта данных в СУБД Oracle Database из дампа.

Утилиты expdp и impdp поддерживают несколько режимов работы:

  • Full – экспорт и импорт всей БД;
  • Schema - экспорт и импорт выбранных схем;
  • Table - экспорт и импорт выбранных таблиц;
  • Tablespace - экспорт и импорт выбранных табличных пространств;
  • Transportable Tablespace - экспорт и импорт табличных пространств для переноса на другой сервер.

Для того чтобы посмотреть подробную справку (описание параметров ) по этим утилитам запустите их с параметром help=y, например

Примечание! Запуск утилит в операционной системе Windows запускается из командной строки. В случае если системный каталог bin СУБД Oracle не добавлен в переменную среды Path, то запускать утилиты нужно из данного каталога, т.е. предварительно перейдя в него (например, с помощью команды cd). Для демонстрации примеров ниже я использую Oracle Database Express Edition 11g Release 2 установленный на операционной системе Windows 7.

Пример создания дампа базы данных Oracle с помощью expdp

Для того чтобы создавать дампы в Oracle с помощью утилиты expdp предварительно необходимо определится с логической директорией, в которую Вы будете экспортировать дампы, т.е. где они будут храниться. Можно использовать стандартную директорию DATA_PUMP_DIR, но Вы, если хотите, можете создать новую, конкретно для Ваших целей отдельную директорию. Давайте создадим отдельный каталог для наших задач с экспортом и импортом данных, заодно и научимся создавать такие директории.

Сначала создаем каталог в файловой системе, например, я создал D:\OracleEX\ExportImport.

Затем уже создаем директорию в Oracle, для этого открываем SQL*Plus или SQLDeveloper и запускаем следующую команду (я запустил в SQL*Plus и директорию назвал ExportImport ).

CREATE DIRECTORY ExportImport AS "D:/OracleEX/ExportImport";


Чтобы посмотреть, какие директории уже созданы, можете использовать следующий запрос.

SELECT directory_name, directory_path FROM dba_directories;

Теперь давайте перейдем непосредственно к экспорту. Я все действия выполнял от имени системного пользователя Oracle.

Создание дампа всей базы данных

Для того чтобы создать полный дамп базы данных выполните следующую команду в командной строке

Expdp system/Pa$$w0rd FULL=Y directory=ExportImport dumpfile=DumpFull.dmp logfile=ExportFull.log


  • FULL=Y – параметр, который указывает, что мы делаем полный экспорт базы данных;
  • directory=ExportImport – параметр указывает директорию, в которую мы будем выгружать дамп файл;
  • dumpfile=DumpFull.dmp – параметр для указания названия дамп файла;
  • logfile=ExportFull.log – параметр для указания названия лог файла экспорта данных.

Создание дампа на основе отдельной схемы базы данных

В большинстве случае все-таки, наверное, понадобится экспортировать отдельную, выбранную схему базы данных, а не всю БД. Для того чтобы выгрузить схему, указываем параметр SCHEMAS.

Expdp system/Pa$$w0rd SCHEMAS=OracleUser directory=ExportImport dumpfile=DumpSCHEMAS.dmp logfile=ExportSCHEMAS.log


SCHEMAS=OracleUser – параметр, в котором мы указываем схему для экспорта, в нашем случае OracleUser.

Создание дампа на основе отдельных таблиц базы данных

Иногда нужно экспортировать только одну или несколько таблиц, для этого мы можем использовать параметр TABLES. В примере ниже мы экспортируем таблицу OracleTable в схеме OracleUser.

Expdp system/Pa$$w0rd TABLES=OracleUser.OracleTable directory=ExportImport dumpfile=DumpTABLES.dmp logfile=ExportTABLES.log


TABLES=OracleUser.OracleTable – это параметр, в котором мы указываем таблицу для экспорта (или несколько таблиц через запятую ).

Пример импорта данных из дампа Oracle с помощью impdp

Сейчас давайте перейдем к импорту данных из дампа. Как Вы помните, для этих целей у нас существует утилита impdp.

Импорт схемы из дампа

Для импорта всей схемы запускаем утилиту impdp с параметром SCHEMAS. В случае если у Вас уже создана схема, которую Вы собираетесь импортировать, то ее предварительно нужно удалить. Для удаления схемы используйте следующий запрос в SQL*Plus или SQLDeveloper

DROP USER OracleUser CASCADE;


После этого, для того чтобы импортировать схему, запускаем утилиту impdp со следующими параметрами

Impdp system/Pa$$w0rd SCHEMAS=OracleUser directory=ExportImport dumpfile=DumpSCHEMAS.dmp logfile=ImportSCHEMAS.log


  • system/Pa$$w0rd – это логин и пароль пользователя в СУБД;
  • SCHEMAS=OracleUser – параметр, который указывает, что мы хотим импортировать конкретную схему (в нашем случае OracleUser );
  • directory=ExportImport – параметр указывает директорию, в которой расположен файл дампа данных;
  • dumpfile=DumpSCHEMAS.dmp – параметр для указания названия дамп файла;
  • logfile=ImportSCHEMAS.log – параметр для указания названия лог файла импорта данных.

Импорт таблиц из дампа

Если Вы хотите импортировать одну или несколько таблиц, то можете использовать параметр TABLES, также как и при экспорте. В случае если таблица или таблицы уже созданы, т.е. существуют, то их необходимо или удалить вручную (DROP TABLE) или указать параметр TABLE_EXISTS_ACTION, который может принимать следующие значения:

  • SKIP - оставить существующую таблицу как есть, и переходить к следующей таблице;
  • APPEND - добавить строки в таблицу;
  • TRUNCATE - удалить все строки и добавить новые из дампа;
  • REPLACE - удалить таблицу и создать ее с данными из дампа.

Для примера давайте запустим impdp с параметром TABLE_EXISTS_ACTION=REPLACE, для того чтобы перезаписать существующую таблицу.

Impdp system/Pa$$w0rd TABLES=OracleUser.OracleTable directory=ExportImport dumpfile=DumpTABLES.dmp logfile=ImportTABLES.log TABLE_EXISTS_ACTION=REPLACE


На этом у меня все, надеюсь, материал был Вам полезен, пока!