|
|
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть большая БД (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гб, процесс длится уже час. Ну собственно понятно, что архив большой, времени нужно больше чем обычно. Но есть ли возможность "заглянуть" и посмотреть, действительно ли лог применяется на БД или же сессия просто зависла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 11:21 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
teCaНо есть ли возможность "заглянуть" и посмотреть, действительно ли лог применяется на БД или же сессия просто зависла?Ресурс-монитором посмотрите, есть ли трафик по файлам бакапа, и файлам базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 11:28 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
Этот запрос покажет в столбце "percent_complete" прогресс restore Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 11:35 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
Тяп-ляп, автор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%, но что-то продолжает выполнятся в задании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 11:55 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
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%, но что-то продолжает выполнятся в задании. на винты посмотрите, возможно выделяет место если было расширение на оригинале ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 11:56 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
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% = файл бекапа лога записан в лог сервера, теперь идет реду этого лога где-то были способы посмотреть, до какой даты отресторен лог через дамп процесса рестора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 11:58 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
msLex, Ну процесс монитором вижу что сиквел что-то пишет в файлы этой БД, хотя это тоже не показатель типичного процесса восстановления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 12:07 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
DBCC stackdump(-1,<SPID>) где spid - это SPID процесса рестора лога в папке с логами скуля появятся несколько dump файлов, найдите текстовый и в нем будет что-то типа last redo lsn date ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 12:08 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
teCaНу процесс монитором вижу что сиквел что-то пишет в файлы этой БД, хотя это тоже не показатель типичного процесса восстановления. Это как раз показатель типичного процесса redo, т.е. применения транзакций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 12:09 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
msLexDBCC stackdump(-1,<SPID>) где spid - это SPID процесса рестора лога в папке с логами скуля появятся несколько dump файлов, найдите текстовый и в нем будет что-то типа last redo lsn date Не нашел в дампе last redo lsn date, но в целом процесс понятен, 8996 секунд накатывался этот лог, смотрел ресурс монитором и предложенным запросом. Спасибо за новые знания! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 12:49 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
И еще вопрос, после восстановления бэкапа на базу, можно как то узнать, какой lsn тран лога продолжает цепочку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 12:53 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
teCaИ еще вопрос, после восстановления бэкапа на базу, можно как то узнать, какой lsn тран лога продолжает цепочку? сделайте restore headeronly последнему восстановленному бэкапу лога. там будет LastLSN. с него и начнется следующий бэкап лога в этой цепочке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 14:03 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
Yasha123, У меня логи транзакций бэкапятся ежеминутно допустим. Я делаю полный бэкап исходника, восстанавливаю его на сервере получателе. Те у меня есть восстановленная БД из полного бэкапа и множество бэкапов логов транзакций которые создавались на источнике. Сейчас мне приходится примерно по времени угадывать, когда полный бэкап начался делать, и я перебираю эти логи пока не найду нужный. Думаю, что есть более "цивилизованный" способ сразу выяснить какой лог транзакций следующий в цепочке после восстановления из полного бэкапа. Сиквел ведь как то понимает, тот это лог или не тот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 14:14 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
teCa, очень много слов :) вас чем мой ответ не устроил, вам надо после восстановления полного бэкапа найти нужный лог? у полного бэкапа в Header-e тоже есть FirstLSN, LastLSN. нужный вам LSN находится между этими двумя. если вы даты хотите получить, в том же Header-е есть BackupStartDate/ BackupFinishDate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 14:43 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
Yasha123, Спасибо, просто вы написали, что у бэкапа лога это посмотреть нужно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 14:57 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
teCaYasha123, Спасибо, просто вы написали, что у бэкапа лога это посмотреть нужно) у бэкапа лога уж точно надо смотреть, иначе как понять, с какого LSN он начинается. а ваш вопрос, в том виде как он задан, намекает именно восстановление бэкапа лога, а не полного: "после восстановления бэкапа на базу, можно как то узнать, какой lsn тран лога продолжает цепочку ?" точный LSN находится как раз в бэкапе лога, каждый последующий бэкап лога начинается ровно с того LSN, который указан в LastLSN предыдущего бэкапа лога. а в полном бэкапе о "LSN, продолжающем цепочку" нет ни слова. полный бэкап вообще ничего не знает о бэкапах лога ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 15:14 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
teCaСпасибо, просто вы написали, что у бэкапа лога это посмотреть нужно)В бакапе лога тоже. Вы же цепочку восстанавливаете. Один полный бакап, потом стотыщ бакапов лога. И в каждом бакапе есть FirstLSN, LastLSN teCaСиквел ведь как то понимает, тот это лог или не тот.Сиквел это записывает в sys.database_files См. поля redo_start_lsn, redo_target_lsn, redo_start_fork_guid, redo_target_fork_guid Проще посмотреть в бакапе (полном, а потом в логах), но можно и в самой базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 15:16 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Вижу, что sys.database_files не работает когда база в состоянии Restoring ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 16:28 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
Подскажите еще на счет RESTORE HEADERONLY Собственно я просматриваю RESTORE HEADERONLY того бэкапа, из которого восстанавливал БД. В поле LastLSN я вижу значение, дальше, информация о каждом новом бэкапе логов у меня сохраняется в табличку, в том числе и lsn бэкапа. Но полученный lastlsn FULL бэкапа отсутствует в этой таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 16:42 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
teCaПодскажите еще на счет RESTORE HEADERONLY Собственно я просматриваю RESTORE HEADERONLY того бэкапа, из которого восстанавливал БД. В поле LastLSN я вижу значение, дальше, информация о каждом новом бэкапе логов у меня сохраняется в табличку, в том числе и lsn бэкапа. Но полученный lastlsn FULL бэкапа отсутствует в этой таблице . еще бы. вам же уже написали, полному бэкапу нет никакого дела до бэкапов лога. и его LastLSN никаким боком не совпадет с FirstLSN/LastLSN бэкапа лога. FirstLSN/LastLSN это еги личные LSN, минимум и максимум LSN записей лога, которые вошли в данный полный бэкап. --- еще раз: бэкапы лога связаны друг с другом непосредственно: где остановился предыдущий, там (с того LastLSN) начнется следующий. полный бэкап делается вообще в любой модели и ни о каких бэкапах лога понятия не имеет. его FirstLSN/LastLSN никак с бэкапами логов не связаны. зато не каждый бэкап лога можно накатить на данный полный бэкап. в частности, нельзя накатить бэкап лога, где FirstLSN больше LastLSN полного бэкапа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 17:07 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
Yasha123, Еще больше запутался. Вот на конкретном примере. Сейчас у меня есть БД в режиме Restoring, есть таблица где перечислены все созданные логи транзакций с их lastlsn. Как мне узнать, с какого именно бэкап лога транзакций продолжится цепочка после фулл бэкапа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 17:23 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
teCaYasha123, Еще больше запутался. Вот на конкретном примере. Сейчас у меня есть БД в режиме Restoring, есть таблица где перечислены все созданные логи транзакций с их lastlsn. Как мне узнать, с какого именно бэкап лога транзакций продолжится цепочка после фулл бэкапа? у того, где Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 17:27 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
msLex, Получается lastlsn должен быть в таблице c информацией о бэкапах логов транзакций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 18:19 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
teCa, log_backup_first_lsn и log_backup_last_lsn из RESTORE HEADERONLY бекапов лога full_backup_last_lsn из RESTORE HEADERONLY уже восстановленного фул бекапа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 18:27 |
|
||
|
Опять вопросы по восстановлению transaction logs.
|
|||
|---|---|---|---|
|
#18+
msLex, Благодарю. Написал запрос, который берет lastlsn полного бэкапа, и по списку проверяет все созданные ранее бэкапы логов транзакций и проверяет попадает ли @LastLSNFULL в диапазон @FirstLSN и @LastLSN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2019, 19:29 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39883796&tid=1687031]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 458ms |

| 0 / 0 |
