Автоматическое резервное копирование базы данных. Регулярное резервное копирование баз mysql Репликация баз данных

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

Резервное копирование файлов сайта вручную

Как правило, на хороших хостингах, существует собственная система резервного копирования данных. Она делает бэкап вашего сайта с определенным периодом, обычно это несколько дней. Понятно, что полностью полагаться на хостинг в резервном копировании не стоит. Как же тогда сделать резервную копию? Мы будем использовать .

Первым делом нужно создать резервную копию файлов. Для этого идем в раздел «WebFTP». Тут выбираем сайт, файлы которого мы хотим зарезервировать, и переходим в его папку. Затем, для более быстрого скачивания, файлы сперва нужно заархивировать. Архивировать файлы можно со сжатием и без него. Я бы рекомендовал не сжимать файлы, и добавлять их в архив в обычном виде, чтобы не повредить в дальнейшем. Выделяем нужные нам каталоги и файлы, в выпадающем списке, внизу, выбираем действие «Запаковать в архив». Задаем для него имя, желательно с указанием даты и времени, когда была создана копия. Жмем кнопку «Выполнить».

Ждем некоторое время, чтобы архив создался. После этого скачиваем его к себе на компьютер. Резервная копия файлов готова.

Резервное копирование базы данных вручную

Теперь переходим к не менее важному действию – резервирование базы данных. Если хостинг не предоставляет возможность сделать это автоматически, то в таких случаях, чтобы сохранить копии у себя на компьютере, нужно делать экспорт базы данных. Делается это следующим образом. Переходим в раздел «Базы данных» и щелкаем по ссылке «PHPMyAdmin» напротив нужной БД.

В открытой вкладке вводим свой логин и пароль, и мы попадаем в панель управления базами данных MySQL. Щелкаем по названию базы данных (1), которую хотим зарезервировать и переходим во вкладку «Экспорт» (2).

Выбираем способ с минимумом настроек и жмем «Вперед». После чего начнется скачивание sql-файла с копией базы данных.

Восстановление базы данных из резервной копии

Для восстановления базы из этого файла нужно будет также войти в панель управления базами MySQL, удалить все существующие в базе таблицы и затем перейти во вкладку «Импорт». Там выбрать ранее созданный файл и нажать на кнопку «Поехали». Система его загрузит и сообщит о завершении операции. В базе данных будут созданы все таблицы, которые она содержала на момент создания резервной копии.

Восстановление файлов из резервной копии

С восстановлением файлов все немного проще. Заходим в раздел «WebFTP», далее в папку вашего сайта, удаляем все файлы внутри папки вашего сайта и нажимаем «Закачать файл». Выбираем ранее созданный архив и жмем «Загрузить файл». Ждем окончания загрузки.

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

Также файлы можно скачать и с помощью FTP-клиента, например FileZilla. Про то, как с ним работать, я писал . Подключаемся к своему ftp-аккаунту через клиент, заходим в папку с файлами сайта и просто копируем их на свой компьютер. Точно также их можно загрузить с компьютера на хостинг. Только не забываем копировать с заменой.

Не забывайте о безопасности своего сайта, относитесь серьезно к резервным копиям, потому что никогда не знаешь, когда они могут пригодиться.

С уважением, Шмидт Николай

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

  • mysqdump (Командная утилита)
  • phpmyadmin (Веб интерфейс для работы с бд)
  • Sypex Dumper (Скрипт)
mysqldumpПодключившись по SSH или имея локальный доступ через терминал, можно сделать бекап базы данных используя командную утилиту mysqldump которая входит в комплект установленного MySQL пакета. Рассмотрим синтаксис данной команды.
mysqldump -u -p > – имя пользователя который имеет доступ к базе данных.
– пароль пользователя.
– имя базы данных.
– имя файла, дампа на выходе.
Пример как получить дамп базы данных mydb_forum на MySQL сервере:

mysqldump -uadmin -pSuperPassword mydb_forum > mydb_forum.sql

Восстановить полученный ранее дамп базы данных также легко.

mysql -uadmin -pSuperPassword mydb_forum < mydb_forum.sql

Что бы сделать дамп всех БД которые находятся у вас на MySQL сервере воспользуйтесь след. примером:

mysqldump -uAdmin -pMyPass --all-databases > all_databases.sql

Бекап структуры базы данных

mysqldump --no-data --databases my_db1 my_db2 my_db3 > structurebackup.sql

Cжатие данных на ходу

mysqldump -uAdmin -pSuperPass mydb | bzip2 -c > backup.sql.bz2 mysqldump -uAdmin -pSuperPass mydb | gzip -c > backup.sql.gz

