вторник, 20 мая 2014 г.

Резервное копирование баз данных MySQL с помощью rsync


Резервное копирование баз данных MySQL с помощью rsync

Скрипт:

#!/bin/sh

MYSQL_USERNAME=имя_пользователя_БД
MYSQL_PASSWORD=пароль_пользователя_БД
BACKUP_DIR="/usr/local/db_backup"
REMOTE_IP=IP_адрес_сервера #(на который будет совершатся копирование)
tm=`date +"%d%m%Y"` #получаем текущую дату
#создаем бекапы баз
for i in `mysql --user=${MYSQL_USERNAME} -e "show databases"`
do
mysqldump --single-transaction --user=${MYSQL_USERNAME} $i > ${BACKUP_DIR}/$i.sql
done
#создаем директорию с текущей датой и перемещаем в нее все архивы баз
gzip ${BACKUP_DIR}/*.sql #архивируем базы
mkdir ${BACKUP_DIR}/${tm} | mv -f ${BACKUP_DIR}/*.gz  ${BACKUP_DIR}/${tm}

old_dir=`find ${BACKUP_DIR} -newer ${tm}` #ищем в директории предыдущий бекап

rm -rf ${old_dir} #и удаляем его


rsync -e='ssh' --progress -lzuogthvr ${BACKUP_DIR}/${tm} имя_пользователя_на_удаленном_сервере@${REMOTE_IP}:/полный_путь_к_папке_ для бекапов
#конец скрипта

Далее настраиваем авторизацию по ssh без пароля:

на сервере MySQL создаем ключ
ssh-keygen –t rsa –b 2048

с помощью scp копируем на удаленный сервер ключ
scp ~/.ssh/id_rsa.pub удаленный_пользователь@IP_адрес_удаленного_сервера:/путь_к_домашней_папке_пользователя_с удаленного_сервера

логинимся на удаленный сервер по ssh.
переименовываем ключ  
cat id_rsa.pub >> ~/.ssh/authorized_keys 

выставляем необходимые права на папки
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

Добавляем запуск скрипта в cron. 


P.S. на данный момент определил, что скрипт не работает по cron :) работаю над устранением проблемы :)
 



Комментариев нет:

Отправить комментарий