Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Нарушение цепочки lsn при создании разностного бэкапа.  [new]
nk13
Member

Откуда:
Сообщений: 137
Microsoft SQL Server 2012.
При последовательном создании полного и разностного бэкапа, возникает разрыв в цепочке lsn.

Создание:
автор
-- полный
BACKUP DATABASE [DatabaseName] TO DISK = N'...\BACKUP_FULL.bak' NOFORMAT, NOINIT, NAME = N'Database_Full', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 5

--разностный
BACKUP DATABASE [DatabaseName] TO DISK = N'...\BACKUP_DIFF.bak' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'Database_Diff', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 5, CHECKSUM



Проверяю:
автор
RESTORE HEADERONLY
FROM DISK = N'...\BACKUP_FULL.bak'
WITH NOUNLOAD;

RESTORE HEADERONLY
FROM DISK = N'...\BACKUP_DIFF.bak'
WITH NOUNLOAD;


Получаю
автор
полный:
FirstLSN LastLSN CheckpointLSN
58292000000025400156 58292000000032800001 58292000000025400156

разностный:
FirstLSN LastLSN CheckpointLSN
58292000000032900053 58292000000035300001 58292000000032900053


Как видно, первый lsn разностного бэкапа больше, а не равен, как по идее должно быть, последнему полного.

Ну и соответственно, восстанавливаюсь без проблем полный, а вот при восстановлении разностного в гуи выдает ошибку:
автор
ЗАГОЛОВОК: Microsoft SQL Server Management Studio
------------------------------

Не удается создать план восстановления из-за нарушения непрерывности цепочки LSN. (Microsoft.SqlServer.SmoExtended)

Чтобы получить справку, щелкните: http://go.microsoft.com/fwlink?ProdName=Microsoft SQL Server&ProdVer=11.0.3000.0 ((SQL11_PCU_Main).121019-1325 )&LinkId=20476


Пробовал делать восстановление скриптами:
автор
USE [master]
RESTORE DATABASE [DatabaseName] FROM DISK = N'...\BACKUP_FULL.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5
GO

USE [master]
RESTORE DATABASE [DatabaseName] FROM DISK = N'...\BACKUP_DIFF.bak' WITH FILE = 1, RECOVERY, NOUNLOAD, STATS = 5
GO


Полный успешно, разностный выдает:
автор
Сообщение 3136, уровень 16, состояние 1, строка 3
Невозможно восстановить разностную резервную копию, так как база данных не была восстановлена в более раннем состоянии.
Сообщение 3013, уровень 16, состояние 1, строка 3
RESTORE DATABASE прервано с ошибкой.


Прошу понять, с чем может быть связана проблема.
27 апр 16, 13:22    [19112495]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
nk13
Member

Откуда:
Сообщений: 137
Была похожая тема, но ответа на свой вопрос я в ней не нашел: https://www.sql.ru/forum/1066189-1/ne-udaetsya-sozdat-plan-vosstanovleniya-iz-za-narusheniya-nepreryvnosti-cepochki-lsn
27 апр 16, 13:23    [19112504]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
nk13
Microsoft SQL Server 2012.
Лучше напишите select @@version
nk13
Создание:
автор
-- полный
BACKUP DATABASE [DatabaseName] TO DISK = N'...\BACKUP_FULL.bak' NOFORMAT, NOINIT, NAME = N'Database_Full', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 5

--разностный
BACKUP DATABASE [DatabaseName] TO DISK = N'...\BACKUP_DIFF.bak' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'Database_Diff', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 5, CHECKSUM
А почему вы указали NOFORMAT, NOINIT, SKIP?
nk13
Прошу понять, с чем может быть связана проблема.
ИМХО либо у вас в файле много бакапов, либо кто то делает бакап между вашими бакапами.
27 апр 16, 16:43    [19113757]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
nk13
Member

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