PHPMyAdminPHPMyAdmin это легкий веб-интерфейс для работы с MySQL базами данных. Вы можете его использовать на сервере или домашнем ПК если у вас установлен и настроен PHP. Также это хороший вариант когда у вас нет доступа к серверу через telnet/ssh. Скачать последнюю версию
пакета PHPMyAdmin можно сдесь .
Настройки PHPMyAdmin
Прежде чем приступить к бекапу базы данных используя PHPMyAdmin я опишу как можно его настроить. После распаковки и установки пакета PHPMyAdmin нам нужно отредактировать файл
config.inc.php
Указываем полный URL к месту где находится phpmyadmin

$cfg [ "PmaAbsoluteUri" ] = "http://myexample.com/phpmyadmin/" ;

Настройки phpmyadmin для работы с базой данных

$cfg [ "Servers" ] [ $i ] [ "host" ] = "235.104.1.5" ; $cfg [ "Servers" ] [ $i ] [ "port" ] = "3306" ; $cfg [ "Servers" ] [ $i ] [ "connect_type" ] = "tcp" ; $cfg [ "Servers" ] [ $i ] [ "auth_type" ] = "config" ; $cfg [ "Servers" ] [ $i ] [ "user" ] = "admin" ; $cfg [ "Servers" ] [ $i ] [ "password" ] = "FvAk41P" ;

