0

Как автоматизировать резервное копирование базы данных MySQL в Linux

09.03.2022

Решения, описанные в этом сообщении блога, работают для любого дистрибутива Linux: Ubuntu, Red Hat, Open SUSE, CentOS, Debian, Oracle Linux и т. д. Однако команды установки пакета могут отличаться.

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

  1. Создать резервную копию базы данных
  2. Заархивируйте резервную копию
  3. Зашифровать сжатый файл
  4. Отправьте резервную копию в интернет-хранилище с помощью FTP, Dropbox, AWS, Google Drive и т. д.
  5. Получать уведомления по электронной почте о результатах резервного копирования
  6. Создайте расписание резервного копирования
  7. Удалить старые резервные копии

В данной статье будут рассмотрены следующие способы выполнения этих шагов:

  1. Создать bash-скрипт
  2. Используйте AutoMySQLBackup
  3. Использовать SqlBak

Баш-скрипт

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

Чтобы настроить это решение, нам нужно установить postfix mailutils . В Ubuntu мы можем сделать это следующим образом:

sudo apt-получить обновление
sudo apt-get установить postfix mailutils

Ниже приведена простейшая реализация bash-скрипта для регулярного резервного копирования. В начале скрипта указываем каталог хранилища резервных копий, адрес электронной почты для уведомлений и срок хранения резервных копий.

# Backup storage directory 
backupfolder=/var/backups

# Notification email address 
recipient_email=<username@mail.com>

# MySQL user
user=<user_name>

# MySQL password
password=<password>

# Number of days to store the backup 
keep_day=30 

sqlfile=$backupfolder/all-database-$(date +%d-%m-%Y_%H-%M-%S).sql
zipfile=$backupfolder/all-database-$(date +%d-%m-%Y_%H-%M-%S).zip 

# Create a backup 
sudo mysqldump -u $user -p$password --all-databases > $sqlfile 

if [ $? == 0 ]; then
  echo 'Sql dump created' 
else
  echo 'mysqldump return non-zero code' | mailx -s 'No backup was created!' $recipient_email  
  exit 
fi 

# Compress backup 
zip $zipfile $sqlfile 
if [ $? == 0 ]; then
  echo 'The backup was successfully compressed' 
else
  echo 'Error compressing backup' | mailx -s 'Backup was not created!' $recipient_email 
  exit 
fi 
rm $sqlfile 
echo $zipfile | mailx -s 'Backup was successfully created' $recipient_email 

# Delete old backups 
find $backupfolder -mtime +$keep_day -delete

Cron позволяет запланировать регулярный запуск этого скрипта. Чтобы облегчить это, сделайте следующее:

sudo crontab -e

Затем добавьте путь к сценарию в конец строки.

30 22 * * * /home/user/script/mysql_backup.sh

После этого ваш скрипт будет выполняться каждый день в 22:30.

Резюме

Создание сценария bash — хорошее и простое решение, если вы знаете bash и знаете, как его поддерживать. Однако это решение также влечет за собой определенные недостатки. Вы обнаружите, что сложно настроить сохранение резервных копий на Google Диск или DropBox. Облачное хранилище редко поддерживает интерфейс CLI. Кроме того, реализовать автоматическое удаление старых резервных копий может оказаться непростой задачей.

Преимущества:
  • В идеале вы можете настроить решение, учитывающее все ваши конкретные требования.
Недостатки:
  • Если вы хотите создать более сложное решение, вам необходимо иметь дополнительные знания о том, как писать сценарии bash.
  • Сложно настроить отправку резервных копий в облако

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

AutoMySQLBackup — это утилита командной строки, распространяемая по лицензии GNU. Эта
утилита позволяет автоматизировать процесс резервного копирования базы данных MySQL, а также позволяет выполнять инкрементное резервное копирование.

Установка

Если вашим дистрибутивом Linux является Debian, AutoMySQLBackup доступен в репозитории,
и вы можете установить его, просто выполнив следующую команду:sudo apt-get установить automysqlbackup

Если ваш дистрибутив Linux основан на RPM, процесс установки будет более сложным.

  1. Загрузите последнюю версию AutoMySQLBackup.wget https://github.com/sixhop/AutoMySQLBackup/archive/master.zip
  2. Создайте каталог и распакуйте скачанный архивmkdir /opt/automysqlbackupmv AutoMySQLBackup-master.zipcd /opt/automysqlbackuptar -zxvf AutoMySQLBackup-master.zip
  3. Затем установите AutoMySQLBackup./install.sh

Настройки AutoMySQLBackup

Для настройки AutoMySQLBackup необходимо отредактировать файл automysqlbackup.conf:судо нано /etc/automysqlbackup/automysqlbackup.conf

AutoMySQLBackup содержит множество настроек, и вы можете найти полный список в официальной
документации.

Обратите внимание на следующее:

  1. Путь к файлу конфигурацииCONFIG_configfile = “/etc/automysqlbackup/automysqlbackup.conf”
  2. Путь к каталогу хранилища резервных копийCONFIG_backup_dir = ‘/var/backup/db’
  3. Информация для подключения к MySQLCONFIG_mysql_dump_username = ‘корень’CONFIG_mysql_dump_password = ‘мой_пароль’CONFIG_mysql_dump_host = ‘локальный хост’
  4. Список баз данных, которые вам нужно или не нужно создавать резервные копииCONFIG_db_names = (‘my_db’)CONFIG_db_exclude =(‘information_schema’)
  5. Адрес электронной почты для уведомленийCONFIG_mail_address = ‘mail@google.com’
  6. Варианты планированияCONFIG_rotation_daily = 6CONFIG_rotation_weekly = 35CONFIG_rotation_monthly = 150
  7. Запуск сценария bash после резервного копированияPOSTBACKUP = “/etc/mysql-backup-post”Если вы планируете хранить резервные копии в течение ограниченного количества дней, то вы можете удалить резервные копии, настроив скрипт POSTBACKUP следующим образом:# Удалить резервные копии старше 30 днейнайти /var/backup/db -mtime + 30 -удалить

По умолчанию AutoMySQLBackup сжимает файлы с помощью «gzip».  Вы можете изменить это, отредактировав параметр CONFIG_mysql_dump_compression. Если вы хотите добавить шифрование, то используйте параметры CONFIG_encrypt и CONFIG_encrypt_password.

Бег

Чтобы запустить AutoMySqlBackup, выполните следующую команду:automysqlbackup /etc/automysqlbackup/automysqlbackup.conf

Резюме

Это решение может быть хорошей альтернативой, если вы не являетесь опытным пользователем bash и хотите простое решение для резервного копирования баз данных MySQL в папку. Одной из особенно примечательных функций является возможность создания добавочных резервных копий. К недостаткам этого решения можно отнести отсутствие поддержки интегрированных FTP и облачных хранилищ. Даже если вы просто хотите загрузить на FTP, вам нужно написать отдельный bash-скрипт.

Преимущества:
  1. Встроенные инкрементные резервные копии
Недостатки:
  1. Вы можете указать только папку в качестве места хранения резервных копий
  2. Нет интегрированного решения для удаления старых резервных копий

SqlBak

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

Этот сервис позволяет создавать резервные копии не только MySQL, но и баз данных PostgreSQL
и MS SQL Server.

В Linux эта услуга бесплатна, если вы подключаете менее 5 серверов.

Установка и регистрация

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

Установка приложения SqlBak в Linux очень проста, подробнее о том, как это сделать, можно прочитать здесь .

После регистрации ваш сервер появится на странице Dashboard .

Затем вы должны добавить соединение с базой данных MySQL.sudo sqlbak –add-connection –db-type=mysql –user=root

Теперь вы можете создать задание резервного копирования. Это можно сделать, нажав «Добавить новую вакансию», а затем «Создать вакансию».

В разделе «Выберите базы данных» вы можете выбрать базы данных, резервные копии которых хотите создать.

Затем в разделе «Хранить резервные копии в местах назначения» вы можете выбрать, куда отправлять файлы. Вы можете выбрать папку, FTP, Amazon S3, GoogleDrive, DropBox, хранилище BLOB-объектов Azure или OneDrive. Примечание. Вы можете выбрать сразу несколько мест назначения, например, папку и Amazon S3.

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

На странице настроек задания резервного копирования вы можете найти множество других интересных настроек, таких как «
Выполнение сценариев после и до», «Шифрование» и «Папка резервного копирования».

Отдельного внимания заслуживает раздел Restore Tasks. Этот раздел позволяет восстановить
только что созданный файл в другую базу данных (например, на сервер разработки).

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

Резюме:

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

Преимущества:
  1. Простота в использовании и обслуживании
  2. Возможность отправки резервных копий в облачное хранилище
  3. Возможность автоматического восстановления баз данных
  4. Возможность резервного копирования папок вместе с базами данных
  5. Автоматическое удаление старых резервных копий
Недостатки:
  1. Невозможно использовать без веб-браузера
  2. Требуется подключение к Интернету

Свежие комментарии

Подписка

Лучшие статьи


Fatal error: Uncaught Error: Call to a member function have_posts() on null in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php:380 Stack trace: #0 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/widget.php(257): fox56_blog_grid(NULL, Array) #1 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/register.php(33): include('/home/host18670...') #2 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/class-wp-widget.php(394): Wi_Widget_Latest_Posts->widget(Array, Array) #3 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/widgets.php(837): WP_Widget->display_callback(Array, Array) #4 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(417): dynamic_sidebar('sidebar') #5 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(136): fox56_single_sidebar() #6 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(7): fox56_single_inner() #7 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/single.php(23): fox56_single() #8 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/template-loader.php(106): include('/home/host18670...') #9 /home/host1867038/the-devops.ru/htdocs/www/wp-blog-header.php(19): require_once('/home/host18670...') #10 /home/host1867038/the-devops.ru/htdocs/www/index.php(17): require('/home/host18670...') #11 {main} thrown in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php on line 380