Microsoft SQL Server 2012 - 11.0.5058.0 (X64) May 14 2014 18:34:29 Copyright (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

Модель восстановления конкретной базы - простая.


alexeyvg
А почему вы указали NOFORMAT, NOINIT, SKIP?

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

Что касается самих параметров SKIP устанавливает "сроки хранения" бэкапов, NO SKIP - без сроков, собственно мне они не нужны, я сам отслеживаю актуальность бэкапов и скриптом удаляю старые.
NOFORMAT, NOINIT - не перезаписывать и не создавать новые резервные наборы носителей. Честно говоря, для меня это немного смутный момент, использовал всегда один и тот же набор и не парился, я не знаю, на что это особо влияет. Полагаю это более важно при сохранении на ленты или разбитие бэкапа на несколько файлов.

автор
ИМХО либо у вас в файле много бакапов, либо кто то делает бакап между вашими бакапами.

И в разностном и в полном только один бэкап. Пробовал проверять, ради интереса вставлял в один файл несколько разностных бэкапов, командой RESTORE HEADERONLY это отчетливо видно. Так что уверен, что в одном файле полный бэкап, в другом файле созданный сразу после полного - разностный, тоже в единственном числе.

А вот насчет создания бэкапа между бэкапами даже не знаю. Где-то в логах это можно отследить? Не в ручную, не в виде джобов ничего создаваться не должно было.
28 апр 16, 05:45    [19115429]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
nk13
Member

Откуда:
Сообщений: 137
автор
Дата,Источник,Серьезность,Сообщение
04/27/2016 16:18:04,Backup,Неизвестно,BACKUP DATABASE WITH DIFFERENTIAL successfully processed 3898 pages in 2.696 seconds (11.294 MB/sec).
04/27/2016 16:18:04,Backup,Неизвестно,Database differential changes were backed up. Database: *DatabaseName*<c/> creation date(time): 2015/01/29(11:55:01)<c/> pages dumped: 3978<c/> first LSN: 58292:329:53<c/> last LSN: 58292:353:1<c/> full backup LSN: 58284:487:29<c/> number of dump devices: 1<c/> device information: (FILE=1<c/> TYPE=DISK: {'...\BACKUP_DIFF.bak'}). This is an informational message. No user action is required.
04/27/2016 16:18:01,Backup,Неизвестно,BACKUP DATABASE successfully processed 272821 pages in 27.892 seconds (76.416 MB/sec).
04/27/2016 16:18:01,Backup,Неизвестно,Database backed up. Database: *DatabaseName*<c/> creation date(time): 2015/01/29(11:55:01)<c/> pages dumped: 272906<c/> first LSN: 58292:254:156<c/> last LSN: 58292:328:1<c/> number of dump devices: 1<c/> device information: (FILE=1<c/> TYPE=DISK: {'...\BACKUP_FULL.bak'}). This is an informational message only. No user action is required.



Это лог, который записался. Привожу, как есть, единственное в нем перед опубликованием поменял название базы и путь бэкапов.
28 апр 16, 05:59    [19115434]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
nk13
Member

Откуда:
Сообщений: 137
при копировании умудрился случайно слово удалить в команде на создание полного бэкапа

автор
BACKUP DATABASE [DatabaseName] TO DISK = N'...\BACKUP_FULL.bak' WITH NOFORMAT, NOINIT, NAME = N'Database_Full', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 5


У меня все правильно, ну чтобы вопросов не было.
28 апр 16, 06:08    [19115440]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
o-o
Guest
nk13
автор
полный:
FirstLSN LastLSN CheckpointLSN
58292000000025400156 58292000000032800001 58292000000025400156

разностный:
FirstLSN LastLSN CheckpointLSN
58292000000032900053 58292000000035300001 58292000000032900053


Как видно, первый lsn разностного бэкапа больше, а не равен, как по идее должно быть, последнему полного.

Идея у вас неправильная.
Если бы речь шла о бэкапах лога, тогда другое дело.
LastLSN указывает на LSN, с которого начнется следующий бэкап лога.
Но вы же сейчас пишете о простой модели.
При чем тут тогда FirstLSN, LastLSN?
У вас должны совпасть database_backup_lsn дифференциальных с CheckpointLSN соответствующих полных.
Прилагаю правильную картинку неразорванной цепочки бэкапов full diff diff diff full diff diff diff

К сообщению приложен файл. Размер - 13Kb
28 апр 16, 08:18    [19115573]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
o-o
Guest
[quot nk13]
автор
04/27/2016 16:18:04,Backup,Неизвестно,BACKUP DATABASE WITH DIFFERENTIAL successfully processed 3898 pages in 2.696 seconds
...
first LSN: 58292:329:53<c/> last LSN: 58292:353:1<c/> full backup LSN: 58284:487:29

вот тут дифф бэкап написал, к какому полному он относится. Этот бэкап давнее того полного, что вы привели. Наверное, тот полный бэкап, что сделан перед указанным дифференциальным и приведен вами в сообщении, сделан с copy only, раз сделанный после него дифф все еще отсчитывается от сделанного ранее полного
28 апр 16, 08:48    [19115631]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
o-o
Guest
Подтверждающая картинка.
Добавились 2 бэкапа: полный с copy_only и дифф после него. Прилагаю кусок еррорлога, где они зафиксированы (похоже на кусок вашего, да?)
Но на что ссылается последний дифф?
Смотрим database_backup_lsn, там чекпойнтовый lsn полного бэкапа, но не последнего, сделанного с copy_only, а нормального полного

К сообщению приложен файл. Размер - 36Kb
28 апр 16, 09:32    [19115760]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
o-o
Guest
Ну и последнее, как проверить предположение.
Когда делаете restore headeronly полному бэкапу, посмотрите на столбец IsCopyOnly.
Если там 1, то это все объясняет
28 апр 16, 09:37    [19115772]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
nk13
Member

Откуда:
Сообщений: 137
o-o,

Да, почитал еще раз по lsn, вы правы. Спасибо, за подсказку!!!

Предыдущий бэкап уже удалил, так что точно не вспомню указывал ли эту опцию или нет, но сейчас создал новый и там все корректно DatabaseBackupLSN разностного совпадает с CheckpointLSN полного. И скриптом (приводил выше) восстанавливается на ура, а вот гуи, как выдавала ошибку при восстановлении разностного так и выдает.

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

Восстанавливаю на другом сервере.
автор
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
28 апр 16, 11:40    [19116547]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
o-o
Guest
nk13
Предыдущий бэкап уже удалил, так что точно не вспомню указывал ли эту опцию или нет

но историю-то бэкапов вы ж не чистили?
вот в ней и посмотрите is_copy_only, заполнив в коде имя базы и время примерное бэкапа
(в своем же посте можете его найти)
select name, first_lsn, last_lsn, type, is_copy_only       
from msdb..backupset
where database_name = '...'
      and backup_start_date between ... 
28 апр 16, 11:50    [19116628]     Ответить | Цитировать Сообщить модератору
 Re: Нарушение цепочки lsn при создании разностного бэкапа.  [new]
nk13
Member

Откуда:
Сообщений: 137
o-o,

Да, было на одном полном бэкапе (проверял разные варианты бэкапирования). Видимо на нем я и начал проверять восстановление разностного бэкапа через скрипты, а дальше уже на lsn смотрел.
28 апр 16, 12:49    [19117013]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить