Бэкап базы данных mysql linux

Содержание
  1. Бэкап базы данных MySQL на сервере Ubuntu
  2. Что такое MySQL?
  3. Бэкап базы данных MySQL при помощи mysqldump
  4. Восстановление БД
  5. Копирование таблицы MySQL в текстовый файл
  6. Утилита automysqlbackup
  7. Репликация баз данных
  8. Временное отключение репликации
  9. Настройка доступа к серверу резервного копирования
  10. Нерекомендуемые методы резервного копирования
  11. Скрипт mysqlhotcopy
  12. Копирование файлов таблиц
  13. Заключение
  14. Создание резервной копии MySQL при помощи утилиты XtraBackup
  15. Установка
  16. Права доступа, разрешения и привилегии
  17. Конфигурация
  18. Сценарий создания резервной копии
  19. Восстановление резервной копии
  20. Как создать резервную копию и восстановить базы данных MySQL с помощью Mysqldump
  21. Синтаксис команды Mysqldump
  22. Резервное копирование единой базы данных MySQL
  23. Резервное копирование нескольких баз данных MySQL
  24. Резервное копирование всех баз данных MySQL
  25. Резервное копирование всех баз данных MySQL в отдельные файлы
  26. Создание сжатой резервной копии базы данных MySQL
  27. Создать резервную копию с отметкой времени
  28. Восстановление дампа MySQL
  29. Восстановление единой базы данных MySQL из полного дампа MySQL
  30. Экспорт и импорт базы данных MySQL одной командой
  31. Автоматизируйте резервное копирование с помощью Cron
  32. Выводы

Бэкап базы данных MySQL на сервере Ubuntu

Что такое MySQL?

MySQL – это популярная система управления базами данных (СУБД), использующая для управления данными язык запросов SQL. MySQL идеально подходит для хранения данных сайта или веб-приложения.

Резервное копирование (или бэкап) – очень важная для сохранности любых данных операция. Особенно это касается баз данных. Бэкап базы данных MySQL можно выполнить несколькими способами, о чём и пойдёт речь в этой статье.

Примечание: Для выполнения руководства использовался сервер Ubuntu 12.04 и MySQL 5.5, но более современные версии программного обеспечения будут работать подобным образом.

Бэкап базы данных MySQL при помощи mysqldump

Утилита mysqldump – один из самых простых и удобных способов создания резервной копии MySQL.

Для начала нужно экспортировать БД. Об экспортировании БД при помощи 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

Скопированные данные будут восстановлены в новой БД.

Копирование таблицы MySQL в текстовый файл

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

Общий синтаксис команды:

SELECT * INTO OUTFILE ‘table_backup_file’ FROM name_of_table;

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

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

Утилита automysqlbackup

Утилита automysqlbackup доступна в стандартных репозиториях Ubuntu. Она позволяет выполнять бэкап БД автоматически на регулярной основе.

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

sudo apt-get install automysqlbackup

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

sudo nano /etc/default/automysqlbackup

Как видите, данный файл по умолчанию присваивает множество переменных из файла /etc/mysql/debian.cnf, который содержит данные для авторизации. Из этого файла automysqlbackup считывает пользователя, пароль и БД, резервные копии которых нужно создать.

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

ls /var/lib/automysqlbackup
daily monthly weekly

Каталог daily содержит подкаталог для каждой БД, в котором хранится сжатый sql дамп, полученный в результате последнего запуска команды:

ls -R /var/lib/automysqlbackup/dailey
.:
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 в связке с любым из перечисленных выше методов.

Репликация – это процесс зеркалирования данных с ведущего сервера на другие (тип master-slave) или с любого сервера связки на остальные серверы (тип master-master).

Но поскольку репликация постоянно фиксирует изменения динамической системы, она может пострадать от резервного копирования, потому что при этом фиксируется определенный момент времени.

Чтобы устранить эту проблему, можно:

  • Временно отключить репликацию
  • Или временно сделать сервер резервного копирования доступным только для чтения.

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

