Настройка HADR на серверах DB2 и Настройка ACR на серверах Websphere

в 11:55, , рубрики: WebSphere, Администрирование баз данных, метки:

HADR инструмент DB2, реализующий зеркалирование баз данных. ACR механизм в Websphere позволяющий в случае падения базы, автоматически переключать клиентов на резервный сервер. Ниже расскажу как настраивал обе эти штуки 8-)

Настройка HADR на серверах DB2

По русски настройка и описание HADR описана тут
Полный справочник по HADR на английском тут

Настроить HADR можно через графичку и через консоль. Мы будем делать это через терминал. Поскольку через графичку это муторно, чревато ошибками как со стороны системы, так и со стороны настраивающего. У меня с гуями несложилось… 8-)

Рассмотрим пример настройки HADR между серверами SPDDATSERV (основная) и RSPDDATSERV (резервная).
База данных DAT6.
1. Для начала на основном сервере нужно изменить параметры конфигурации чтобы та могла удовлетворять условиям и оптимально работала в HADR.

UPDATE DB CFG FOR DAT6 USING LOGINDEXBUILD ON;
UPDATE DB CFG FOR DAT6 USING INDEXREC RESTART;
UPDATE DB CFG FOR DAT6 USING LOGSECOND 10;

2. Далее делаем бэкап этой базы в папку G:DB2Dump

-- Отключаем пользователей
CONNECT TO DAT6;
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
UNQUIESCE DATABASE;
CONNECT RESET;
-- Собственно само резервное копирование
BACKUP DB DAT6 TO G:DB2Dump COMPRESS;</code>

3. Переносим бэкап на резервную систему в директорию G:2restorehadr
4. На резервном сервер поднимаем бэкап этой базы

RESTORE DATABASE DAT6 FROM "G:2restorehadr" TO "D:" INTO DAT6 WITHOUT PROMPTING;

5. На обоих серверах редактируем файл C:WindowsSystem32driversetcservices, где для каждой базы указываем имя службы и порт.
Например:
DB2_HADR_DAT 55001/tcp
DB2_HADR_DAT2 55002/tcp
DB2_HADR_DAT3 55003/tcp
DB2_HADR_DAT4 55004/tcp
DB2_HADR_DAT5 55005/tcp
DB2_HADR_DAT6 55006/tcp

Здесь зарезервированы порты для 6 баз. К примеру для БД DAT5 зарезервирован порт 55005 и служба называется DB2_HADR_DAT5. Лучше чтобы имена служб и порты совпадали на обоих системах.

6. На основном сервере изменяем параметры конфигурации HADR для базы

 UPDATE DB CFG FOR DAT6 USING HADR_SYNCMODE SYNC;
 UPDATE DB CFG FOR DAT6 USING HADR_TIMEOUT 120;
 UPDATE DB CFG FOR DAT6 USING HADR_LOCAL_HOST SPDDATSERV;
 UPDATE DB CFG FOR DAT6 USING HADR_LOCAL_SVC DB2_HADR_DAT6;
 UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_HOST RSPDDATSERV;
 UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_SVC DB2_HADR_DAT6;
 UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_INST DB2;

HADR_SYNCMODE — Режим работы синхронный, что позволяет полностью исключить возможность потери данных (подробней про режимы по ссылке выше)
HADR_TIMEOUT — Таймаут соединения
HADR_LOCAL_HOST — Имя локальной машины
HADR_LOCAL_SVC — Название службы добавленной в пункте 5
HADR_REMOTE_HOST — Имя резервной машины
HADR_REMOTE_SVC — аналогично параметру HADR_LOCAL_SVC для резервной системы
7. На основном сервере указываем БД для автоматического перенаправления клиентов

UPDATE ALTERNATE SERVER FOR DATABASE DAT6 USING HOSTNAME RSPDDATSERV PORT 50000;

8. На основном сервере заносим в каталог узел, а затем и базу с резервного сервера

CATALOG TCPIP NODE DB2RES REMOTE RSPDDATSERV SERVER 50000 REMOTE_INSTANCE DB2;
CATALOG DATABASE DAT6 AS RDAT6 AT NODE DB2RES;

9. Проделываем похожие манипуляции с резервным сервером

-- Параметры конфигурации HADR для базы
UPDATE DB CFG FOR DAT6 USING HADR_SYNCMODE SYNC;
UPDATE DB CFG FOR DAT6 USING HADR_TIMEOUT 120;
-- Тут указываем уже адрес резервного сервера
UPDATE DB CFG FOR DAT6 USING HADR_LOCAL_HOST RSPDDATSERV;
UPDATE DB CFG FOR DAT6 USING HADR_LOCAL_SVC DB2_HADR_DAT6;
-- Тут адрес основного
UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_HOST SPDDATSERV;
UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_SVC DB2_HADR_DAT6;
UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_INST DB2;
-- Конфигурируем базу данных для перенаправления клиентов,указываем основной сервер
UPDATE ALTERNATE SERVER FOR DATABASE DAT6 USING HOSTNAME SPDDATSERV PORT 50000;
-- Каталагизируем основную систему и базу
CATALOG TCPIP NODE DB2DOR REMOTE SPDDATSERV SERVER 50000 REMOTE_INSTANCE DB2;
CATALOG DATABASE DAT6 AS DDAT6 AT NODE DB2DOR;

10. Сначала запускаем HADR на резерве

DEACTIVATE DATABASE DAT6;
START HADR ON DATABASE DAT6 AS STANDBY;

11. Затем на основном

DEACTIVATE DATABASE DAT6;
START HADR ON DATABASE DAT6 AS PRIMARY;

