Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Glory
А вы прочитали, что попадает в разностный бэкап ?


Да и насколько я понимаю, то туда попадают все изменения с последнего фулл бэкапа. Поэтому и не понимаю, почему после фулл бэкапа размер дифф бэкапа больше чем за предыдущий день. Он же не должен цеплять данные за предыдущие дни? Фулл раз в день.
14 апр 16, 09:02    [19054367]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
Поэтому и не понимаю, почему после фулл бэкапа размер дифф бэкапа больше чем за предыдущий день.

Наверное потому, что вы не то или не так сравниваете.
14 апр 16, 09:05    [19054375]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Glory, не подскажете куда копать? С чем сравнивать? Можно как то узнать к какому фулу привязан дифф?

Хотя восстановление из бэкапов проходит нормально - последний дифф накатывается на последний фулл.
14 апр 16, 09:19    [19054416]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
не подскажете куда копать?

Что копать то ?

Sertik
С чем сравнивать?

А что вы сейчас сравниваете то ? Свои мысли с предположениями ?

Sertik
Можно как то узнать к какому фулу привязан дифф?

Никакие бэкапы ни к каким бэкапам не привязаны.
В заголовке бэкапа есть служебная информация, которая дает ответ на то, можно ли этот бэкап применить на текущем шаге цепочки восстановления.
14 апр 16, 09:32    [19054470]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Glory
Наверное потому, что вы не то или не так сравниваете.


Это же вы сказали что я не то сравниваю...

Я просто не понимаю, почему растет дифф по сравнению с предыдущим днем, после фулл бэкапа. Он растет так, словно я не делаю фулл, а это не так. Может файлик поможет...

К сообщению приложен файл (log.txt - 14Kb) cкачать
14 апр 16, 09:39    [19054502]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
Это же вы сказали что я не то сравниваю...

Потому что вы уверяете, что вы что-то сравниваете. На словах

Sertik
Может файлик поможет...

Ага теперь надо из файлика узнать, какие цифирки вы сравнили между собой ?
14 апр 16, 09:41    [19054517]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Glory,
размеры диф бэкапа после фулл бэкапа.
1 день: фулл - 71567618 КБ
дифф - 2692592 КБ
2 день: фулл - 71618664 КБ
дифф - 3093577 КБ
3 день: фулл - 71712222 КБ
дифф - 3978081 КБ (уже значительно вырос по сравнению с 1 днем, а фулл делался)
4 день: фулл - 71750723 КБ
дифф - 4087706 КБ (вот фигли он растет?)
14 апр 16, 09:48    [19054555]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
дифф - 3978081 КБ (уже значительно вырос по сравнению с 1 днем, а фулл делался)

А какой отношение этот разностный бэкап имеет к разностным бэкапам от 1го дня ?
Еще раз спрошу - вы точно читали о том, какие данные попадают в разностный бэкап ?
Полный бэкап сбрасывает битовый флаг у страниц данных, а любое изменение устанавливает этот битовый флаг.
И в разностный бэкап попадают все страницы с установленным флагом.
Поэтому ваш вопрос "вот фигли он растет?" означает "вот фигли кто-то меняет данные в базе ?"
14 апр 16, 09:54    [19054587]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
stdvb
Member

Откуда:
Сообщений: 38
Sertik
(вот фигли он растет?)

Четыре дня - слишком маленькая выборка, подождите хотя бы две недели, а потом сравнивайте.
14 апр 16, 09:57    [19054610]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Glory
Поэтому ваш вопрос "вот фигли он растет?" означает "вот фигли кто-то меняет данные в базе ?"


Согласен, данные меняются, но обычно одинаково каждый день. P.S.: Обожаю ваши комментарии...


stdvb
Sertik
(вот фигли он растет?)

Четыре дня - слишком маленькая выборка, подождите хотя бы две недели, а потом сравнивайте.


Спасибо.
14 апр 16, 10:06    [19054665]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
но обычно одинаково каждый

Это вы тоже по какому то "файлику" определили ?
14 апр 16, 10:10    [19054685]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Glory
Sertik
но обычно одинаково каждый

Это вы тоже по какому то "файлику" определили ?


Зачем Вы включаете тролля?

В БД файлике...
14 апр 16, 10:20    [19054757]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
Glory
пропущено...

Это вы тоже по какому то "файлику" определили ?


Зачем Вы включаете тролля?

В БД файлике...