Чтобы временно отключить репликацию на slave-сервере, введите:

mysqladmin -u user_name -p stop-slave

Есть ещё один метод, который не отключает репликацию полностью, а просто ставит её на паузу:

Читайте также:  Windows find in file cmd windows

mysql -u user_name -p -e ‘STOP SLAVE SQL_THREAD;’

Остановив репликацию, можно выполнить бэкап при помощи любого из вышеперечисленных методов. При этом не нужно останавливать master-сервер.

После этого просто возобновите репликацию:

mysqladmin -u user_name -p start-slave

Настройка доступа к серверу резервного копирования

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

Это можно сделать как на сервере master, так и на slave.

Для начала откройте MySQL с правами root:

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

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

Выполните бэкап при помощи mysqldump.

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

SET GLOBAL read_only = OFF;
UNLOCK TABLES;

Нерекомендуемые методы резервного копирования

Скрипт mysqlhotcopy

MySQL предоставляет perl-скрипт для быстрого резервного копирования по имени mysqlhotcopy. Этот инструмент позволяет очень быстро скопировать БД на локальной машине, но он имеет некоторые ограничения, из-за которых его лучше не использовать.

Во-первых, этот скрипт копирует только данные, хранящиеся при помощи механизмов MyISAM и Archive. Большинство пользователей не меняют механизмы хранения для своих БД, а MySQL, начиная с версии 5.5, по умолчанию использует механизм InnoDB. Следовательно, скрипт mysqlhotcopy не может скопировать такой тип данных.

Во-вторых, данные, скопированные при помощи этого скрипта, можно запустить только на той же машине, на которой хранится БД. То есть mysqlhotcopy не сможет скопировать данные с удалённого сервера.

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

Следующий метод, который не рекомендуется применять, – это простое копирование файлов таблиц MySQL.

Этот подход имеет те же недостатки, что и скрипт mysqlhotcopy.

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

Заключение

Как видите, MySQL предоставляет самые различные методы копирования данных. Все они имеют свои преимущества и недостатки, некоторые из них проще, некоторые – более широкого применения.

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

Источник

Создание резервной копии MySQL при помощи утилиты XtraBackup

Percona XtraBackup — это утилита для горячего резервного копирования баз данных MySQL.

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

XtraBackup 2.4 может создавать резервные копии таблиц InnoDB, XtraDB и MyISAM на серверах MySQL 5.11, 5.5, 5.6 и 5.7, а также на сервере Percona для MySQL с XtraDB.

Для работы с MySQL 8.x следует использовать версию XtraBackup 8.x. В данной статье речь пойдёт о только о XtraBackup 2.4.

Главное преимущество XtraBackup заключается в том, что эта утилита подходит как для создания резервных копий высоко нагруженных серверов, так и для систем с низким количеством транзакций.

Если общий размер ваших баз данных MySQL значительный (десятки гигабайт), то стандартная утилита mysqldump не позволит быстро выполнить создание резервной копии, а восстановление дампа потребует много времени.

Установка

Установка XtraBackup из репозитория apt Percona.

Выполните последовательно следующие команды:

2. После установки выполните команду xtrabackup -v . Так как, важно убедиться, что утилита корректно работает на сервере. В результате на экране отобразится что-то подобное:

xtrabackup: recognized server arguments: — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup version 2.4.20 based on MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)

Права доступа, разрешения и привилегии

XtraBackup должна иметь возможность:

Подключиться к вашему серверу MySQL.

Обладать правами доступа к каталогу datadir.

Во время создания резервной копии иметь права на запись в указанный через параметр target-dir каталог.

Что такое datadir?

datadir — это каталог, в котором сервер баз данных MySQL хранит данные. Все базы данных, все таблицы находятся там. В большинстве дистрибутивов Linux по умолчанию таким каталогом является /var/lib/mysql.

Что такое target-dir каталог?

target-dir — это каталог, в который будет сохранена резервная копия.

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

RELOAD и LOCK TABLES

Конфигурация