Ниже листинг файликов HADR.txt с обеих систем. В этом файле пронумерован порядок запуска скриптов.
Создав такие же файлики на серверах, можно легко и пошагово настроить HADR подменяя только название баз.! Главное не забывать править файл services!
Файл с основной системы:

 -- 1. Изменить параметры конфигурации для первичной базы
 UPDATE DB CFG FOR DAT6 USING LOGINDEXBUILD ON;
 UPDATE DB CFG FOR DAT6 USING INDEXREC RESTART;
 UPDATE DB CFG FOR DAT6 USING LOGSECOND 10;
 
 -- 2. Делаем бэкап
 CONNECT TO DAT6;
 QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
 UNQUIESCE DATABASE;
 CONNECT RESET;
 BACKUP DB DAT6 TO G:DB2Dump COMPRESS;
 
 -- 4. Изменить параметры конфигурации HADR для первичной базы
 UPDATE DB CFG FOR DAT6 USING HADR_SYNCMODE SYNC;
 UPDATE DB CFG FOR DAT6 USING HADR_TIMEOUT 120;
 UPDATE DB CFG FOR DAT6 USING HADR_LOCAL_HOST SPDDATSERV;
 UPDATE DB CFG FOR DAT6 USING HADR_LOCAL_SVC DB2_HADR_DAT6;
 UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_HOST RSPDDATSERV;
 UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_SVC DB2_HADR_DAT6;
 UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_INST DB2;
 
 -- 5. Конфигурировать базы данных для перенаправления клиента 
 UPDATE ALTERNATE SERVER FOR DATABASE DAT6 USING HOSTNAME RSPDDATSERV PORT 50000;
 
 -- 6. Каталагизируем резервную систему и базу
 CATALOG TCPIP NODE DB2RES REMOTE RSPDDATSERV SERVER 50000 REMOTE_INSTANCE DB2;
 CATALOG DATABASE DAT6 AS RDAT6 AT NODE DB2RES;
 
 -- 11. После на основной
 DEACTIVATE DATABASE DAT6;
 START HADR ON DATABASE DAT6 AS PRIMARY;

Файл с резервной:

 -- 3. Поднимаем бэкап базы
 RESTORE DATABASE DAT6 FROM "G:2restorehadr" TO "D:" INTO DAT6 WITHOUT PROMPTING;
 
 -- 7. Изменить параметры конфигурации HADR для резервной базы
 UPDATE DB CFG FOR DAT6 USING HADR_SYNCMODE SYNC;
 UPDATE DB CFG FOR DAT6 USING HADR_TIMEOUT 120;
 UPDATE DB CFG FOR DAT6 USING HADR_LOCAL_HOST RSPDDATSERV;
 UPDATE DB CFG FOR DAT6 USING HADR_LOCAL_SVC DB2_HADR_DAT6;
 UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_HOST SPDDATSERV;
 UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_SVC DB2_HADR_DAT6;
 UPDATE DB CFG FOR DAT6 USING HADR_REMOTE_INST DB2;
 
 -- 8. Конфигурировать базы данных для перенаправления клиента 
 UDADATE ALTERNATE SERVER FOR DATABASE DAT6 USING HOSTNAME SPDDATSERV PORT 50000;
 
 -- 9. Каталагизируем основную систему и базу
 CATALOG TCPIP NODE DB2DOR REMOTE SPDDATSERV SERVER 50000 REMOTE_INSTANCE DB2;
 CATALOG DATABASE DAT6 AS DDAT6 AT NODE DB2DOR;
 
 -- 10. Запустить HADR на резервной базе
 DEACTIVATE DATABASE DAT6;
 START HADR ON DATABASE DAT6 AS STANDBY;

Настройка планировщика на серверах DB2

После каждого перезапуска сервера или службы DB2 работа HARD приостанавливается, до активации БД (как осноной, так и резервной).
Активация происходит или при первом коннекте или насильно командой ACTIVATE DB <db_name>.
И если насчёт основной базы данных волноваться не стоит, т.к. Websphere постоянно пытается подключться, то резервную надо активировать принудительно.
Для этого можно в планировщике Windows сделать задание на поевление события в журнале приложений. Этим событием будет выполнение команады DB2START которая всегда выполняется при запуске службы DB2. При выполнении команды DB2START в журнал приложений заносится запись от источника DB2-0 с EventID: 1.
Вот как будет выглядеть настроеный тригер.
image
Вот как выглядит окно, где настраивается действие выполняемое после срабатывания тригера
image
Как видно на картинке, запускается bat-файл G:all_workactivate_db.bat который активирует 6 баз: dat, dat2, ..,dat6. И вот его листинг:
db2 activate db dat
db2 activate db dat2
db2 activate db dat3
db2 activate db dat4
db2 activate db dat5
db2 activate db dat6

Настройка ACR на серверах Websphere

Чтобы после остановки основного сервера и запуска резервного не надо было перенастраивать источники данных, настраиваем ACR. В этом случае при отключении основной базы, ACR пытается подключиться к резервному автоматически. Я проверял переключая роли между серверами (основной/резервный) происходит небольшая задержка, пользователи даже не замечали ничего. В случае падения основного сервера, резервный придётся переключить в роль главного вручную, но и после этого ACR сможет переключиться и работать с резервным как с основным.
Для настройки ACR на Websphere заходим в консоли Комплексы связи JDBC > DB2 Universal JDBC Driver Provider > Источники данных > <Имя_Источника> > Свойства источника данных WebSphere Application Server и устанавливаем параметры как на скрине
image
Для плановой смены БД на сервере вводим

db2 takeover hadr on db *DB*

Для экстренной

db2 takeover hadr on db *DB* by force 

тогда после починки основной базы на ней вводим

db2 start hadr on db <DB> as stanby 

Автор: Acidmind

Источник

Поделиться

* - обязательные к заполнению поля