Поиск по этому блогу

вторник, 18 января 2011 г.

Администрирование DB2. Backup, Restore и их логи. Часть 2

Администрирование DB2. Backup, Restore и их логи. Часть 2. Практика. 

 
Создаем резервную копию.
CONNECT TO CLIENTPF;
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
CONNECT RESET;
BACKUP DATABASE CLIENTPF TO "D:\DB2LOGS\CLIENTPF\BACKUP" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING;
CONNECT TO CLIENTPF;
UNQUIESCE DATABASE;
CONNECT RESET;

QUIESCE DATABASE - стабилизируем бд, к стабилизированной бд могут подключаться только администраторы (SYSADM). Если вы активировали базу данных при помощи оператора ACTIVATE db алиас-базы-данных, перед началом автономного резервного копирования ее нужно деактивировать DEACTIVATE db алиас-базы-данных
QUIESCE DATABASE immediate
CONNECT RESET
DEACTIVATE DATABASE алиас-базы-данных 
PARALLELISM - определяет количество процессов или потоков, которые запускаются для считывания информации из бд. Каждый поток назначается для резервного копирования конкретного табличного пространства, как только он отрабатывает "свое" табличное пространство - приступает к копированию следующего. Увеличение количества процессов (потоков) призвано ускорить работу, однако, как и любое многопоточное приложение за это придется платить ресурсами - процессора и памяти.
BUFFERS BUFFER 1024 - размер буфера резервного копирования и количество буферов.

online или offline копии? В первом случае пользователи могут подключаться к бд. ИМХО, если Вы делаете полное резервное копирование, то пользователям нечего делать в базе.

Включение файлов журналов в образ резервной копии (include logs)
При выполнении операции резервного копирования в оперативном режиме можно задать, чтобы в образ резервной копии были включены файлы журналов, необходимые для восстановления базы данных. Это означает, что если потребуется передача образов резервных копий на узел аварийного восстановления, вам самим не нужно будет отправлять файлы журнала по отдельности или компоновать их друг с другом. Кроме того, не придется определять, какие файлы журналов необходимы для гарантии согласованности оперативной резервной копии. Этим обеспечивается некоторая защита от удаления файлов журналов, требуемых для успешного восстановления. Чтобы использовать эту возможность, задайте опцию INCLUDE LOGS команды BACKUP DATABASE. Если эта опция задана, утилита резервного копирования усекает текущий активный файл журнала и копирует необходимый набор экстентов журнала в образ резервной копии.
Чтобы восстановить файлы журналов из образа резервной копии, воспользуйтесь опцией LOGTARGET команды RESTORE DATABASE и укажите полный путь, существующий на сервере DB2. После этого утилита восстановления базы данных запишет файлы из образа резервной копии в указанный путь назначения. Если файл журнала с таким же именем уже существует в пути назначения, операция восстановления завершится неудачно и будет возвращена ошибка. Если опция LOGTARGET не задана, файлы журналов не будут восстановлены из образа резервной копии.
Пример.
Чтобы создать образ резервной копии, содержащий журналы, для переноса на удаленный узел:
backup db sample online to /dev3/backup include logs
Для восстановления этого образа резервной копии, задайте путь в параметре
LOGTARGET и задайте тот же путь для операции повтора транзакций:
restore db sample from /dev3/backup logtarget /dev3/logs
rollforward db sample to end of logs and stop overflow log path /dev3/logs


Наименование резервной копии
Имена файлов для созданных образов резервных копий состоят из нескольких компонентов: алиас_базы_данных.тип.имя_экземпляра.NOD
Ennnn.CATNnnnn.отметка_времени .порядковый_номер ( алиас_бд.тип\имя_экз.\NODEnnnn\CATNnnnn\ггггммдд\ччммсс.пор_номер)
Например:
SAMPLE.0\DB2\NODE0000\CATN0000\20010320\122644.001

Тип операции резервного копирования; 0 - полное резервное копирование уровня базы данных, 3 - резервное копирование уровня табличного пространства, 4 - образ резервной копии, созданный командой LOAD...COPY TO.
Имя экземпляра Имя текущего экземпляра (от 1 до 8 символов), взятое из переменной среды DB2INSTANCE.
Номер узла Номер раздела базы данных. В однораздельной среде баз данных это всегда NODE0000. В многораздельных средах баз данных это NODExxxx, где xxxx - номер раздела баз данных, заданный в файле db2nodes.cfg.
Номер раздела каталога Номер раздела каталога базы данных. В однораздельной среде баз данных это всегда CATN0000. В многораздельных средах баз данных это CATNxxxx, где xxxx - номер раздела баз данных, заданный в файле db2nodes.cfg. Отметка времени 14-символьное представление даты и времени выполнения резервного копирования в виде ггггммддччннсс, где: v гггг - год (с 1995 до 9999) v мм - месяц (от 01 до 12) v дд - день месяца (от 01 до 31)

