gifts2017

Настрой свой сетевой бекап базы данных

Опубликовал Александр Хомяк (logarifm) в раздел Администрирование - Архивирование (backup)

Один из вариантов, как корректно необходимо делать сетевой бекап базы данных.

Решил поделится опытом одним из вариантов корректного бекапирования баз данных SQL.

Раскажу сходу о возможном бекапе средствами СКЛ используя netdevice. Используя данную возможность при бекапа базы в 20Гб при сети 1Гб/с бекапится будет больше часа и при этом нагрузка сетевого канала достаточно велика, а также при сбое бекапа тоже не очень хорошо.

Вот скрипт который будет создаст netdevice

sp_addumpdevice 'disk', 'networkdevice',
'\\192.168.1.202\e$\Buckup\net.bck'

Далее, просто создаем Maintance Plane и вешаем бекам на наш 'networkdevice' необходимой СУБД.

Позитив данного решения минимальные трудозатраты  программиста/администратора. Это вполне можно применять на маленьких СУБД.

А вот более сложный механизм:

declare @c varchar(4000)
declare @FileMoved varchar(4000)
declare @NameFile varchar(20)
declare @MM varchar(10)
declare @DD varchar(10)
declare @YYYY varchar(10)
 
declare @resArxiv varchar(4000) 
declare @resMoved varchar(4000)
 
BACKUP DATABASE [Torg] TO DISK = N'D:\SQL_Backup\Diff\Net_Torg.bak'
WITH NOINIT , NOUNLOAD , NAME = N'DataBase backup', NOSKIP , STATS = 10, NOFORMAT
 
 
set @NameFile = 'Net_Torg' -- укажем предполагаемое наименование файла  
set @DD=day(getdate())--день в который делаеться архив
set @MM=month(GetDate())--месяц в который делаеться архив
set @YYYY=year(getdate())--год в который делаеться архив
set @c='rar a "' +'D:\SQL_Backup\Diff\'+@NameFile+'_'+@DD+'_'+@MM+'_'+@YYYY+'.rar " ' +'D:\SQL_Backup\Diff\'+@NameFile+'.bak' 
set @FileMoved ='move D:\SQL_Backup\Diff\'+@NameFile+'_'+@DD+'_'+@MM+'_'+@YYYY+'.rar \\192.168.0.200\Arhiv\Diff_Daily\'
 
exec @resArxiv = master..xp_cmdshell @c

exec @resMoved = master..xp_cmdshell @FileMoved

 

Здесь сначала делается бекап на жесткий диск, а потом уже сжимаются данные архиватором и переносится на сетевой диск. Бекап отлично сжимается и удобно держать их в архивах по днях.

Для этого достаточно этот скрипт дать вашему SQL-Server и повесит на него шедулер и все... Следует помнить, что для SQL серверов 2005 и выше, хранимая процедура "xp_cmdshell" может быть отключенной, для ее подключения можно запустить вот такой скрипт:

EXEC master.dbo.sp_configure 'show advanced options', 1

RECONFIGURE

EXEC master.dbo.sp_configure 'xp_cmdshell', 1

RECONFIGURE

Ну и конечно, чтобы все работало надо иметь соответсвенные права на сервере.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. aryan_spirit 29.10.09 15:10
2. Александр Хомяк (logarifm) 29.10.09 16:42
3. DarkAn DarkAn (DarkAn) 01.11.09 02:11
а у меня блин проблемы на SQL :( Через Maintance Plane - он не хочет делать бэкап на "устройство", хотя в ручном варианте - ни каких проблем, но при этом на диск делать на автомате позволяет, но мне блин на диск не удобно, т.к. не сетевой :(. Но я попробую скриптиком что тут указан воспользоваться для перемещения файлов на сторидж :), но блин хотелось бы запустить на автомате бэкапы на "устройство"
4. Александр Хомяк (logarifm) 01.11.09 13:16
(3) Скрипт можно вешать на "шедулер" и все...
5. Dmitry Dmitry (Dimasik2007) 01.11.09 16:51
6. Андрей Александров (dred2001) 01.02.10 00:58
(3) А не пробовали использовать iSCSI?
например в StarWind бесплатной версии можно создавать образы до 2Тб.
MSSQL не должен отличать обычные диски от дисков iSCSI тогда можно запустить бекапы на автомате.
З.Ы. Сам пока это не реализовал но давно вынашиваю эту идею.
7. Александр Зубарь (azubar) 01.05.12 18:13
(6) У меня NAS QNAP, как на картинке, только попроще модель, так вот почти все они поддерживают iSCSI. Я настроил iSCSI, подключил к серверу Widows Server 2003 (надо скачать и установить пакет поддержки iSCSI + перезагрузка сервера). Бекапы делаются на диск подключенный по iSCSI, но иногда случается что диск "отсоединяется", грешу на сбои в роботе сети.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа