Скрипт резервного копирования баз Mysql в локальную папку

Автор: | 21.05.2022

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

А потому первейшей задачей становится создание резервных копий баз данных mysql. Базы небольшие по размеру, поэтому будет использоваться самый простейший вариант бэкапов — создание архивов и размещение их в определённой папке сервера.

Скрипт резервного копирования баз Mysql в локальную папку

Конечно, куда надёжней было бы отправлять бэкап по sftp куда-нибудь на другой сервер в другом дата-центре (и стране, чего уж там), но поскольку мои сайты меняются пару раз в месяц, то скачивание бэкапов раз в два дня нельзя назвать тяжёлым занятием. :)

Опыта в написании скриптов на Bash у меня не было до этого момента. Но разобраться не составило труда, учитывая многочисленные примеры скриптов резервного копирования mysql на различных сайтах об администрировании серверов.

Сам скрипт mysqlbackup.sh:

#!/bin/bash #Инициализируем переменные TMPDIR=»sqlfiles» BACKUPDIR=»/storage» USER=»root» PASS=»xxx» TIMEY=$(date +%Y-%m-%d) #Проверяем наличие папки для бэкапов if [ ! -d «$BACKUPDIR» ]; then mkdir -m 0700 «$BACKUPDIR» fi #Проверяем наличие временного каталога if [ ! -d «$BACKUPDIR/$TMPDIR» ]; then mkdir -m 0700 «$BACKUPDIR/$TMPDIR» fi #Сохраняем копии cd «$BACKUPDIR/$TMPDIR» for database in `mysql -s -r -e ‘SHOW DATABASES’ | grep -v Database | grep -v information_schema | grep -v performance_schema | grep -v mysql`; do mysqldump $database > $database.sql;done #Создаём архив cd «$BACKUPDIR» tar -cjf databases-«$TIMEY».tbz2 «$TMPDIR» chmod 0600 databases-«$TIMEY».tbz2 #Удаляем временную папку rm -r $TMPDIR echo «Базы данных сохранены!» exit 1

Работа с mysql выполняется непосредственно от пользователя root, так как он имеет доступ сразу ко всем базам данных.

Из бэкапа исключаются базы данных information_schema, mysql, performance_schema. Затем все базы помещаются в bzip2-архив и складируются в определённую папку, откуда их потом можно скачать.

В планировщике Cron прописывается задание на выполнение скрипта раз в сутки, например, в час ночи.

00 01 * * * sh ~/mysqlbackup.sh

Если в настройках крона задан верный email, то на почту придёт отчёт, в котором будут перечислены сохранённые базы данных.

P.S. Также можно создавать резервные копии и несколько раз в день. Для этого нужно в имени архива указывать ещё и время создания, чтобы файл не перезаписывался.



Добавить комментарий

Ваш адрес email не будет опубликован.