Бекап MySQL базы данных используя PHPMyAdmin.
Что бы сделать бекап базы данных MySQL используя PHPMyAdmin войдите в него (напр. http://localhost/phpmyadmin/), слева выберите базу данных которая вас интересует, и кликните на вкладку Export, вы попадете примерно на такую страницу:

Как видите тут есть разные настройки, возможность выбрать тип будущего дампа базы данных, архивация дампа и т.п. Жмем на кнопку “Go” что бы приступить к бекапу БД, выскакивает окошко с просьбой указать место на вашем ПК куда будет сохранен дамп базы данных, указываем и наслаждаемся процессом резервного копирования БД. PHPMyAdmin. Ввостановление базы данных
Процедура довольно проста, заходим в phpmyadmin, кликаем на Import, видим форму, используем ее для выбора локального файл-дампа базы данных. При клике на “Go” база данных восстановится.Sypex DumperТакже очень интересный на мой взгляд, бесплатный скрипт – “Sypex Dumper” написанный на PHP.
Любой начинающий пользователь, или администратор который не хочет заморачиватся с разными консольными утилитами и многофункциональными веб интерфейсами может выбрать для себя удобный, простой и вполне работоспособный скрипт Sypex Dumper.

Как вы знаете, все важные данные ваших сайтов, их настройки, статьи, комментарии и другая информация хранятся в базе данных. Потеря этой информации может иметь очень тяжелые последствия для проекта. Поэтому важно своевременно делать резервные копии базы данных mysql. Также эти копии могут быть очень полезными при переносе проекта на другой сервер.

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

Все что вам нужно для резервного копирования mysql - это доступ к серверу с операционной системой Linux, на котором установлен сервер баз данных, а также имя базы данных и параметры доступа к ней.

Для экспорта информации из базы данных в формате SQL можно использовать утилиту mysqldump. Вот ее синтаксис:

$ mysqldump опции имя_базы [имя_таблицы] > файл.sql

По умолчанию утилита будет выводить все в стандартный вывод, поэтому нам нужно перенаправить эти данные в файл, что мы и делаем с помощью оператора ">". Опции указывают параметры аутентификации и работы, а имя базы и таблицы - данные которые нужно экспортировать. Теперь рассмотрим кратко опции, которые будем использовать:

  • -A - копировать все таблицы из всех баз данных;
  • -i - записывать дополнительную информацию в комментариях;
  • -c - использовать имена колонок для инструкции INSERT;
  • -a - включать все возможные опции в инструкцию CREATE TABLE;
  • -k - отключает первичные ключи на время копирования;
  • -e - использовать многострочный вариант инструкции INSERT;
  • -f - продолжить даже после ошибки;
  • -h - имя хоста, на котором расположен сервер баз данных, по умолчанию localhost;
  • -n - не писать инструкции для создания базы данных;
  • -t - не писать инструкции для создания таблиц;
  • -d - не записывать данные таблиц, а только их структуру;
  • -p - пароль базы данных;
  • -P - порт сервера баз данных;
  • -Q - брать все имена таблиц, баз данных, полей в кавычки;
  • -X - использовать синтаксис XML вместо SQL;
  • -u - пользователь, от имени которого нужно подключаться к базе данных.

В большинстве случаев нам достаточно задать имя пользоваться, пароль, а также имя базы данных. Дальше рассмотрим примеры работы с утилитой. Например самая простая команда экспорта базы данных:

mysqldump -u имя_пользователя -p имя_базы > data-dump.sql

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

head -n 5 data-dump.sql

Но если во время создания копии возникнут какие-либо ошибки, они будут выведены на экран и вы сразу о них узнаете. Более сложный вариант, это выполнить резервное копирование mysql с другого хоста, если у вас есть к нему доступ:

mysqldump -h хост -P порт -u имя_пользователя -p имя_базы > data-dump.sql

Копирование таблицы mysql может быть выполнено простым добавлением имени таблицы в конец строки:

mysqldump -u имя_пользователя -p имя_базы имя_таблицы > data-dump.sql

Также, чтобы выполнять автоматическое резервное копирование базы mysql может понадобиться сразу задать пароль, для этого указывайте его сразу после опции -p, без пробела:

mysqldump -u имя_пользователя -pпароль имя_базы > data-dump.sql

Мы можем делать бэкап вручную время от времени, но это не совсем удобно, поскольку есть другие важные дела. Поэтому используем планировщик cron, чтобы автоматизировать процесс. Тут есть два способа более простой, и более сложный, но точный. Допустим, нам нужно создавать резервную копию каждый день, тогда просто создайте скрипт в папке /etc/cron.daily/ со следующим содержимым:

sudo vi /etc/cron.daily/mysql-backup

!/bin/bash
/usr/bin/mysqldump -u имя_пользователя -pпароль имя_базы > /backups/mysql-dump.sql

Папку /backups/mysql-dump.sql нужно заменить на свою папку для резервных копий. Осталось дать скрипту права на выполнение:

chmod ugo+x /etc/cron.daily/mysql-backup

Добавьте в открывшейся файл такую строку и сохраните изменения:

30 2 * * * /usr/bin/mysqldump -u имя_пользователя -pпароль имя_базы > /backups/mysql-dump.sql

Команда будет выполняться каждый день, в 2:30, это удобно, поскольку ночью обычно меньше нагрузка на сервер. Как вы поняли, первое число - это минуты, второе - часы, третье день, дальше неделя и месяц. Звездочка значит, что этот параметр не имеет значения.

Восстановление из резервной копии

Восстановить резервную копию mysql или mariadb из существующего SQL файла тоже очень просто. Поскольку использовался синтаксис sql мы просто можем выполнить все команды с помощью стандартного клиента mysql.

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

mysql -u root -p

Затем создайте новую базу данных, например, с именем new_database, если база данных уже существует, то этого делать не нужно:

mysql> CREATE DATABASE new_database;

mysql -u пользователь -p база_данных < data-dump.sql

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

Выводы

Теперь вы знаете как выполняется копирование базы данных mysql, а также как восстановить скопированную информацию. Мы рассмотрели все возможные опции mysqldump чтобы вы могли настроить утилиту так, как вам нужно. Резервное копирование базы данных mysql это очень важный момент и в определенной ситуации может сохранить много времени, поэтому обязательно настройте у себя на сервере!

Для этого в командной строке вашего shell выполним:

# mysqldump -u root -p -h localhost -x -F base >

где флаги обозначают:
-u
-h
-p – указывает на то, что для входа в MySQL привилегированному пользователю (root) требуется ввести пароль;
-x – блокируем все таблицы бэкапируемой базы данных от изменений на время работы выгрузки дампа;
-F – сбрасываем на диск журнал регистрации сервера MySQL прежде, чем запустить дамп;
base – имя бекапируемой базы данных MySQL;
/var/backups/base_`date +%Y-%m-%d%n`.sql – путь и имя файла дампа бэкапируемой базы данных MySQL, где `date +%Y-%m-%d%n` припишет к имени файла дату его создания.

В результате работы это команды мы получим файл дампа необходимой нам базы base, который будет выглядеть как:

# ls -Al /var/backups/ | grep base -rw-r--r-- 1 root wheel 2738944 13 апр 10:03 base_2010-04-13.sql

Теперь перед нами стоит задача восстановления базы из созданной нами архивной копии базы данных MySQL. Для этого нам необходимо войти в оболочку MySQL командой:

# mysql -u root -h localhost -p

где флаги обозначают:
-u – указываем привилегированного пользователя на базы MySQL (в данном примере это root);
-h – указываем имя хоста, на котором работает MySQL (в данном примере это localhost);
-p – указывает на то, что для входа в MySQL привилегированному пользователю (root) требуется ввести пароль.

В приглашении оболочки MySQL введем команду создания новой базы данных:

Mysql> CREATE DATABASE base;

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

Mysql> SHOW DATABASES;

Теперь нам осталось только войти во вновь созданную нами базу данных и загрузить в нее дамп выгрузки из архивного файла нужной даты:

Mysql> USE base; Database changed mysql> source /var/backups/base_2010-04-13.sql;

Все, мы создали новую базу данных и загрузили в нее архивную копию. Выйдем из оболочки MySQL:

Mysql> exit Bye

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

# nano -w /var/backups/base_2010-04-13.sql CREATE DATABASE base; USE base;

Сохраним внесенные изменения, сделанные в nano, нажав CTRL +x , и подтвердим, нажав по запросу y . Теперь в командной строке вашего shell выполните команду:

# mysql -u root -h localhost -p < /var/backups/base_2010-04-13.sql

введите пароль привилегированного пользователя root, чтобы импортировать бекап в прописанную нами вновь созданную базу base.

Понравилась статья? Поделитесь с друзьями!