MySQL является популярным решением для управления базами данных, которая использует SQL язык запросов для доступа и управления данными. Она может быть легко использована для управления данными с веб-сайтами или приложениями.
Резервные копии имеют важное значение с любым типом данных, и это особенно актуально, когда речь идет о базах данных. MySQL может быть поддержано несколькими различными способами, которые мы обсудим в этой статье.
Для этого урока мы будем использовать Ubuntu 12.04 VPS с установленным MySQL. Большинство современных дистрибутивов и последние версии MySQL должны работать аналогичным образом.
Одним из наиболее распространенных способов резервного копирования с 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 * INTO OUTFILE 'table_backup_file' FROM name_of_table;
Эта операция будет сохранять данные таблицы в файл на сервере MySQL. Это не сработает, если уже существует файл с именем выбранного.
Примечание: Эта опция сохраняет только данные таблицы. Если ваша структура таблицы сложна и должна быть сохранена, то лучше использовать другой метод!
Существует программа-утилита под названием «automysqlbackup«, которая доступна в репозитории Ubuntu.
Эта утилита может быть запущена автоматически и выполнять резервное копирование через регулярные промежутки времени.
Чтобы установить эту программу, введите следующую команду в терминале:
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 дамп с момента, когда команда была запущена:
ls -R /var/lib/automysqlbackup/daily
.: database_name information_schema performance_schema ./database_name: database_name_2017-01-03_03h00m.Tuesday.sql.gz ./information_schema: information_schema_2017-01-03_03h00m.Tuesday.sql.gz ./performance_schema: performance_schema_2017-01-03_03h00m.Tuesday.sql.gz
Ubuntu устанавливает cron сценарий с помощью этой программы, которая будет работать каждый день. Он будет организовывать файлы в соответствующий каталог.
Можно использовать репликацию MySQL для резервного копирования данных с вышеуказанными методами.
Репликация представляет собой процесс зеркального отображения данных с одного сервера на другой сервер (ведущий-ведомый) или зеркальное отображение изменений, внесенных c сервера на другой (мастер-мастер).
В то время как репликация позволяет зеркального отображения данных, она страдает, когда вы пытаетесь сохранить определенный момент времени. Это происходит потому, что она постоянно тиражирует изменения динамической системы.
Чтобы избежать этой проблемы, мы можем либо:
Вы можете отключить временно репликацию для ведомого устройства:
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;
MySQL включает в себя Perl скрипт для быстрого резервного копирования баз данных называемый «Mysqlhotcopy«. Этот инструмент может быть использован для быстрого резервного копирования базы данных на локальном компьютере, но он имеет свои ограничения, которые заставляют нас избегать рекомендовать его.
Самая важная причина, мы не будем рассматривать использование Mysqlhotcopy здесь потому, что он работает только для данных, сохраненных с помощью двигателей хранения «MyISAM» и «Archive».
Большинство пользователей не меняют двигатель для хранения своих баз данных и, начиная с MySQL 5.5, двигатель хранения по умолчанию является «InnoDB». Этот тип базы данных не могут быть сохранен с помощью Mysqlhotcopy.
Другим ограничением этого сценария заключается в том, что она может быть запущена на той же машине, на которой хранится хранилище базы данных. Это предотвращает работу резервное копирование с удаленного компьютера, которое может быть основным ограничением при некоторых обстоятельствах.
Другой метод, иногда предлагается просто скопировать файлы таблиц, в которых MySQL хранит свои данные.
Этот подход страдает из-за одного из тех же причин, как «Mysqlhotcopy».
В то время как разумно использовать эту технику с двигателями хранения, которые хранят свои данные в файлах, InnoDB, новый двигатель хранения по умолчанию, не для резервного копирования в этом случае.
Есть много различных методов выполнения резервного копирования в MySQL. Все они имеют свои преимущества и недостатки, но некоторые из них гораздо проще реализовать и в более широком смысле полезнее, чем другие.
Схема резервного копирования, которое вы выбираете для развертывания, будет в значительной степени зависеть от ваших индивидуальных потребностей и ресурсов, а также вашей производственной среды. Какой бы метод вы не выбрали, не забудьте проверить свои резервные копии и практику восстановления данных, так что вы можете быть уверены в том, что процесс функционирует нормально.