Потому что вы транслируете сюда свои домыслы. Вместо конкретных цифр. Или вы предлагаете приехать к вам и посмотреть на ваш "в БД файлик" ?
14 апр 16, 10:25    [19054783]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Sertik
размеры диф бэкапа после фулл бэкапа.
Вы лучше выполните команду RESTORE HEADERONLY для нескольких файлов бакапа - полного и парочки дифф. И увидите, почему дифф растёт, по значениям DifferentialBaseLSN, DifferentialBaseGUID и т.п.
ИМХО наиболее вероятно то, что у вас ошибка в командах бакапа, и полный бакап фактически не делается, соответственно дифф отсчитывается от какого то старого бакапа (который возможно уже стёрли).
Второй вариант - у вас в базе делают изменения, объём которых по каким то причинам растёт каждый день.

Других вариантов собственно и нет, только эти два.
14 апр 16, 10:37    [19054855]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
iljy
Member

Откуда:
Сообщений: 8711
Sertik,

выложите команды, которыми делаете бакапы, и полный, и диф.
14 апр 16, 10:38    [19054864]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
iljy
выложите команды, которыми делаете бакапы, и полный, и диф.
Да-да, и скрипт, и результат RESTORE HEADERONLY (оформленный в виде таблички)
тогда можно предметно сказать, а не гадать, что это там, у кого то, на каком то компьютере, с неизвестным ПО, на неизвестной версии MSSQL файлик увеличивается :-)
14 апр 16, 10:44    [19054909]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
alexeyvg
Других вариантов собственно и нет, только эти два.
Да, ещё третий вариант - вы файлик заполняете бакапами - вы, может быть, NOINIT или EXPIREDATE забыли убрать из нового скрипта...
14 апр 16, 10:47    [19054928]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
[quot alexeyvg]
Sertik

Других вариантов собственно и нет, только эти два.


y есть еще вариант, что полный бекап делается с COPY_ONLY хинтом
14 апр 16, 11:40    [19055349]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
[quote WarAnt]
alexeyvg
Sertik
Других вариантов собственно и нет, только эти два.


y есть еще вариант, что полный бекап делается с COPY_ONLY хинтом
Ну да, этот вариант я тоже имел в виду, говоря "ИМХО наиболее вероятно то, что у вас ошибка в командах бакапа"
Сам то бакап наверное делается, там же файл создаётся...
14 апр 16, 12:31    [19055783]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
[src]declare @today datetime
set @today=(select dateadd(day,datediff(day,0,getdate()),0))
--full 1 раз в день
if	(select count(*) from msdb..backupset where database_name='DataBase' and  type = 'D' and dateadd(day,datediff(day,0,backup_start_date),0)=@today)=0
begin
	declare @backupSetId as int			
	declare @dtp nvarchar(500)
	declare @exdate datetime			
		
	set @dtp=(select '\\srv\\DataBaseDB\DataBase_FULL'+(select CONVERT(nvarchar(30), GETDATE(), 112)+replace(CONVERT(nvarchar(30), GETDATE(), 114),':',''))+'.bak')
	set @exdate =(select dateadd(DD,6,getdate()))--6 дней
	BACKUP DATABASE [DataBase] TO  DISK = @dtp
	WITH EXPIREDATE = @exdate, COMPRESSION, NAME = N'DataBase-Full Database Backup', SKIP, STATS = 10, CHECKSUM
	select @backupSetId = position from msdb..backupset where database_name=N'DataBase' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'DataBase' )
	if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''DataBase'' not found.', 16, 1) end
	RESTORE VERIFYONLY FROM  DISK = @dtp WITH  FILE = @backupSetId
	return
end

--log - каждые 2 часа
set @dtp=(select '\\srv\\DataBaseDB\DataBase_LOG'+(select CONVERT(nvarchar(30), GETDATE(), 112)+replace(CONVERT(nvarchar(30), GETDATE(), 114),':',''))+'.bak')
set @exdate =(select dateadd(DD,1,getdate()))--1 день
BACKUP LOG [DataBase] TO  DISK = @dtp 
WITH EXPIREDATE = @exdate, COMPRESSION, NAME = N'DataBase-Transaction Log  Backup', SKIP,  STATS = 10, CHECKSUM
select @backupSetId = position from msdb..backupset where database_name=N'DataBase' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'DataBase' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''DataBase'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = @dtp WITH  FILE = @backupSetId


