Решил поделится опытом одним из вариантов корректного бекапирования баз данных 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 Ну и конечно, чтобы все работало надо иметь соответсвенные права на сервере. |