Конфигурация XtraBackup выполняется с помощью опций, которые ведут себя так же, как и стандартные параметры MySQL.

Читайте также:  Аудио драйвер для windows 10 64 bit realtek

Что это значит?

Конфигурационные параметры могут быть указаны либо в командной строке, либо в файле конфигурации СУБД, например в /etc/my.cnf.

Утилита XtraBackup после запуска считывает разделы [mysqld] и [xtrabackup] из конфигурационных файлов MySQL. Это делается для того, чтобы утилита могла использовать настройки вашей СУБД без необходимости указания параметров руками при каждом резервном копировании.

Например, значение datadir и некоторые параметры InnoDB XtraBackup получаем из конфигурации вашей СУБД.

Если для работы XtraBackup вы хотите переопределить параметры, которые находятся в секции [mysqld], то просто укажите их в конфигурационном файле в секции [xtrabackup]. Поскольку они будут прочитаны позже, их приоритет будут выше.

Вам можете не добавлять никаких параметров в my.cnf. Все требуемые параметры допустимо указывать в командной строке. Обычно единственное, что может быть удобно разместить в разделе [xtrabackup] вашего my.cnf — это параметр target_dir, который по умолчанию определяет каталог, в который будут помещены резервные копии. Но это не обязательно.

Пример указания пути к каталогу с резервной копией в my.cnf:

Сценарий создания резервной копии

Для создания резервной копии можно использовать следующий сценарий:

Что происходит во время выполнения сценария?

Первый делом мы очищаем (удаляем) каталог, в который будем сохранять резервную копию:

rm -rf /mysql/backup.

Затем, при помощи утилиты XtraBackup создаём резервную копию и сохраняем её в /mysql/backup/:

Предварительно в MySQL мы создали пользователя xtrabackup с требуемыми привилегиями. При помощи параметра target-dir мы указываем каталог, в который следует сохранить резервную копию.

Важный момент!

Обратите внимание строку сценария:

xtrabackup —prepare —target-dir=/mysql/backup

Данные в каталоге /mysql/backup не консистентны до тех пор, пока они не будут подготовлены.

Дело в том, что во время копирования файлов могли произойти изменения. Операция xtrabackup —prepare —target-dir=/mysql/backup делает данные резервной копии идеально согласованными во времени.

Выполнить операцию подготовки данных можно на любой машине. Нет необходимости это делать на сервере, где находится исходная СУБД. Вы можете скопировать резервную копию на целевой сервер и подготовить ее там.

Последнее, что мы делаем — создаём архив, в который помещаем нашу резервную копию:

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

Прежде чем приступить к восстановлению резервной копии на целевом сервере данные должны пройти этап подготовки. Как это сделать смотрите выше.

Процесс восстановления данных очень простой. Вам нужно извлечь резервную копию из архива и заменить данные в datadir.

Как заменить данные в datadir?

Рассмотрим два варианта.

Вариант 1

Воспользоваться утилитой XtraBackup. Нужно указать опцию —copy-baсk.

Команда ниже перенесёт резервную копию в datadir целевого сервера:

Вариант 2

Можно поступить иначе, обойтись без утилиты XtraBackup.

Всё, что вам нужно — это скопировать резервную копию в datadir. Вы можете сделать это при помощи cp или rsync.

Важно понимать, что процедура восстановления резервной копии сводится всего лишь к замене содержимого каталога datadir.

Перед тем, как начать восстановление резервной копии на целевом сервере необходимо:

Остановить MySQL сервер.

Очистить папку datadir или перенести её содержимое в другое место. Каталог datadir обязательно должен быть пустым.

После завершения переноса данных в datadir сервер MySQL можно запустить.

Источник

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

В этом руководстве объясняется, как создавать резервные копии и восстанавливать базы данных MySQL или MariaDB из командной строки с помощью утилиты mysqldump.

Файлы резервных копий, созданные утилитой mysqldump, в основном представляют собой набор операторов SQL, которые можно использовать для воссоздания исходной базы данных. Команда mysqldump также может создавать файлы в форматах CSV и XML.

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

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

