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

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

Решил полностью отказаться от использования 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_schemamysqlperformance_schema. Затем все базы помещаются в bzip2-архив и складируются в определённую папку, откуда их потом можно скачать.

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

00 01 * * * sh ~/mysqlbackup.sh

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

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

Leave a comment

    Send a Comment

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