powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
8 сообщений из 8, страница 1 из 1
Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
    #40111546
Shipovnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени года.
Конфиг журналов (и для прода, и для теста):
Код: plaintext
1.
2.
3.
4.
5.
6.
Сохранение в журнале для восстанов.включено (LOGRETAIN) = OFF
Первый метод архивирования журнала       (LOGARCHMETH1) = DISK:C:\DB2LogArchive\
Опции для logarchmeth1                    (LOGARCHOPT1) = 
Второй метод архивирования журнала       (LOGARCHMETH2) = OFF
Опции для logarchmeth2                    (LOGARCHOPT2) = 
Страниц журнала при построении индекса  (LOGINDEXBUILD) = OFF

Что хочу: например, в пятницу восстановить на тестовом сервере онлайн-копию БД с прода и накатить журналы до состояния "на сейчас" . При этом, на про

Что делал:

На проде в понедельник:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
CONNECT TO LIBRA
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS
CONNECT RESET
ARCHIVE LOG FOR DATABASE LIBRA
BACKUP DATABASE LIBRA ONLINE TO C:\Backup\DB2\Auto\LIBRA\ WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 COMPRESS INCLUDE LOGS WITHOUT PROMPTING
CONNECT TO LIBRA USER db2admin USING           
PRUNE HISTORY 20211108011326 WITH FORCE OPTION AND DELETE
UNQUIESCE DATABASE


На тестовом сервере в пятницу:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CONNECT TO LIBRA
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS
PRUNE HISTORY 20211112235959 WITH FORCE OPTION AND DELETE
CONNECT RESET
RESTORE DATABASE LIBRA FROM \\192.168.0.228\c$\Backup\DB2\Auto\LIBRA TAKEN AT 20211112010013 INTO LIBRA WITH 2 BUFFERS BUFFER 1024 REPLACE EXISTING PARALLELISM 1 WITHOUT PROMPTING
xcopy \\192.168.0.228\c$\DB2LogArchive\DB2\LIBRA\NODE0000 C:\DB2LogArchive\DB2\LIBRA\NODE0000 /H /Y /C /R /S
ROLLFORWARD DATABASE LIBRA TO END OF LOGS
ROLLFORWARD DATABASE LIBRA COMPLETE
CONNECT TO LIBRA
UNQUIESCE DATABASE
CONNECT RESET


И получается так, что на тестовом сервере не накатываются часть данных с прода, выполненные с понедельника по пятницу.
Что здесь не так?
...
Рейтинг: 0 / 0
Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
    #40111575
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shipovnix,

Добрый день.

1. Если это не опечатка, и вы действительно вставили команду операционной системы (xcopy) вот так в скрипт SQL команд для выполнения его командным процессором db2, то эта команда просто не выполнится.
Чтоб команды ОС в SQL скриптах выполнять, надо перед ними знак ! ставить.

2. Если "на сейчас" хочется восстанавливаться, то можно и активные логи тоже копировать в overflow log path, например, чтоб по ним накатываться.

3. После rollforward ... to end of logs поставьте rollforward ... query status и смотрите, накатилось оно по всем доступным логам - архивным и тем, что в overflow. Если нет, ищите почему rollforward их не нашёл.
...
Рейтинг: 0 / 0
Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
    #40111638
Shipovnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein

1. Если это не опечатка, и вы действительно вставили команду операционной системы (xcopy) вот так в скрипт SQL команд для выполнения его командным процессором db2, то эта команда просто не выполнится.
Чтоб команды ОС в SQL скриптах выполнять, надо перед ними знак ! ставить.

Все нормально, это выжимка из скрипта db2clp, команда xcopy выполняется.

Mark Barinstein

2. Если "на сейчас" хочется восстанавливаться, то можно и активные логи тоже копировать в overflow log path, например, чтоб по ним накатываться.

"Можно" активные логи копировать или "нужно"? Только архивными логами здесь не обойтись? Вообще, как быстро db2 скидывет в архивный лог журналы? Пока тестировал на копеечной базе, по ощущениям — моментально, и в целом скрипт работал нормально . На более-менее крупной БД как будто далеко не сразу.
...
Рейтинг: 0 / 0
Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
    #40111667
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shipovnix
"Можно" активные логи копировать или "нужно"? Только архивными логами здесь не обойтись?

Зависит от того, конечно, сколько транзакций вы хотите восстановить.
Db2 работает примерно так: как только очередной файл лога (размер его задается параметром базы LOGFILSIZ в 4K страницах) заполнился, то он поступает в очередь на архивирование. Журналирование продолжается в новый файл. Причем лог может быть и заархивирован, и остаться в активном пути, т.к. db2 не удаляет заархивированный файл из активного пути, пока он всё еще нужен для восстановления после сбоя (т.е. пока он активен).
Вы должны понимать, что если вы этот новый файл не скопируете, то информация из него не применится на восстановленной базе.
Много там информации или мало, зависит, конечно, от нагрузки, размера файла лога и т.д. Если у вас, например, низкая нагрузка в базе и большой размер лога, то может получиться, что в том логе, в который в данный момент идет запись, может накопиться информация за довольно большой промежуток времени.