Синтаксис команды Mysqldump

Прежде чем перейти к использованию команды mysqldump, давайте начнем с обзора основного синтаксиса.

Выражения утилиты mysqldump имеют следующую форму:

  • options — Параметры mysqldump
  • file.sql — файл дампа (резервной копии)

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

Резервное копирование единой базы данных MySQL

Наиболее распространенный вариант использования инструмента mysqldump — резервное копирование одной базы данных.

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

Вам будет предложено ввести пароль root. После успешной аутентификации начнется процесс дампа. В зависимости от размера базы данных процесс может занять некоторое время.

Читайте также:  Атол 50ф драйвер для windows

Если вы вошли в систему как тот же пользователь, которого используете для экспорта, и этот пользователь не требует пароля, вы можете опустить параметры -u и -p :

Резервное копирование нескольких баз данных MySQL

Для резервного копирования нескольких баз данных MySQL с помощью одной команды вам нужно использовать параметр —database за которым следует список баз данных, которые вы хотите —database . Каждое имя базы данных должно быть разделено пробелом.

Приведенная выше команда создаст файл дампа, содержащий обе базы данных.

Резервное копирование всех баз данных MySQL

Используйте параметр —all-databases для резервного копирования всех баз данных MySQL:

Как и в предыдущем примере, приведенная выше команда создаст один файл дампа, содержащий все базы данных.

Резервное копирование всех баз данных MySQL в отдельные файлы

Утилита mysqldump не предоставляет возможности резервного копирования всех баз данных в отдельные файлы, но мы легко достигаем этого с помощью простого цикла FOR bash :

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

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

Если размер базы данных очень велик, рекомендуется сжать вывод. Для этого просто направьте вывод в утилиту gzip и перенаправьте его в файл, как показано ниже:

Создать резервную копию с отметкой времени

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

Приведенная выше команда создаст файл в следующем формате database_name-20180617.sql

Восстановление дампа MySQL

Вы можете восстановить дамп MySQL с помощью инструмента mysql . Общий синтаксис команды следующий:

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

В следующем примере первая команда создаст базу данных с именем database_name а затем импортирует в нее дамп database_name.sql :

Восстановление единой базы данных MySQL из полного дампа MySQL

Если вы создали резервную копию всех своих баз данных с помощью параметра -all-databases и хотите восстановить одну базу данных из файла резервной копии, содержащего несколько баз данных, используйте параметр —one-database как показано ниже:

Экспорт и импорт базы данных MySQL одной командой

Вместо создания файла дампа из одной базы данных и последующего импорта резервной копии в другую базу данных MySQL вы можете использовать следующий однострочный файл:

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

Автоматизируйте резервное копирование с помощью Cron

Автоматизировать процесс резервного копирования баз данных так же просто, как создать задание cron, которое будет запускать команду mysqldump в указанное время.

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

Создайте файл с именем .my.cnf в домашнем каталоге пользователя:

Скопируйте и вставьте следующий текст в файл .my.cnf.

Не забудьте заменить dbuser и dbpasswd на пользователя базы данных и пароль пользователя.

Ограничьте права доступа к файлу учетных данных, чтобы только ваш пользователь имел к нему доступ:

Создайте каталог для хранения резервных копий:

Откройте ваш пользовательский файл crontab:

Добавьте следующее задание cron, которое будет создавать резервную копию базы данных с именем mydb каждый день в 3 часа ночи:

Не забудьте заменить username своим фактическим именем пользователя. Мы также избегаем знаков процента ( % ), потому что они имеют особое значение в crontab.

Вы также можете создать другое задание cron для удаления любых резервных копий старше 30 дней:

Конечно, вам нужно настроить команду в соответствии с местоположением резервной копии и именами файлов. Чтобы узнать больше о команде find, ознакомьтесь с нашим руководством по поиску файлов в Linux с помощью командной строки .

Выводы

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

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

Вы также можете проверить руководство о том, как сбросить пароль root MySQL, если вы его забыли.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Оцените статью