Резервное
копирование баз данных 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 :) работаю над устранением проблемы :)