Автобэкап базы данных на 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
Сегодня хочу показать интересный функционал, который мне помогает последнее время. Благодаря которому, я стал проводить в консоле меньше времени
Читать дальше...