- Резервное копирование MySQL
- Резервное копирование базы данных
- Восстановление из резервной копии
- Выводы
- Резервное копирование и восстановление баз данных SQL Server в Linux
- Резервное копирование базы данных
- Резервное копирование журнала транзакций
- Восстановление базы данных
- Восстановление журнала транзакций
- Резервное копирование и восстановление с помощью SQL Server Management Studio (SSMS)
- Восстановление с помощью SQL Server Management Studio (SSMS)
- См. также
- Примите участие в разработке документации по SQL
Резервное копирование MySQL
Как вы знаете, все важные данные ваших сайтов, их настройки, статьи, комментарии и другая информация хранятся в базе данных. Потеря этой информации может иметь очень тяжелые последствия для проекта. Поэтому важно своевременно делать резервные копии базы данных 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
Вам нужно будет ввести пароль пользователя базы данных и больше ничего команда не выведет, поскольку мы отправили все данные в файл, но вы можете посмотреть информацию о резервной копии с помощью такой команды:
Но если во время создания копии возникнут какие-либо ошибки, они будут выведены на экран и вы сразу о них узнаете. Более сложный вариант, это выполнить резервное копирование MySQL с другого хоста, если у вас есть к нему доступ:
mysqldump -h хост -P порт -u имя_пользователя -p имя_базы > data-dump.sql
Копирование таблицы MySQL может быть выполнено простым добавлением имени таблицы в конец строки:
mysqldump -u имя_пользователя -p имя_базы имя_таблицы > data-dump.sql
Также, чтобы выполнять автоматическое резервное копирование может понадобиться сразу задать пароль, для этого указывайте его сразу после опции -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 сервере с правами суперпльзователя:
Затем создайте новую базу данных, например, с именем new_database, если база данных уже существует, то этого делать не нужно:
mysql> CREATE DATABASE new_database;
Дальше закройте оболочку, нажав сочетание клавиш Ctrl+Q и импортируйте данные из файла командой:
mysql -u пользователь -p база_данных < data-dump.sql
Для экспорта мы направляли данные стандартного вывода в файл, а здесь происходит обратная операция, данные из файла направляются на стандартный ввод программы. Успешно выполненная команда ничего не выведет, и чтобы убедиться что все прошло успешно, просто посмотрите содержимое базы.
Выводы
Теперь вы знаете как выполняется копирование базы данных MySQL, а также как восстановить скопированную информацию. Мы рассмотрели все возможные опции mysqldump чтобы вы могли настроить утилиту так, как вам нужно. Резервное копирование базы данных MySQL это очень важный момент и в определенной ситуации может сохранить много времени, поэтому обязательно настройте у себя на сервере!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Резервное копирование и восстановление баз данных SQL Server в Linux
Вы можете создавать файлы резервных копий баз данных из SQL Server на Linux различными способами. На сервере Linux можно использовать sqlcmd для подключения к SQL Server и создания резервных копий. Из Windows можно подключиться к SQL Server в Linux и создать резервные копии с помощью пользовательского интерфейса. Функция резервного копирования одинакова для разных платформ. Например, можно выполнять резервное копирование баз данных локально, на удаленные диски или в Microsoft Хранилище BLOB-объектов Azure.
SQL Server на Linux поддерживает резервное копирование в Хранилище BLOB-объектов Azure только с использованием блочных BLOB-объектов. Использование ключа хранилища для резервного копирования и восстановления приведет к использованию страничного BLOB-объекта, что не поддерживается. Используйте вместо этого подписанный URL-адрес. Сравнение блочных и страничных BLOB-объектов см. в разделе Резервное копирование в блочные и страничные BLOB-объекты.
Резервное копирование базы данных
В следующем примере sqlcmd подключается к локальному экземпляру SQL Server и создает полную резервную копию пользовательской базы данных demodb .
sqlcmd -S localhost -U SA -Q "BACKUP DATABASE [demodb] TO DISK = N'/var/opt/mssql/data/demodb.bak' WITH NOFORMAT, NOINIT, NAME = 'demodb-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
При выполнении команды SQL Server запросит пароль. После ввода пароля оболочка возвратит результаты выполнения резервного копирования. Пример:
Password: 10 percent processed. 21 percent processed. 32 percent processed. 40 percent processed. 51 percent processed. 61 percent processed. 72 percent processed. 80 percent processed. 91 percent processed. Processed 296 pages for database 'demodb', file 'demodb' on file 1. 100 percent processed. Processed 2 pages for database 'demodb', file 'demodb_log' on file 1. BACKUP DATABASE successfully processed 298 pages in 0.064 seconds (36.376 MB/sec).
Резервное копирование журнала транзакций
Если база данных находится в модели полного восстановления, то можно также создать резервные копии журналов транзакций для получения более детальных вариантов восстановления. В следующем примере sqlcmd подключается к локальному экземпляру SQL Server и создает резервную копию журнала транзакций.
sqlcmd -S localhost -U SA -Q "BACKUP LOG [demodb] TO DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'demodb_LogBackup', NOSKIP, NOREWIND, NOUNLOAD, STATS = 5"
Восстановление базы данных
В следующем примере sqlcmd подключается к локальному экземпляру SQL Server и восстанавливает базу данных demodb. Вариант NORECOVERY используется для обеспечения дополнительного восстановления резервных копий файлов журнала. Если вы не планируете восстанавливать дополнительные файлы журналов, удалите NORECOVERY .
sqlcmd -S localhost -U SA -Q "RESTORE DATABASE [demodb] FROM DISK = N'/var/opt/mssql/data/demodb.bak' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5"
Если вы случайно используете параметр NORECOVERY, но у вас нет дополнительных резервных копий файлов журнала, выполните команду RESTORE DATABASE demodb без дополнительных параметров. При этом восстановление завершается, а база данных остается в рабочем состоянии.
Восстановление журнала транзакций
Следующая команда восстанавливает предыдущую резервную копию журнала транзакций.
sqlcmd -S localhost -U SA -Q "RESTORE LOG demodb FROM DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak'"
Резервное копирование и восстановление с помощью SQL Server Management Studio (SSMS)
Среду SSMS можно использовать с компьютера Windows для подключения к базе данных Linux и резервного копирования через пользовательский интерфейс.
Используйте последнюю версию SSMS для подключения к SQL Server. Чтобы скачать и установить последнюю версию, см. статью Скачивание SSMS. Дополнительные сведения об использовании SSMS см. в статье Управление SQL Server на Linux с помощью SSMS.
Ниже приведены пошаговые инструкции по резервному копированию с помощью SSMS.
- Запустите SSMS и подключитесь к экземпляру SQL Server на Linux.
- В обозревателе объектов щелкните правой кнопкой мыши базу данных, выберите пункт Задачи, а затем — Архивировать. .
- В диалоговом окне Backup Up Database (Создание резервной копии базы данных) проверьте параметры и варианты и выберите ОК.
SQL Server завершает резервное копирование базы данных.
Восстановление с помощью SQL Server Management Studio (SSMS)
Ниже приведены пошаговые инструкции по восстановлению базы данных с помощью SSMS.
- В SSMS щелкните правой кнопкой мыши пункт Базы данных и выберите Restore Databases. (Восстановить базы данных. ).
- В разделе Источник выберите Устройство: и затем выберите многоточие (. ).
- Найдите файл резервной копии базы данных и выберите ОК.
- В разделе План восстановления проверьте параметры и файл резервной копии. Щелкните ОК.
- SQL Server восстанавливает базу данных.
См. также
Примите участие в разработке документации по SQL
Знаете ли вы, что содержимое SQL можно изменить самостоятельно? Это не только улучшит нашу документацию, но и даст вам статус участника в создании этой страницы.