О чем может рассказать резервная копия. Вывод информации о резервном копировании. db2ckbkp.
Для извлечения информации из резервной копии служит утилита db2ckbkp, она способна показывать информацию о резервных копиях, которая хранится в заголовках самой резервной копии, а также проверять резервную копию, определение целостности, возможности восстановления из образа.
Опции (прочие опции в справке)
-t Выводит подробную информацию о табличных пространствах в образе, включая информацию о контейнерах.
-T Выводит ту же информацию, что и опция - t, но не проверяет образ. Эта опция несовместима с другими опциями.
-h Показывает информацию заголовка носителя, включая имя и путь имя и путь образа, ожидаемые утилитой восстановления.
-o Выводит подробную информацию из заголовков объектов.

Пример. Вывод информации о копии. Опция -h: информация заголовка носителя, включая имя и путь имя и путь образа, ожидаемые утилитой восстановления, время создания копии, тип резервной копии, пути к логам и прочее, плюс выполняет тестирование копии.
db2ckbkp -h D:\Backups\TEST.0\DB2\NODE0000\CATN0000\20091026\164719.001
=====================
MEDIA HEADER REACHED:
=====================
        Server Database Name           -- TEST
        Server Database Alias          -- TEST
        Client Database Alias          -- TEST
        Timestamp                      -- 20091026164719
        Database Partition Number      -- 0
        Instance                       -- DB2
        Sequence Number                -- 1
        Release ID                     -- A00
        Database Seed                  -- 4AE611A6
        DB Comment's Codepage (Volume) -- 0
        DB Comment (Volume)            -- БАЗА TEST КОПИЯ СТРУКТУРЫ
        DB Comment's Codepage (System) -- 0
        DB Comment (System)            -- БАЗА TEST КОПИЯ СТРУКТУРЫ
        Authentication Value           -- 255
        Backup Mode                    -- 0
        Includes Logs                  -- 0
        Compression                    -- 0
        Backup Type                    -- 0
        Backup Gran.                   -- 0
        Status Flags                   -- 1
        System Cats inc                -- 1
        Catalog Partition Number       -- 0
        DB Codeset                     -- 1251
        DB Territory                   --
        LogID                          -- 1256542430
        LogPath                        -- D:\DB2\NODE0000\SQL00001\SQLOGDIR\
        Backup Buffer Size             -- 8392704
        Number of Sessions             -- 1
        Platform                       -- 5
 The proper image path would be:
TEST.0\DB2\NODE0000\CATN0000\20091026\164719.001
[1] Buffers processed:  ######
Image Verification Complete — successful.

Информация о табличных пространствах в копии.
db2ckbkp -t D:\Backups\VETERANS.0\DB2\NODE0000\CATN0000\20091026\164719.001
Пример -T, информация о табличных пространствах
BE_TEST_TS // имя табличного пространства
                           ID: 3   // его идентификатор                    
                  extent_size: 32
                prefetch_size: 32
                      version: 6                     
             Full Backup Time: 00000000 = "19700101080000"
             Last Backup Time: 00000000 = "19700101080000"
                   page_size: 32768             
                Container CB
                                 Type: 0                          
                                 Name: d:\048\BE_TEST_TS
// перед нами табличное пространство типа  SMS (управляется системой, контейнеры помещяются в директории)

LIST   UTILITIES. Мониторинг   хода   выполнения   операций   резервного   копирования,   восстановления   и   повтора   транзакций.     
Чтобы отслуживать ход выполнения операций резервного копирования, восстановления, повтора транзакций достаточно выполнить команду
       list   utilities   show   detail  

Пример   вывода   для   мониторинга   производительности   операции   резервного   копирования   автономной   базы   данных:      
LIST   UTILITIES   SHOW   DETAIL         
ID                           =   2      
Type                         =   BACKUP     
Database   Name                =   SAMPLE      
Description                  =   offline   db      
Start   Time             =   10/30/2010   11:05:21.746123      
Throttling:       Priority                     =   Unthrottled      
Progress   Monitoring:       Estimated   Percentage   Complete      =   20           
Total   Work   Units       =   20232453   bytes            
Completed   Work   Units   =   230637   bytes           

Не работает в db2 7 (8.1.6.664) и ниже

Для   операций   резервного   копирования   указывается   начальная   оценка   числа   байтов   для   обработки, в разделе (Progress   Monitoring)   Показанные   байты   не   соответствуют   размеру   образа,   и   их   не   следует   использовать   как   оценку   размера   образа   резервной   копии.   В   действительности   образ   может   быть   намного   меньше,   если   он   инкрементный   или   сжатый.  
Для   операций   восстановления   начальная   оценка   указывается   UNKNOWN.  

Примеры восстановления бд.
Прежде чем приступить непосредственно к выполнению этой задачи следует вкратце уяснить некоторые сведения о табличных пространствах и их типах.
в db2 они бывают двух типов:
SMS - System manage, управляются системой, контейнеры хранятся в определенной директории.
DMS - Database manage, управляются базой данных, контейнеры хранятся в файлах.


