Механизм After-Imaging в OpenEdge
Приложение 9 Восстановление базы данных из AI
Для восстановления используйте тестовую базу данных sports. Но для начала в целях чистоты эксперимента перезапустите на ней After-imaging:
- Остановите базу данных:
proshut ./sports -by
- Деактивируйте After-imaging командой PROUTIL AIMAGE END:
proutil ./sports -C aimage end
- Очистите каталоги с AI-архивами.
- Сформируйте полную резервную копию базы данных:
probkup ./sports ./backup/sports-full.bak
- Активируйте After-Imaging:
proutil ./sports -C aimage begin
- Активируйте AI File Management:
proutil ./sports -C aiarchiver enable
- Запустите базу данных с параметрами <-aiarcdir> и <-aiarcinterval>:
proserve ./sports -aiarcdir ./aiarch1 -aiarcinterval 120
Теперь приступим непосредственно к выполнению практического примера:
- Восстановите полную резервную копию в отдельный заранее созданный каталог, названный, например ./db2:
prorest ./sports ../db1/backup/sports-full.bak
- Подключитесь к оригинальной базе данных и выполните некоторые изменения данных.
Войдите в редактор Procedure Editor:
mpro ./sports
Выполните следующий ABL-код:
Листинг 5 Изменение наименования клиента
FIND LAST CUSTOMER EXCLUSIVE-LOCK. CUSTOMER.NAME = "ТЕСТИРОВАНИЕ ROLL-FORWARD".
Подождите две минуты, чтобы сформировался архив AI-экстента, и выполните еще одно изменение с помощью следующего ABL-кода:
Листинг 6 Удаление всех заказов клиента 2106
FOR EACH ORDER WHERE ORDER.CUSTNUM = 2106 EXCLUSIVE-LOCK. FOR EACH ORDERLINE OF ORDER EXCLUSIVE-LOCK. DELETE ORDERLINE. END. DELETE ORDER. END.
Подождите еще две минуты, чтобы сформировался очередной архивный файл AI-экстента.
Следующий этап – это накат полученных AI-архивов на восстановленную полную резервную копию. Для этого:
- Скопируйте имеющиеся в наличии AI-архивы из каталога ./db1/aiarch1 в созданный новый каталог ./db2/ai/ .
- Используя команду RFUTIL ROLL FORWARD накатите все AI-архивы на восстановленную базу данных с помощью простого скрипта, представленного ниже:
cd ../db2/ai for ai in `ls -1`; do rfutil ../sports -C roll forward -a $ai; done
Если вы всё сделали правильно, то после наката каждого AI-файла на экран будет выводиться приблизительно следующее сообщение:
After-image dates for this after-image file: (1633) Last AIMAGE BEGIN Tue Jul 14 13:18:22 2009 (1640) Last AIMAGE NEW Tue Jul 14 13:43:25 2009 (1641) This is aimage file number 12 since the last AIMAGE BEGIN. (1642) This file was last opened for output on Tue Jul 14 13:43:25 2009. (1643) 21 notes were processed. (1634) 0 in-flight transactions. (3785) 1 transactions were started. (1635) 1 transactions were completed. (11138) At the end of the .ai file, 0 transactions were still active. (1636)
Параллельно эта же информация будет записана в лог базы данных:
T-1121424 I RFUTIL : (451) Roll forward session begin for valeriy on /dev/pts/12. T-1121424 I RFUTIL : (5326) Begin Physical Redo Phase at 0 . T-1121424 I RFUTIL : (7161) Physical Redo Phase Completed at blk 1 off 5977 upd 0. T-1121424 I RFUTIL : (13547) At end of Physical redo, transaction table size is 5940. T-1121424 I RFUTIL : (660) Beginning roll forward of after-image file /dsk3/users/valeriy/lecAI/db2/ai/dsk3~bank~users~valeriy~lecAI~db1~sports.20090714.131822.00000012.sports.a6. T-1121424 I RFUTIL : (1633) After-image dates for this after-image file: T-1121424 I RFUTIL : (1640) Last AIMAGE BEGIN Tue Jul 14 13:18:22 2009 T-1121424 I RFUTIL : (1641) Last AIMAGE NEW Tue Jul 14 13:43:25 2009 T-1121424 I RFUTIL : (1642) This is aimage file number 12 since the last AIMAGE BEGIN. T-1121424 I RFUTIL : (1643) This file was last opened for output on Tue Jul 14 13:43:25 2009. T-1121424 I RFUTIL : (1634) 21 notes were processed. T-1121424 I RFUTIL : (3785) 0 in-flight transactions. T-1121424 I RFUTIL : (1635) 1 transactions were started. T-1121424 I RFUTIL : (11138) 1 transactions were completed. T-1121424 I RFUTIL : (1636) At the end of the .ai file, 0 transactions were still active. T-1121424 I RFUTIL : (662) Roll forward completed. T-1121424 I RFUTIL : (334) rfutil -C roll forward session end.
Метка:After-Imaging