Резервное копирование mysql базы данных. Разбираемся с утилитами для бэкапа баз данных Бэкап баз данных mysql

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

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

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

Используем CRON

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

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

Код скрипта

Следующий пример показывает выполнение резервного копирования БД MySQL с помощью графического интерфейса.

1. Щелкните правой кнопкой мыши в окне Проводник и выберите опцию Резервная копия Создать резервную копию БД . Откроется окно Мастер резервирования БД


2. На вкладке «Общие» укажите соединение, базу данных для создания резервной копии, а также название итогового файла. Щелкните Далее .



3. Выберите содержимое для создания резервной копии. Щелкните Далее .



4. Укажите подробные опции создания резервной копии MySQL. Щелкните Далее .



5. Настройте опции Обработка ошибок и Лог-файла . Щелкните Выполнить для создания резервной копии MySQL.



6. Щелкните Выполнить .

Как запланировать создание резервной копии MySQL?

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



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

3. Выберите Действие Создать простую задачу в верхнем меню.

4. Укажите имя для новой задачи. Щелкните Далее .

5. Выберите одну из опций для запуска задачи создания резервной копии MySQL. Щелкните Далее .

6. Выберите время и частоты для запуска задачи. Щелкните Далее .

7. Выберите Запустить программу и щелкните Далее .

8. Укажите путь к файлу dbforgemysql.com в поле Программа или сценарий . (По умолчанию задан путь "C:\Program Files\Devart\dbForge Studio for MySQL\dbforgemysql.com")



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

/backup /connection:"User Id=root;Host=db;Port=3309;Database=sakila;Character Set=utf8;" /projectfile:"C:\Users\Documents\dbForge Studio for MySQL\Export\sakila.backup"

9. Проверьте все настройки еще раз и, если изменения не требуются, щелкните Завершить . В противном случае, щелкните Назад и внесите необходимые изменения.



Наш Мастер резервного копирования MySQL поможет вам избежать потери данных. Всего за несколько простых шагов вы сможете создавать копии баз данных целиком или только избранных объектов, настолько же быстро и просто восстанавливая их в дальнейшем.

От автора: что-то сегодня настроение какое-то лирически-меланхолическое. Наверное, на прошлогодний осенний лист я наступил, и от этого поплыл.… Так, лирику в сторону! Сегодня мы научимся, как сделать бэкап базы данных 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 скрипта создавал копию БД, имя которой включает в себя дату ее «сотворения».

Организовываем автоматические бэкапы базы данных 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 . Убедительная просьба к тем, кто знает как организовать резервное копирование лучше, напишите в комментариях.

Система управления базами данных mysql и ее форк mariadb являются очень популярными. Все благодаря открытому коду и бесплатности. Огромное количество проектов в интернете, и не только, используют mysql/mariadb в качестве сервера баз данных.

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

Замечательная утилита mysqldump позволяет делать бэкапы баз данных mysql/mariadb на лету, без остановки работы сервера. С её помощью, мы будем делать копию всех баз данных. Архивы старше 10 дней будем удалять.

Примерный код скрипта:

#!/bin/bash DB_BACKUP="/backups/backup-mysql/`date +%Y-%m-%d`" DB_USER="root" DB_PASSWD="mysql-root-password" HN=`hostname | awk -F. "{print $1}"` # Создаем каталог для сохранения резервной копии mkdir -p $DB_BACKUP # Удаляет архивы старше 10 дней find /backups/backup-mysql/ -maxdepth 1 -type d -mtime +10 -exec rm -rf {} \; # Делаем копию каждой базы данных сервера mysql/mariadb for db in $(mysql --user=$DB_USER --password=$DB_PASSWD -e "show databases" -s --skip-column-names|grep -viE "(staging|performance_schema|information_schema)"); do mysqldump --user=$DB_USER --password=$DB_PASSWD --events --opt --single-transaction $db | bzip2 > "$DB_BACKUP/mysqldump-$HN-$db-$(date +%Y-%m-%d).sql.bz2"; done

#!/bin/bash

DB_BACKUP = "/backups/backup-mysql/`date +%Y-%m-%d`"

DB_USER = "root"

DB_PASSWD = "mysql-root-password"

HN = ` hostname | awk - F . "{print $1}" `

# Создаем каталог для сохранения резервной копии

mkdir - p $ DB_BACKUP

# Удаляет архивы старше 10 дней

find / backups / backup - mysql / - maxdepth 1 - type d - mtime + 10 - exec rm - rf { } \ ;

# Делаем копию каждой базы данных сервера mysql/mariadb

for db in $ (mysql -- user = $ DB_USER -- password = $ DB_PASSWD - e "show databases" - s -- skip - column - names | grep - viE "(staging|performance_schema|information_schema)" ) ;

do mysqldump -- user = $ DB_USER -- password = $ DB_PASSWD -- events -- opt -- single - transaction $ db | bzip2 > "$DB_BACKUP/mysqldump-$HN-$db-$(date +%Y-%m-%d).sql.bz2" ;

55 1 * * * / usr / local / bin / backup - mysql . sh

Скрипт может выглядеть на много проще, если использовать параметр –all-databases, вместо прямого перебора всех баз данных. Однако выбранный подход позволяет упростить работу с копиями больших баз данных.

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

В данном скрипте подразумевается, что каталог /backups является подключенным надежным удаленным ресурсом.