Чат PHP-разработчиков
Бэкапы и восстановление данных в MySQL

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

Даже при грамотном администрировании баз данных иногда возникают определенные проблемы. Аппаратный сбой может привести, в частности, к непредсказуемому поведению веб-страниц. Теперь, когда вы работаете с базой данных, простого резервного копирования файлов (HTML, PHP и изображений) на веб-сервере недостаточно. Нет ничего хуже, чем заставлять пользователей своего веб-сайта повторно вводить учетную информацию для регистрации. При наличии полной резервной копии вы сможете оценить разницу между восстановлением за час и повторным изобретением колеса. Мы рассмотрим несколько тактик резервного копирования баз данных.

Копирование файлов базы данных

Вы можете просто копировать файлы базы данных MySQL, как делаете это с файлами HTML и PHP. Если есть возможность создавать резервные копии обычных файлов, точно так же можно создавать резервные копии файлов базы данных MySQL.

Мы не рекомендуем использовать подобный подход при перемещении базы данных с одной машины на другую, поскольку в разных версиях MySQL файлы баз данных могут иметь разные форматы. MySQL сохраняет свои файлы с данными в специальном каталоге, который, как правило, размещается в C:\OSPanel\userdata\MySQL-5.7-x64[имя_базы_данных] в ОС Windows для OpenServer, и в /var/lib/mysql – в различных UNIX-системах, например Linux и Mac OS X. Перед копированием файлов базы данных необходимо остановить работу сервера MySQL, чтобы обеспечить неизменность всех файлов во время копирования.

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

Команда mysqldump

Гораздо лучше выполнять резервное копирование с помощью инструмента командной строки MySQL. Это инструмент, позволяющий создать резервную копию и восстановить данные, а также переместить базу данных с одного сервера на другой; утилита mysqldump создает текстовый файл с инструкциями SQL, необходимыми для создания объектов базы данных и вставки данных.

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

Код доступен только после покупки курса MySQL с нуля.

По умолчанию mysqldump создает и выводит резервную копию на стандартное устройство вывода (обычно это экран). Указанный пользователь должен иметь право на доступ к копируемым объектам. Перед копированием утилита предложит ввести пароль для данного пользователя. Чтобы выполнить копирование в файл, нужно добавить в конец команды символ (>) и указать имя файла.

Ниже мы привели примеры команд, выполняющих резервное копирование базы данных с именем users из командной строки:

Код доступен только после покупки курса MySQL с нуля.

Данная команда сообщает утилите mysqldump необходимость зарегистрироваться в базе данных с привилегиями пользователя root и создать резервную копию базы данных users. Перед копированием у вас будет запрошен пароль пользователя root, указанный в процессе установки. Результат работы утилиты сохраняется в файле с именем my_backup.sql с помощью оператора перенаправления – символа "больше чем" (>). Ниже показана начальная часть файла my_backup.sql, созданного утилитой mysqldump:

Код доступен только после покупки курса MySQL с нуля.

В этом сгенерированном коде SQL происходит создание базы данных users (если ее не существует) и генерация таблиц. Пусть вас не смущают символы обратных апострофов (`), которыми окружены имена таблиц и столбцов в примере, использовать их необязательно.

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

Код доступен только после покупки курса MySQL с нуля.

Но чаще всего вам понадобится создавать резервную копию всего содержимого базы данных. Это делается с помощью ключа командной строки --all-databases. Результирующий файл содержит команды, необходимые для создания баз данных и пользователей, представляя собой полный снимок базы данных, пригодный для восстановления:

Код доступен только после покупки курса MySQL с нуля.

Пустая копия базы данных (только структура) создается с помощью ключа --no-data. Ключ --no-create-info позволяет выполнить противоположную операцию – создать только резервную копию данных. Разумеется, в резервной копии мало проку, если не знаешь, как восстановить из нее базу данных.

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

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

Если резервная копия базы данных в файле my_backup.sql создавалась с ключом --all-databases, то восстановить базу данных можно так:

Код доступен только после покупки курса MySQL с нуля.

Бэкап и восстановление с помощью phpMyAdmin

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

После того, как вы нажмете кнопку "Далее", создастся дамп базы данных и скачается прямо через браузер.

Чтобы восстановиться из этой копии, достаточно перейти во вкладку "Импорт" и выбрать созданный при экспорте файл.
Импорт дампа базы через phpMyAdmin

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

Читайте также
Комментарии (1)


ArtemijeKA

У меня в linux вот так только работает:

cd /opt/lampp/bin
./mysqldump -u root -p users > /home/artem/users_backup.sql
enter password
cd /opt/lampp/bin
./mysql -u root -p
enter password
CREATE DATABASE users;
USE users;
SOURCE /home/artem/users_backup.sql;
Популярное за сутки
Сейчас читают
Логические задачи с собеседований