--diff - каждые 2 часа
set @dtp=(select '\\srv\\DataBaseDB\DataBase_DIFF'+(select CONVERT(nvarchar(30), GETDATE(), 112)+replace(CONVERT(nvarchar(30), GETDATE(), 114),':',''))+'.bak')
if GETDATE() > dateadd(hh,21,@today)
begin
	set @exdate =(select dateadd(dd,6,dateadd(MINUTE,35,@today)))--6 дней
end
else
	set @exdate =(select dateadd(hh,2,getdate()))--2 часа
BACKUP DATABASE [DataBase] TO  DISK = @dtp
WITH EXPIREDATE = @exdate, DIFFERENTIAL , COMPRESSION, NAME = N'DataBase-Diff Database Backup', SKIP,  STATS = 10, CHECKSUM
select @backupSetId = position from msdb..backupset where database_name=N'DataBase' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'DataBase' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''DataBase'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = @dtp WITH  FILE = @backupSetId
[/SRC]

Вот весь скрипт
14 апр 16, 13:14    [19056160]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Думаю я действительно рано забил тревогу, вся эта логика только 4 дня работает, стоит подождать недельку, а потом судить.

А вот EXPIREDATE зачем убирать? У меня по нему удаляются файлы из папки бэкапов.
14 апр 16, 13:40    [19056326]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
А вот EXPIREDATE зачем убирать? У меня по нему удаляются файлы из папки бэкапов.

И как же это происходит ? Какой командой ?
14 апр 16, 13:42    [19056337]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Glory,
declare @backupSetId as int			
declare @dtp nvarchar(500)
declare @exdate datetime			
declare @today datetime
set @today=(select dateadd(day,datediff(day,0,getdate()),0))
	
--чистка старья
create table #oldbackup(oldfile varchar(500))
insert into #oldbackup
select 
 physical_device_name
from  
  msdb..backupset MST 
inner join msdb.dbo.backupmediafamily BKMF on BKMF.media_set_id = MST.media_set_id
where mst.database_name='DataBaseDB' and mst.type <> 'D' and
	DATEDIFF(HOUR, mst.expiration_date, GETDATE()) between 0 and 2

declare @cnt int
set @cnt=(select count(*) from #oldbackup)
declare @Delete varchar(500)
declare @oldfile varchar(500)
		DECLARE FCursor CURSOR FOR
		SELECT oldfile
		FROM #oldbackup
		OPEN FCursor
		WHILE @cnt > 0
		   BEGIN
				FETCH NEXT FROM FCursor into @oldfile
				set @delete ='del '+@oldfile
				exec xp_cmdshell @delete
				set @cnt=@cnt-1
		   END;																	
		CLOSE FCursor;
		DEALLOCATE FCursor;
drop table #oldbackup   
14 апр 16, 13:57    [19056448]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sertik
Glory,
declare @backupSetId as int			
declare @dtp nvarchar(500)
declare @exdate datetime			
declare @today datetime
set @today=(select dateadd(day,datediff(day,0,getdate()),0))
	
--чистка старья
create table #oldbackup(oldfile varchar(500))
insert into #oldbackup
select 
 physical_device_name
from  
  msdb..backupset MST 
inner join msdb.dbo.backupmediafamily BKMF on BKMF.media_set_id = MST.media_set_id
where mst.database_name='DataBaseDB' and mst.type <> 'D' and
	DATEDIFF(HOUR, mst.expiration_date, GETDATE()) between 0 and 2

declare @cnt int
set @cnt=(select count(*) from #oldbackup)
declare @Delete varchar(500)
declare @oldfile varchar(500)
		DECLARE FCursor CURSOR FOR
		SELECT oldfile
		FROM #oldbackup
		OPEN FCursor
		WHILE @cnt > 0
		   BEGIN
				FETCH NEXT FROM FCursor into @oldfile
				set @delete ='del '+@oldfile
				exec xp_cmdshell @delete
				set @cnt=@cnt-1
		   END;																	
		CLOSE FCursor;
		DEALLOCATE FCursor;
drop table #oldbackup   

Это чтобы сложнее было ?
Вот что будет с файлами, если не будет записей в backupset ?
14 апр 16, 14:01    [19056490]     Ответить | Цитировать Сообщить модератору
 Re: Разборки с бэкапом  [new]
Sertik
Member

Откуда:
Сообщений: 44
Glory
Это чтобы сложнее было ?
Вот что будет с файлами, если не будет записей в backupset ?


Это наследство.
Файлы удалю вручную, если они реально лежат дольше положенного срока, но еще не было такого.
14 апр 16, 14:15    [19056587]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить