JUNIOR-BLOG

Для всех кто увлекается программированием

Главная

Автобэкап базы данных на VPS

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

Было решено делать простой бэкап в формате .sql и хранить его на VPS. При этом бэкапы делаются раз в неделю, хранятся месяц, + пишем лог.

Первым делом подключаемся к VPS по SSH и в домашней папке создаем файл nano backup.sh. В этом файле будет описан процесс автобекапирования:

 

#!/bin/bash

# Параметры
DB_CONTAINER_NAME="mysql-1"  # Имя вашего контейнера MySQL
DB_NAME="test"                          # Имя вашей базы данных
DB_USER="name"                             # Имя пользователя базы данных
DB_PASSWORD="pass"                   # Пароль пользователя базы данных
BACKUP_DIR="/home/sky/db_backups" # Путь к директории для сохранения бэкапов
DATE=$(date +"%Y-%m-%d_%H-%M-%S")          # Дата и время для имени файла

# Создание директории для бэкапов, если она не существует
mkdir -p "$BACKUP_DIR"

# Выполнение резервного копирования
docker exec $DB_CONTAINER_NAME sh -c 'mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE' > $BACKUP_DIR/db-$DATE.sql

# Уведомление о завершении
echo "-------------------------------------" >> "$BACKUP_DIR/backup_log.txt"
echo "Backup of $DB_NAME completed at $DATE" >> "$BACKUP_DIR/backup_log.txt"
# Удаление старых дампов, оставляя только последние 2
find $BACKUP_DIR -type f -name "*.sql" -mtime +30 -delete
{
    echo "=== Статистика бэкапа ==="
    echo "Размер MySQL дампа: $(du -h $BACKUP_DIR/db-$DATE.sql | cut -f1)"
    echo "Свободное место: $(df -h $BACKUP_DIR | tail -1 | awk '{print $4}')"
} >> $BACKUP_DIR/backup_log.txt

 

В принципе, тут все понятно, и дополнительно комментировать я не буду.

Выходим из nano, и нужно сделать файл исполняемым:

 

chmod +x backup.sh

 

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

 

crontab -e

 

Добавьте следующую строку в файл crontab, чтобы запланировать выполнение скрипта каждую неделю (например, в 2:00 утра по воскресеньям):

 

0 2 * * 0 /bin/bash /home/ваш_пользователь/backup.sh

Замените /home/ваш_пользователь/backup.sh на полный путь к вашему скрипту.

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

 

bash backup.sh

В папке с бэкапами также появится файл .txt, где будет написана информация по бэкапам: вес файла и остаток памяти на диске.

 

 

Похожие статьи

Упрощённая установка MySQL для локальных pet-проектов в Ubuntu

Как просто установить MysqlServer для локальных пет проектов в Ubuntu без погружения в лишние команыд

Читать дальше...

Алиасы в терминале Ubuntu

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

Читать дальше...

Комментарии