Чтобы перенаправлять контейнеры табличных пространств мы должны понимать где они хранятся, для этого можно провести своего рода предварительную подготовку — исследование БД.
Список табличных пространств в БД мы можем получить командой
db2 list tablespaces show detail

 ID табличного пространства                 = 3
 Имя                                        = TS_REGDATA1
 Тип                                    = Пространство, управл // так и не понятно кем оно управляемое
...
 Число контейнеров                          = 2


Как видим из этого вывода все еще не понятен тип табличного пространства. кем она управл?. Прим. Возможно эта ошибка уже пофиксена, если не ошибаюсь в англоязычной версии это сообщение вполне себе влезает.
Далее мы можем получить более подробную информацию о контейнерах для этого табличного пространства - db2 list tablespace containers for [указываем ID пространства]  show detail.
В нашем случае это db2 list tablespace containers for 3 show detail

            Контейнеры табличных пространств для табличного пространства 3
Табличное пространство типа  DMS (управляются базой данных, контейнеры хранятся в файлах)
 ID контейнера                                 = 0
 Имя                                           = C:\DB2\REGION\C_REGDATA.1
 Тип                                    = Файл
 Всего страниц                                 = 524288
 Используется страниц                          = 524272
 Доступно                                      = Да
 ID контейнера                                 = 1
 Имя                                           = C:\DB2\REGION\C_REGDATA.2
 Тип                                    = Файл
 Всего страниц                                 = 524288
 Используется страниц                          = 524272
 Доступно                                      = Да
Теперь понятно, что контейнеры хранятся в файлах C:\DB2\REGION\C_REGDATA.1 и ... C_REGDATA.2


Восстановление с перенаправлением табличного пространства.
Общий сценарий восстановления с перенаправлением
Шаг 1. Введите команду RESTORE DATABASE с опцией REDIRECT.
     restore db mydb replace existing redirect
Опция replace existing говорит о том, что мы собираемся заменить существующую бд mydb.
После успешного завершения шага 1 и перед выполнением шага 3 операцию восстановления можно прервать, введя команду:
    restore db mydb abort
Шаг 2. Вводим команду SET TABLESPACE CONTAINERS для каждого табличного пространства, чьи контейнеры требуется переопределить.
set tablespace containers for 5 using (file ’f:\ts3con1’ 20000, file ’f:\ts3con2’ 20000)
Проверяем  : LIST TABLESPACE CONTAINERS.
Шаг 3. Завершение восстановления. После успешного завершения шагов 1 и 2 введите команду:
     restore db mydb continue
Если шаг 3 завершается неудачно, или если операция восстановления была прервана, перенаправленное восстановление можно перезапустить с шага 1.

Восстановление DMS табличных пространств
>db2 restore database REGION from "D:/backups" redirect  WITHOUT PROMPTING;
Переопределяем файлы для контейнеров для табличного пространства TS_REGDATA1
>db2 set tablespace containers for 3 using
(
file 'C:\DB2\REGION\C_REGDATA.1' 2000000, // первый контейнер
file 'C:\DB2\REGION\C_REGDATA.2' 2000000, // второй контейнер
) ;

>db2 restore db REGION continue;

Табличное пространство типа  SMS (управляется системой, контейнеры помещяются в директории) 
db2 => list tablespace containers for 5 show detail
            Контейнеры табличных пространств для табличного пространства 5
 ID контейнера                                 = 0
 Имя                                           = C:\048\BE_TEST_TEMP_TS
 Тип                                    = Путь
 Всего страниц                                 = 1
 Используется страниц                          = 1
 Доступно                                      = Да

Восстановление SMS табличных пространств
>db2 restore database test  from "D:/backups" redirect  WITHOUT PROMPTING;
Устанавливаем путь для контейнера
>db2 set tablespace containers for 5 using (path 'C:\048\BE_TEST_TEMP_TS') ;

!!! Для того, чтобы получить информацию о типе табличного пространства (SMS или DMS, где хранились и прочее) вовсе не обязательно проводить исследования самой базы данных, достаточно иметь копию бд, утилита db2ckbkp -t (она рассмотрена выше) поможет получить информацию о табличных пространствах !!!

Примечание. Из справки. При создании контейнеров табличных пространств DB2 UDB создает все уровни каталогов, если они еще не существуют. Например, если задан контейнер /project/user_data/container1, а каталог /project не существует, DB2 UDB создаст каталоги /project и /project/user_data.


Версия 9,
Пример команды RESTORE DATABASE с опцией REDIRECT и опцией GENERATE SCRIPT:
db2 restore db test from /home/jseifert/backups taken at 20050304090733 redirect generate script test_node0000.clp
Эта команда создает сценарий перенаправленного восстановления на клиенте test_node0000.clp.
Откройте сценарий перенаправленного восстановления в текстовом редакторе, чтобы внести все необходимые изменения. Можно изменить:
▪    Опции восстановления
▪    Пути автоматического хранения
▪    Размещение и пути контейнеров   
Запустите измененный сценарий перенаправленного восстановления. Например: db2 -tvf test_node0000.clp