ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Вторник, 29 апреля, 2025

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

Как автоматизировать резервное копирование базы данных 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 {} \;

 

Что делает этот скрипт?

 

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

chmod +x backup_mysql.sh

 

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

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

./backup_mysql.sh

 

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

 

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

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

crontab -e

 

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

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

 

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

 

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

grep CRON /var/log/syslog

 

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

 

Заключение

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

Exit mobile version