Поэтому - обойтись одними архивными логами, конечно, можно. Но какую-то часть последних транзакций вы не восстановите.

Shipovnix
Вообще, как быстро db2 скидывет в архивный лог журналы?

Информация об архивировании логов записывается в диагностический журнал.
Этот текстовый файл или файлы (db2diag.log*) можно смотреть как на сервере, так и запросом в базу. Например, за последний день:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT 
  TIMESTAMP
, TIMESTAMPDIFF (2, CHAR (TIMESTAMP - LEAD (TIMESTAMP) OVER (ORDER BY TIMESTAMP DESC))) AS SEC_FROM_PREV 
, MSG
FROM TABLE (PD_GET_DIAG_HIST (NULL, NULL, NULL, CURRENT TIMESTAMP - 1 DAY, NULL, -2))
WHERE FUNCTION = 'sqlpgArchiveLogFile' AND MSG LIKE 'ADM1844I %'
ORDER BY TIMESTAMP DESC
...
Рейтинг: 0 / 0
Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
    #40111732
Shipovnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
Спасибо большое!
Каша в голове более-менее разлеглась по полочкам.
...
Рейтинг: 0 / 0
Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
    #40113657
Shipovnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

И всё равно осталась масса вопросов.
Делаю резервную копию на проде:
Код: sql
1.
2.
22.11.2021 09:31:26 BACKUP DATABASE LIBRA ONLINE TO C:\Backup\DB2\Auto\LIBRA WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 COMPRESS INCLUDE LOGS WITHOUT PROMPTING
22.11.2021 10:06:08 DB20000I  Команда BACKUP DATABASE выполнена успешно.


То есть, подразумевается, что INCLUDE LOGS включает все журналы, необходимые для восстановления из бэкапа.
Тем не менее, при восстановлении на удаленном сервере я получаю:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
22.11.2021 10:18:11 RESTORE DATABASE LIBRA FROM \\192.168.0.228\c$\Backup\DB2\Auto\LIBRA TAKEN AT 20211122093126 INTO LIBRA WITH 2 BUFFERS BUFFER 1024 REPLACE EXISTING PARALLELISM 1 WITHOUT PROMPTING
22.11.2021 11:23:57 SQL2540W  Восстановление успешно, однако при работе утилиты Database "2539".

22.11.2021 11:24:01 ROLLFORWARD DATABASE LIBRA TO END OF LOGS
22.11.2021 11:24:12 SQL4970N  Восстановление с повтором транзакций для базы данных "LIBRA" нельзя довести до заданной конечной точки (конца журналов или момента времени) на разделах базы данных "0". Восстановление с повтором транзакций остановлено на файле журнала "S0000225.LOG".

22.11.2021 11:24:13 ROLLFORWARD DATABASE LIBRA COMPLETE
22.11.2021 11:24:25 SQL1276N  Базу данных "LIBRA" нельзя вывести из состояния отложенного повтора транзакций, пока при повторе не будет пройден момент времени "2021-11-22-05.06.02.000000 UTC", потому что узел "0" содержит информацию более позднюю, чем указанное время.


Так чего же ей не хватает, если по описанию директивы INCLUDE LOGS включенных в бэкап журналов должно хватать для восстановления?
...
Рейтинг: 0 / 0
Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
    #40113696
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shipovnix,

По умолчанию логи из архива не копируются из него при RESTORE.
См. описание опции LOGTARGET команды RESTORE DATABASE

RESTORE DATABASELOGTARGET directory
Non-snapshot restores:

The absolute path name of an existing directory on the database server to be used as the target directory for copying active log files from a backup image. If this option is specified, any active log files that are contained within the backup image will be copied into the target directory. If this option is not specified, active log files that are contained within a backup image will not be copied.
Ну и в опции OVERFLOW LOG PATH команды ROLLFORWARD надо потом указать этот каталог явно, если он не является тем каталогом, в которых ROLLFORWARD эти логи и так ищет (активные и архивные пути, указанный путь в параметре базы OVERFLOWLOGPATH).
...
Рейтинг: 0 / 0
Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
    #40113785
Shipovnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

Спасибо, Марк!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Восстановление БД с онлайн-копии + накат журналов на тестовом сервере
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (8): Анонимы (5), Google Bot, Yandex Bot, Bing Bot 1 мин.
x
x
Закрыть


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