Резервного копирования баз данных mysql. MySQL backup. Бекап базы данных MySQL. Устанавливаем скрипт на сервер

В данной статье рассмотрим несколько практических примеров резервирования восстановления баз с помощью mysqldump . Утилита mysqldump – это эффективный инструмент для создания резервной копии базы данных MySQL . Он позволяет создать *.sql файл с совокупностью (дампом) всех таблиц и данных основной базы данных (источника).

С целью резервирования баз данных MyISAM, лучше использовать инструмент mysqlhotcopy , который мы обязательно опишем в следующих статьях, так как с ними он работает быстрее и эффективнее.


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

Базовыми командами для создания резервной копии и восстановления базы данных MySQL с помощью mysqldump есть:

В данных командах:

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

-p – параметр, который указывает пароль пользователя данного логина. Если после данного параметра не указать пароль, то после запуска команды его необходимо будет ввести дополнительно;

[имя_базы] – имя базы данных, резервную копию которой необходимо создать;

[название_файла_резервной_копии_базы].sql – пользователь может указать любое удобное название файла резервной копии базы данных. Если указать название файла как в предоставленном примере, то резервная копия базы будет создана в папке из которой запускалась команда, а именно:
C:\Program Files\MySQL\MySQL Server 5.7\bin

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

# mysqldump -uroot -pqwerty my_db › C:\Users\Valery\Documents\MySQL_Backup\my_db-dump1.sql
# mysql -uroot -pqwerty my_db ‹ C:\Users\Valery\Documents\MySQL_Backup\my_db-dump1.sql


Как создать резервную копию базы данных MySQL

Чтобы создать резервную копию одной базы данных достаточно использовать стандартную команду, которая описана выше:

# mysqldump –u [пользователь] –p [пароль_пользователя] [имя_базы] › [название_файла_резервной_копии_базы].sql

Например:

# mysqldump -uroot -pqwerty my_db > my_db-dump1.sql

Резервная копия нескольких баз данных

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

Для этого введите команду show databases (в Workbench)

или # mysqlshow –uroot -p (в консоли).


Если необходимо одновременно создать резервную копию нескольких баз данных (например, my_db и test ), то для этого необходимо выполнить такую команду:

# mysqldump -uroot -pqwerty –databases my_db test › my_db_test_backup.sql

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

Если есть необходимость создать бэкап всех баз данных вашего профайла MySQL, то это можно сделать с помощью параметра –all-databases .

# mysqldump -uroot -pqwerty –all-databases › all-databases_backup.sql

Резервная копия отдельной таблицы

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

# mysqldump -uroot -p my_db wp_commentmeta › table_ my_db-wp_commentmeta.sql

Примечание . Чтобы просмотреть список таблиц базы, введите команду:
#mysqlshow –uroot –p my_db


Как восстановить базу данных MySQL из резервной копии

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


Каждая база данных нуждается в резервном копировании. Если вы делаете его вручную, то пора переходить к автоматическому варианту с использованием простого решения на PHP. C помощью данного скрипта вы сможете сохранять отдельную таблицу или всю базу целиком.

Как использовать

Самый лучший способ - скопировать код и разместить его в папке с названием ‘database_backups ’ как показано ниже на своем веб сервере. Затем при любом вызове файла backup.php будет создавать резервную копию и сохранять ее в туже папку. Останется только скачать копию в другое место для надежного хранения и использования в случае необходимости.

Используем CRON

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

Wget -O /dev/null http://ваш_сайт.com/database_backup/backup.php

Код скрипта

Организовываем автоматические бэкапы базы данных MySQL.

Каждая база данных должна быть подстрахована резервным копированием или бэкапом (backup). Если вы все еще делаете это вручную, то можете радоваться, потому что есть простое решение автоматического бэкапа на PHP. С помощью данного скрипта вы можете передавать конкретные таблицы для резервного копирования или сделать резервное копирование всей базы данных.

Как реализовать mysql backups?

Лучше всего скопировать код предоставленного скрипта и поместить его в папку «database_backups», как показано на скриншоте ниже. Затем при вызове файла backup. php , он будет создавать резервную копию базы данных на вашем сервере. Я бы рекомендовал периодически копировать все файлы бэкапов себе на компьютер или другое хранилище, что бы перестраховаться на случай потери хостинга.

Автоматизация mysql backups с помощью CRON

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

Wget -O /dev/null http://your-site.com/database_backup/backup.php

PHP код файла

Мы рассмотрели простой пример реализации автоматического бэкапа базы данных mysql. Да, способ дубовый, но он приемлем для маленьких сайтов. Если у вас большой проект, то использование php очень медленное в сравнении с использованием mysqldump . Убедительная просьба к тем, кто знает как организовать резервное копирование лучше, напишите в комментариях.

Для этого в командной строке вашего 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.

От автора: что-то сегодня настроение какое-то лирически-меланхолическое. Наверное, на прошлогодний осенний лист я наступил, и от этого поплыл.… Так, лирику в сторону! Сегодня мы научимся, как сделать бэкап базы данных MySQL. Но все-таки жаль, что нельзя сделать «бэкап» времени!

Бэкапим легонько

Не будем сразу кидаться «в кусты с крапивой», и рассмотрим тему резервных копий с легких методов. Как всегда, начнем с нашей любимой графической оболочки phpMyAdmin. Рассмотрим, какими средствами создания в MySQL бэкапа базы обладает эта программа.

