1) Компьютер WinSRV под управлением Windows 2008 с установленной на нём СУБД SQL Server 2012 Express и развёрнутой базой MyDatabase. Будем считать, что аккаунт с административными правами называется winuser.
2) Компьютер DebSRV под управлением Debian 6.0, доступный по ssh (порт 12345) с логином debuser, и содержащий папку, предназначенную для резервных копий: /media/backup/.
Задача:
Настроить ежедневное резервное копирование баз с первого компьютера на второй.
Решение:
Выбираем инструментарий. Предлагаем на стороне WinSRV использовать:
1) Архиватор 7-zip, установленный в папке c:\Program Files\7-Zip
2) rsync из пакета cygwin. Этот пакет установлен в папке c:\cygwin64 и помимо rsync содержит, в частности утилиты ssh.exe и ssh-keygen.exe, которые нам понадобятся.
На компьютере WinSRV создаём рабочую папку для задачи архивирования, c:\backup.
В этой папке создаём два вспомогательных файла.
Файл backup.sql:
-- создаём резервную копию базы MyDatabase BACKUP DATABASE MyDatabase TO DISK='c:\backup\MyDatabase.bak' -- создаём резервные копии системных баз BACKUP DATABASE master TO DISK='c:\backup\master.bak' BACKUP DATABASE model TO DISK='c:\backup\model.bak' BACKUP DATABASE msdb TO DISK='c:\backup\msdb.bak'Файл filelist.txt:
c:\backup\MyDatabase.bak c:\backup\master.bak c:\backup\model.bak c:\backup\msdb.bakСоздаём командный файл backup.bat:
rem создаём бэкапы баз "c:\Program Files\Microsoft SQL Server\110\Binn\SQLCMD.exe" -U (логин к базе) -P (пароль к базе) -S . -i c:\backup\backup.sql -o c:\backup\log.txt rem архивируем бэкапы в один файл "c:\Program Files\7-Zip\7z.exe" -a -r -p(пароль к архиву) c:\backup\MSSQL_%date:~10,4%%date:~7,2%%date:~4,2%.7z @c:\backup\filelist.txt -xr!*.log rem передаём архив на сервер DebSRV при помощи rsync c:\cygwin64\bin\rsync.exe -e "/bin/ssh.exe -p 12345" -t /cygdrive/c/backup/MSSQL_%date:~10,4%%date:~7,2%%date:~4,2%.7z debuser@DebSRV:/media/backup rem удаляем лишние файлы del c:\backup\MSSQL_%date:~10,4%%date:~7,2%%date:~4,2%.7z c:\backup\MyDatabase.bak c:\backup\master.bak c:\backup\model.bak c:\backup\msdb.bak
Настраиваем доступ на сервер DebSRV по ssh без пароля. Мы сделали это так:
1) На сервере WinSRV создали приватный и публичный ключ командой:
c:\cygwin64\bin\ssh-keygen.exe -t dsa -N ''результатом работы этой утилиты являются два файла, c:\cygwin64\home\winuser\.ssh\id_dsa и c:\cygwin64\home\winuser\.ssh\id_dsa.pub
2) Закинули публичную часть ключа на сервер DebSRV (предполагается, что папка /home/debuser/.ssh/ на этом сервере уже есть):
c:\cygwin64\bin\rsync.exe -e "/bin/ssh.exe -p 12345" -t /home/winuser/.ssh/id_dsa.pub debuser@DebSRV:~дальше заходим на сервер DebSRV по ssh
ssh debuser@DebSRV -p 12345и добавляем содержимое файла id_dsa.pub в файл ~/.ssh/authorized_keys2:
cat id_dsa.pub >> ~/.ssh/authorized_keys2 rm id_dsa.pub
После этого на компьютере WinSRV в планировщике задач ставим на выполнение файл c:\backup\backup.bat от имени winuser с нужным расписанием, и всё.
Комментариев нет:
Отправить комментарий