Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Опять вопросы по восстановлению transaction logs. / 25 сообщений из 27, страница 1 из 2
31.10.2019, 11:21
    #39883488
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
Всем привет.

Есть большая БД (10Тб), есть её новая копия на другом сервере, на исходнике делаю бэкап лога транзакций и этот лог разворачиваю на получателе. Но при первом развертывании лога транзакций на получателе процесс затянулся, я вижу сессию вот в таком виде:

автор80 SUSPENDED NT SERVICE\SQLSERVERAGENT V-BGS01 . Blogans RESTORE LOG 1188 2 10/31 10:15:00 SQLAgent - TSQL JobStep (Job 0x9CF084BFBB1F6E4D9BF7F16BD5989581 : Step 1) 80 0
80 SUSPENDED V-BGS01 . Blogans RESTORE LOG 509219 1 10/31 10:15:00 SQLAgent - TSQL JobStep (Job 0x9CF084BFBB1F6E4D9BF7F16BD5989581 : Step 1) 80 0

Размер первого тран лога 114гб, процесс длится уже час. Ну собственно понятно, что архив большой, времени нужно больше чем обычно. Но есть ли возможность "заглянуть" и посмотреть, действительно ли лог применяется на БД или же сессия просто зависла?
...
Рейтинг: 0 / 0
31.10.2019, 11:28
    #39883494
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCaНо есть ли возможность "заглянуть" и посмотреть, действительно ли лог применяется на БД или же сессия просто зависла?Ресурс-монитором посмотрите, есть ли трафик по файлам бакапа, и файлам базы.
...
Рейтинг: 0 / 0
31.10.2019, 11:35
    #39883501
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
Этот запрос покажет в столбце "percent_complete" прогресс restore
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
    qs.session_id, 
    qs.start_time,
    datediff(s, qs.start_time, getdate()) as duration_sec,
    qs.status, qs.wait_type, qs.command, qs.last_wait_type, 
    qs.percent_complete, 
    qt.text, qs.total_elapsed_time/1000 as [total_elapsed_time, сек],
    qs.wait_time/1000 as [wait_time, сек], (qs.total_elapsed_time - qs.wait_time)/1000 as [work_time, сек]
from sys.dm_exec_requests as qs
    cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
...
Рейтинг: 0 / 0
31.10.2019, 11:55
    #39883514
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
Тяп-ляп,

автор80 2019-10-31 10:15:00.507 5867 running NULL RESTORE LOG PAGEIOLATCH_EX 100 RESTORE LOG [Blogans] FROM DISK = '\\Blogans\20191030\Blogans_tlog_20191030_1532.BTL' WITH REPLACE, STATS = 20, NORECOVERY 5866 0 5866

Судя по этому столбцу 100%, но что-то продолжает выполнятся в задании.
...
Рейтинг: 0 / 0
31.10.2019, 11:56
    #39883516
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCaТяп-ляп,

автор80 2019-10-31 10:15:00.507 5867 running NULL RESTORE LOG PAGEIOLATCH_EX 100 RESTORE LOG [Blogans] FROM DISK = '\\Blogans\20191030\Blogans_tlog_20191030_1532.BTL' WITH REPLACE, STATS = 20, NORECOVERY 5866 0 5866

Судя по этому столбцу 100%, но что-то продолжает выполнятся в задании.
на винты посмотрите, возможно выделяет место если было расширение на оригинале
...
Рейтинг: 0 / 0
31.10.2019, 11:58
    #39883517
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCaТяп-ляп,

автор80 2019-10-31 10:15:00.507 5867 running NULL RESTORE LOG PAGEIOLATCH_EX 100 RESTORE LOG [Blogans] FROM DISK = '\\Blogans\20191030\Blogans_tlog_20191030_1532.BTL' WITH REPLACE, STATS = 20, NORECOVERY 5866 0 5866

Судя по этому столбцу 100%, но что-то продолжает выполнятся в задании.
100% = файл бекапа лога записан в лог сервера, теперь идет реду этого лога

где-то были способы посмотреть, до какой даты отресторен лог через дамп процесса рестора.
...
Рейтинг: 0 / 0
31.10.2019, 12:07
    #39883523
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
msLex,