Заходим на сервер СУБД под учетной записью администратора. Затем слева выбираем базу, на которой будет тренироваться. Переходим на вкладку «Экспорт», и в разделе «Способ экспорта» отмечаем второй вариант («Обычный»).

После этого для редактирования станут доступны все возможные параметры бэкапа MySQL. Ниже в окне можно отметить конкретные таблицы базы, и создать только их копии. В поле «Вывод» активируйте вариант «Вывод в файл», и нажмите внизу «Ок». Копия базы данных сохранится в папке загрузки браузера.

Если честно, «господа-профессионалы программных наук», phpMyAdmin мне (как и вам) уже наскучил. Конечно, это «знатная» программная оболочка, обладающая «выдающимися» способностями в сфере администрирования СУБД. Но уже приелась!

Раз пошли такие «пляски», предлагаю испробовать что-то новенькое, и в качестве эксперимента для бэкапа базы данных MySQL использовать другую оболочку. Например, MySQL Admin.

Программная оболочка от авторов СУБД

Странно, но создатели столь популярной системы управления базами долгое время не пытались разработать для нее собственной графической оболочки. Но несколько лет назад появилась MySQL Admin. Хотя в данный момент поддержка программы ее создателями прекращена, но все-таки она обладает хорошим функционалом для бэкапа таблиц данных MySQL.
Чаще всего MySQL Admin используется как альтернатива phpMyAdmin, если размер резервируемой базы превышает 2 Мб. Это максимальный размер бэкапа, который поддерживается phpMyAdmin.

Скачиваем MySQL Admin, устанавливаем ее в файловую систему своего компьютера. Затем запускаем программу, и заполняем все поля параметров, которые нужны для подключения к серверу БД: название соединения, пароль, пользователя, хост и порт. Обратите внимание на последние два параметра. Их значение может отличаться для вашего ПК в зависимости от типа подключения (удаленно или локально) и используемой сборки.

Теперь переходим непосредственно бэкапу БД MySQL. В меню слева выбираем пункт «Backup».

Внизу нажимаем «New Project», в разделе «Schemata» выделяем нужную БД. Затем кнопкой с указателем направления перемещаем выделенный элемент в «Backup Content». Еще раз жмем на название базы, выделяем нужные таблицы и затем переходим по ссылке «Execute Backup Now».

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

Копия базы данной сохранена в указанной папке. Загляните в нее, и убедитесь в этом самостоятельно. Доверяй, но наличие бэкапа базы проверяй! Извините, последствие «наступа» на осенний лист

Использования MySQLDump

В набор встроенных средств СУБД входит MySQLDump, которая пригодится, чтобы сделать бэкап базы MySQL, когда «под рукой» нет специализированного ПО. Данная утилита не имеет собственного интерфейса, поэтому вся работа с ней происходит через командную строку. Запускаем cmd и переходим на тот диск и директорию, где хранится исполняемый файл утилиты:

Давайте немного поэкспериментируем с утилитой MySQLDump. Например, с помощью MySQL сделаем бэкап базы world и разместим его на рабочем столе. Код запроса:

mysqldump -uroot wordpress>C:\Users\домашний\Desktop\dump\world_copy.sql

mysqldump - uroot wordpress > C : \ Users \ домашний\ Desktop \ dump \ world_copy . sql

Теперь заглянем на свой рабочий стол (в указанную папку), проверим ее содержимое.

Утилита справилась с возложенной на нее миссией, и создала дубликат заданной базы в указанном нами месте файловой системы ПК.

Многим покажется, что я привожу слишком простые примеры реализации, Конечно, можно рассмотреть бэкап MySQL rsync, но соваться без подготовки в «неизвестные дебри» новичкам не стоит. Как-нибудь в другой раз, когда мы все окрепнем в своих

Создание резервных копий средствами PHP

С самого первого знакомства с языком PHP он показался мне очень сложным, и даже неприветливым. Но затем, освоив правила синтаксиса, все стало на свои места. И теперь я и PHP стараемся дружить. Опять с меня лирика «прет»! Пардон, друзья.

Сейчас рассмотрим простейший пример бэкапа MySQL в PHP. Для этого мы будет использовать не совсем «средства языка». Из файла PHP мы запустим уже хорошо нам знакомую утилиту MySQLDump и передадим ей все нужные параметры для создания копии указанной базы.

Код примера занимает всего несколько строк, и все благодаря PHP-функции system(), которая запускает на выполнению внешнюю (системную) программу, переданную ей в качестве основного параметра. Ее синтаксис:

string system (string $commandа [, int &$return_variable ])

string system (string $ command а[ , int & $ return _ variable] )

В общем, это полезная функция, которая нам пригодиться для создания MySQL бэкапа в Cети. Пример кода:

C:/Users/домашний/Desktop/dump/world_copy.sql"; system($commanda); ?>

$commanda = "mysqldump -uroot wordpress>C:/Users/домашний/Desktop/dump/world_copy.sql" ;

system ($commanda ) ;

До боли знакомый код! И результат тоже почти идентичен предыдущему. Но ведь это PHP, и его возможности почти безграничны. Давайте немного «подшаманим» пример, и сделаем так, чтобы код бэкапа MySQL скрипта создавал копию БД, имя которой включает в себя дату ее «сотворения».