Солнце — шириною в ступню человека (Гераклит Эфесский).

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

28.04.2025
Как автоматизировать резервное копирование базы данных MySQL с помощью Shell Script и Cron

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

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

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

 

Шаг 1: Создание сценария резервного копирования MySQL

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

nano backup_mysql.sh

 

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

# Учетные данные MySQL
MYSQL_USER="ваше_имя_пользователя_MySQL"
MYSQL_PASS="ваш_пароль_MySQL"
MYSQL_HOST="localhost"

# Каталог резервных копий (убедитесь, что этот каталог существует)
BACKUP_DIR="/путь/к/вашему/каталогу/резервных/копий"

# Получить текущую дату для добавления к имени резервной копии
DATE=$(date +"%Y-%m-%d_%H-%M-%S")

# Резервное копирование баз данных (перечислите имена баз данных, которые вы хотите скопировать)
DATABASES=("db1" "db2" "db3")

# Переберите каждую базу данных и создайте ее резервную копию
for DB in "${DATABASES[@]}"; do
    BACKUP_FILE="$BACKUP_DIR/$DB_$DATE.sql"
    
 echo "Резервное копирование базы данных $DB в $BACKUP_FILE..."
 
 # Выполните резервное копирование с помощью mysqldump
mysqldump -u $MYSQL_USER -p$MYSQL_PASS -h $MYSQL_HOST $DB > $BACKUP_FILE
 
 # Проверьте, успешно ли выполнено резервное копирование
 if [ $? -eq 0 ]; then 
 echo "Резервное копирование $ DB успешно завершено!"
 else 
 echo "Сбой резервного копирования $ DB!"
 fi 
done

# Очистка резервных копий старше 30 дней (необязательно) 
find $BACKUP_DIR -type f -name "*.sql" -mtime +30 -exec rm -f {} \;

 

Читать  Использование команды Sleep в скриптах Bash в Linux

Что делает этот скрипт?
  • Учетные данные MySQL: вам нужно указать имя пользователя MySQL, пароль и хост (обычно localhost).
  • Каталог резервных копий: здесь будут храниться ваши резервные копии. Убедитесь, что этот каталог существует в вашей системе.
  • Резервное копирование с отметкой времени: скрипт создает резервные копии с отметкой времени (например, 2025-04-28_21-20-00.sql), чтобы избежать перезаписи старых резервных копий.
  • Базы данных для резервного копирования: в массиве DATABASES укажите имена баз данных, которые вы хотите скопировать. При необходимости вы можете добавлять или удалять базы данных.
  • Команда резервного копирования: Сценарий использует mysqldump для создания резервных копий ваших баз данных.
  • Очистка старых резервных копий: скрипт также удаляет резервные копии старше 30 дней (при необходимости вы можете изменить это время).

 

После того как вы сохраните свой скрипт, сделайте его исполняемым, выполнив команду chmod:

chmod +x backup_mysql.sh

 

Шаг 2: Тестирование скрипта резервного копирования MySQL

Прежде чем настраивать задание Cron, рекомендуется протестировать скрипт вручную, чтобы убедиться, что всё работает должным образом.

./backup_mysql.sh

 

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

 

Шаг 3: Автоматизация резервного копирования MySQL с помощью заданий Cron

Теперь, когда у нас есть сценарий резервного копирования, следующим шагом будет его автоматизация с помощью Cron — инструмента, который запускает команды по расписанию.

crontab -e

 

Читать  Siemens Simatic S7 400 – системы автоматизации средней и высокой степени сложности

Добавьте задание Cron для автоматического запуска сценария резервного копирования. Например, чтобы запускать сценарий каждый день в 2 часа ночи, добавьте следующую строку:

0 2 * * * /bin/bash /путь/к/файлу/backup_mysql.sh

 

Вот как работает расписание Cron:

  • 0: Минута (0-я минута).
  • 2: Час (2 часа ночи).
  • *: Каждый день месяца.
  • *: Каждый месяц.
  • *: Каждый день недели.

 

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

grep CRON /var/log/syslog

 

Дополнительные соображения

  • Безопасность: хранение пароля MySQL в скрипте удобно, но небезопасно. Для большей безопасности вы можете хранить свои учётные данные в файле .my.cnf в вашем домашнем каталоге и настроить скрипт на чтение оттуда.
  • Место хранения резервных копий: убедитесь, что в каталоге резервных копий достаточно места для ваших резервных копий. Если вы выполняете несколько резервных копий, рекомендуется создать отдельное место хранения (например, внешний жесткий диск или облачное хранилище).
  • Частота резервного копирования: в зависимости от того, как часто меняются ваши данные, вы можете настроить расписание заданий Cron. Например, вы можете выполнять резервное копирование каждый час, каждую неделю или только в определенные дни.

 

Заключение

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

Читать  Лучшие приложения Night Light для Linux

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

**ссылки nofollow

Это может быть вам интересно


Рекомендуемое
Процессоры Intel Core Ultra 200S уже здесь, ищут новые материнские…

Спасибо!

Теперь редакторы в курсе.

Scroll to Top