Ну процесс монитором вижу что сиквел что-то пишет в файлы этой БД, хотя это тоже не показатель типичного процесса восстановления.
...
Рейтинг: 0 / 0
31.10.2019, 12:08
    #39883525
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
DBCC stackdump(-1,<SPID>)

где spid - это SPID процесса рестора лога

в папке с логами скуля появятся несколько dump файлов, найдите текстовый и в нем будет что-то типа last redo lsn date
...
Рейтинг: 0 / 0
31.10.2019, 12:09
    #39883526
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCaНу процесс монитором вижу что сиквел что-то пишет в файлы этой БД, хотя это тоже не показатель типичного процесса восстановления.
Это как раз показатель типичного процесса redo, т.е. применения транзакций.
...
Рейтинг: 0 / 0
31.10.2019, 12:49
    #39883550
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
msLexDBCC stackdump(-1,<SPID>)

где spid - это SPID процесса рестора лога

в папке с логами скуля появятся несколько dump файлов, найдите текстовый и в нем будет что-то типа last redo lsn date

Не нашел в дампе last redo lsn date, но в целом процесс понятен, 8996 секунд накатывался этот лог, смотрел ресурс монитором и предложенным запросом.

Спасибо за новые знания!
...
Рейтинг: 0 / 0
31.10.2019, 12:53
    #39883556
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
И еще вопрос, после восстановления бэкапа на базу, можно как то узнать, какой lsn тран лога продолжает цепочку?
...
Рейтинг: 0 / 0
31.10.2019, 14:03
    #39883610
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCaИ еще вопрос, после восстановления бэкапа на базу, можно как то узнать, какой lsn тран лога продолжает цепочку?
сделайте restore headeronly последнему восстановленному бэкапу лога.
там будет LastLSN.
с него и начнется следующий бэкап лога в этой цепочке
...
Рейтинг: 0 / 0
31.10.2019, 14:14
    #39883619
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
Yasha123,

У меня логи транзакций бэкапятся ежеминутно допустим. Я делаю полный бэкап исходника, восстанавливаю его на сервере получателе. Те у меня есть восстановленная БД из полного бэкапа и множество бэкапов логов транзакций которые создавались на источнике. Сейчас мне приходится примерно по времени угадывать, когда полный бэкап начался делать, и я перебираю эти логи пока не найду нужный. Думаю, что есть более "цивилизованный" способ сразу выяснить какой лог транзакций следующий в цепочке после восстановления из полного бэкапа. Сиквел ведь как то понимает, тот это лог или не тот.
...
Рейтинг: 0 / 0
31.10.2019, 14:43
    #39883648
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCa,

очень много слов :)
вас чем мой ответ не устроил,
вам надо после восстановления полного бэкапа найти нужный лог?
у полного бэкапа в Header-e тоже есть FirstLSN, LastLSN.
нужный вам LSN находится между этими двумя.

если вы даты хотите получить, в том же Header-е есть BackupStartDate/ BackupFinishDate
...
Рейтинг: 0 / 0
31.10.2019, 14:57
    #39883673
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
Yasha123,

Спасибо, просто вы написали, что у бэкапа лога это посмотреть нужно)
...
Рейтинг: 0 / 0
31.10.2019, 15:14
    #39883688
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCaYasha123,

Спасибо, просто вы написали, что у бэкапа лога это посмотреть нужно)
у бэкапа лога уж точно надо смотреть, иначе как понять, с какого LSN он начинается.
а ваш вопрос, в том виде как он задан, намекает именно восстановление бэкапа лога,
а не полного:
"после восстановления бэкапа на базу, можно как то узнать, какой lsn тран лога продолжает цепочку ?"
точный LSN находится как раз в бэкапе лога,
каждый последующий бэкап лога начинается ровно с того LSN, который указан в LastLSN предыдущего бэкапа лога.

а в полном бэкапе о "LSN, продолжающем цепочку" нет ни слова.
полный бэкап вообще ничего не знает о бэкапах лога
...
Рейтинг: 0 / 0
31.10.2019, 15:16
    #39883690
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCaСпасибо, просто вы написали, что у бэкапа лога это посмотреть нужно)В бакапе лога тоже.

