Поиск по сайту:

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


Статус: устарело

В этой статье рассматривается версия Ubuntu, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением Ubuntu 12.04, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию Ubuntu:

  • Обновите Ubuntu до версии 14.04.
  • Обновление Ubuntu 14.04 до Ubuntu 16.04
  • Перенесите данные сервера в поддерживаемую версию.

Причина:

См. вместо этого:

Что такое MySQL?

MySQL — это популярное решение для управления базами данных, которое использует язык запросов SQL для доступа к данным и управления ими. Его можно легко использовать для управления данными с веб-сайтов или приложений.

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

В этом руководстве мы будем использовать Ubuntu 12.04 VPS с установленной MySQL 5.5. Большинство современных дистрибутивов и последних версий MySQL должны работать аналогичным образом.

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

Один из наиболее распространенных способов резервного копирования с помощью MySQL — использовать команду под названием «mysqldump».

Резервное копирование

Здесь есть статья о том, как экспортировать базы данных с помощью mysqldump. Основной синтаксис команды:

mysqldump -u username -p database_to_backup > backup_name.sql

Восстановление

Чтобы восстановить дамп базы данных, созданный с помощью mysqldump, вам просто нужно снова перенаправить файл в MySQL.

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

mysql -u username -p

Создайте новую базу данных, которая будет содержать все данные из дампа данных, а затем выйдите из командной строки MySQL:

CREATE DATABASE database_name;
exit

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

mysql -u username -p database_name < backup_name.sql

Теперь ваша информация должна быть восстановлена в созданной вами базе данных.

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

Вы можете сохранить данные из таблицы непосредственно в текстовый файл, используя оператор select в MySQL.

Общий синтаксис этой операции:

SELECT * INTO OUTFILE 'table_backup_file' FROM name_of_table;

Эта операция сохранит данные таблицы в файл на сервере MySQL. Это не удастся, если файл с выбранным именем уже существует.

Примечание. Этот параметр сохраняет только данные таблицы. Если структура вашей таблицы сложна и ее необходимо сохранить, лучше использовать другой метод!

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

В репозиториях Ubuntu имеется служебная программа под названием «automysqlbackup».

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

Чтобы установить эту программу, введите в терминал следующее:

sudo apt-get install automysqlbackup

Запустите команду, набрав:

sudo automysqlbackup

Основной файл конфигурации automysqlbackup находится в \/etc/default/automysqlbackup\. Откройте его с правами администратора:

sudo nano /etc/default/automysqlbackup

Вы можете видеть, что этот файл по умолчанию назначает многие переменные файлом MySQL, расположенным в \/etc/mysql/debian.cnf\. Это содержит информацию для входа в систему обслуживания

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

Местом хранения резервных копий по умолчанию является \/var/lib/automysqlbackup\. Найдите этот каталог, чтобы увидеть структуру резервных копий:

ls /var/lib/automysqlbackup
daily  monthly weekly

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

ls -R /var/lib/automysqlbackup/daily
.:
database_name  information_schema  performance_schema

./database_name:
database_name_2013-08-27_23h30m.Tuesday.sql.gz

./information_schema:
information_schema_2013-08-27_23h30m.Tuesday.sql.gz

./performance_schema:
performance_schema_2013-08-27_23h30m.Tuesday.sql.gz

Ubuntu устанавливает cron-скрипт с этой программой, который будет запускать ее каждый день. Он упорядочит файлы в соответствующий каталог.

Как сделать резервную копию при использовании репликации

Можно использовать репликацию MySQL для резервного копирования данных с помощью описанных выше методов.

Репликация — это процесс зеркального отображения изменений, сделанных на одном сервере, на другом (мастер-мастер).

Хотя репликация позволяет зеркалировать данные, она страдает, когда вы пытаетесь сохранить определенный момент времени. Это потому, что он постоянно воспроизводит изменения динамической системы.

Чтобы избежать этой проблемы, мы можем:

  • Временно отключить репликацию
  • Временно сделать резервную машину доступной только для чтения

Временное отключение репликации

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

mysqladmin -u user_name -p stop-slave

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

mysql -u user_name -p -e 'STOP SLAVE SQL_THREAD;'

После остановки репликации вы можете выполнить резервное копирование одним из описанных выше способов. Это позволяет вам держать главную базу данных MySQL в сети, в то время как подчиненная резервная копия.

Когда это будет завершено, перезапустите репликацию, набрав:

mysqladmin -u user_name -p start-slave

Временно сделать резервную машину доступной только для чтения

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

Вы можете выполнить эти шаги как на главной, так и на подчиненной системах.

Во-первых, войдите в MySQL с достаточными привилегиями для управления данными:

mysql -u root -p 

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

FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;

Теперь выполните резервное копирование с помощью mysqldump.

После завершения резервного копирования верните систему в исходное рабочее состояние, набрав:

SET GLOBAL read_only = OFF;
UNLOCK TABLES;

Примечание о методах, которые больше не рекомендуются

mysqlhotcopy

MySQL включает в себя Perl-скрипт для быстрого резервного копирования баз данных под названием «mysqlhotcopy». Этот инструмент можно использовать для быстрого резервного копирования базы данных на локальном компьютере, но у него есть ограничения, из-за которых мы не рекомендуем его.

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

Большинство пользователей не меняют механизм хранения для своих баз данных, и, начиная с MySQL 5.5, механизмом хранения по умолчанию является InnoDB. Этот тип базы данных не может быть скопирован с помощью mysqlhotcopy.

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

Копирование файлов таблиц

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

Этот подход страдает по одной из тех же причин, что и \mysqlhotcopy\.

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

Заключение

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

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