Вы же цепочку восстанавливаете. Один полный бакап, потом стотыщ бакапов лога.
И в каждом бакапе есть FirstLSN, LastLSN

teCaСиквел ведь как то понимает, тот это лог или не тот.Сиквел это записывает в sys.database_files
См. поля redo_start_lsn, redo_target_lsn, redo_start_fork_guid, redo_target_fork_guid

Проще посмотреть в бакапе (полном, а потом в логах), но можно и в самой базе.
...
Рейтинг: 0 / 0
31.10.2019, 16:28
    #39883747
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
alexeyvg,

Вижу, что sys.database_files не работает когда база в состоянии Restoring
...
Рейтинг: 0 / 0
31.10.2019, 16:42
    #39883756
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
Подскажите еще на счет RESTORE HEADERONLY

Собственно я просматриваю RESTORE HEADERONLY того бэкапа, из которого восстанавливал БД.
В поле LastLSN я вижу значение, дальше, информация о каждом новом бэкапе логов у меня сохраняется в табличку, в том числе и lsn бэкапа. Но полученный lastlsn FULL бэкапа отсутствует в этой таблице.
...
Рейтинг: 0 / 0
31.10.2019, 17:07
    #39883779
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCaПодскажите еще на счет RESTORE HEADERONLY

Собственно я просматриваю RESTORE HEADERONLY того бэкапа, из которого восстанавливал БД.
В поле LastLSN я вижу значение, дальше, информация о каждом новом бэкапе логов у меня сохраняется в табличку, в том числе и lsn бэкапа. Но полученный lastlsn FULL бэкапа отсутствует в этой таблице .
еще бы.
вам же уже написали, полному бэкапу нет никакого дела до бэкапов лога.
и его LastLSN никаким боком не совпадет с FirstLSN/LastLSN бэкапа лога.
FirstLSN/LastLSN это еги личные LSN,
минимум и максимум LSN записей лога, которые вошли в данный полный бэкап.
---
еще раз: бэкапы лога связаны друг с другом непосредственно:
где остановился предыдущий, там (с того LastLSN) начнется следующий.

полный бэкап делается вообще в любой модели и ни о каких бэкапах лога понятия не имеет.
его FirstLSN/LastLSN никак с бэкапами логов не связаны.

зато не каждый бэкап лога можно накатить на данный полный бэкап.
в частности, нельзя накатить бэкап лога, где FirstLSN больше LastLSN полного бэкапа.
...
Рейтинг: 0 / 0
31.10.2019, 17:23
    #39883790
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
Yasha123,

Еще больше запутался. Вот на конкретном примере. Сейчас у меня есть БД в режиме Restoring, есть таблица где перечислены все созданные логи транзакций с их lastlsn. Как мне узнать, с какого именно бэкап лога транзакций продолжится цепочка после фулл бэкапа?
...
Рейтинг: 0 / 0
31.10.2019, 17:27
    #39883796
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCaYasha123,

Еще больше запутался. Вот на конкретном примере. Сейчас у меня есть БД в режиме Restoring, есть таблица где перечислены все созданные логи транзакций с их lastlsn. Как мне узнать, с какого именно бэкап лога транзакций продолжится цепочка после фулл бэкапа?

у того, где
Код: sql
1.
full_backup_last_lsn between log_backup_first_lsn и log_backup_last_lsn
...
Рейтинг: 0 / 0
31.10.2019, 18:19
    #39883841
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
msLex,

Получается lastlsn должен быть в таблице c информацией о бэкапах логов транзакций?
...
Рейтинг: 0 / 0
31.10.2019, 18:27
    #39883845
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
teCa,


log_backup_first_lsn и log_backup_last_lsn из RESTORE HEADERONLY бекапов лога

full_backup_last_lsn из RESTORE HEADERONLY уже восстановленного фул бекапа
...
Рейтинг: 0 / 0
31.10.2019, 19:29
    #39883871
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять вопросы по восстановлению transaction logs.
msLex,
Благодарю. Написал запрос, который берет lastlsn полного бэкапа, и по списку проверяет все созданные ранее бэкапы логов транзакций и проверяет попадает ли @LastLSNFULL в диапазон @FirstLSN и @LastLSN
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Опять вопросы по восстановлению transaction logs. / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]