- PVSM.RU - https://www.pvsm.ru -
HADR инструмент DB2, реализующий зеркалирование баз данных. ACR механизм в Websphere позволяющий в случае падения базы, автоматически переключать клиентов на резервный сервер. Ниже расскажу как настраивал обе эти штуки 8-)
По русски настройка и описание HADR описана тут [1]
Полный справочник по HADR на английском тут [2]
Настроить 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 работа HARD приостанавливается, до активации БД (как осноной, так и резервной).
Активация происходит или при первом коннекте или насильно командой ACTIVATE DB <db_name>.
И если насчёт основной базы данных волноваться не стоит, т.к. Websphere постоянно пытается подключться, то резервную надо активировать принудительно.
Для этого можно в планировщике Windows сделать задание на поевление события в журнале приложений. Этим событием будет выполнение команады DB2START которая всегда выполняется при запуске службы DB2. При выполнении команды DB2START в журнал приложений заносится запись от источника DB2-0 с EventID: 1.
Вот как будет выглядеть настроеный тригер.
Вот как выглядит окно, где настраивается действие выполняемое после срабатывания тригера
Как видно на картинке, запускается 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. В этом случае при отключении основной базы, ACR пытается подключиться к резервному автоматически. Я проверял переключая роли между серверами (основной/резервный) происходит небольшая задержка, пользователи даже не замечали ничего. В случае падения основного сервера, резервный придётся переключить в роль главного вручную, но и после этого ACR сможет переключиться и работать с резервным как с основным.
Для настройки ACR на Websphere заходим в консоли Комплексы связи JDBC > DB2 Universal JDBC Driver Provider > Источники данных > <Имя_Источника> > Свойства источника данных WebSphere Application Server и устанавливаем параметры как на скрине
Для плановой смены БД на сервере вводим
db2 takeover hadr on db *DB*
Для экстренной
db2 takeover hadr on db *DB* by force
тогда после починки основной базы на ней вводим
db2 start hadr on db <DB> as stanby
Автор: Acidmind
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/administrirovanie-baz-danny-h/58757
Ссылки в тексте:
[1] тут: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Wc0d1a21236a5_4cb4_9d40_424193dcd115/page/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20DB2%20HADR%20%D0%B4%D0%BB%D1%8F%201%D0%A1
[2] тут: http://www.redbooks.ibm.com/redbooks/pdfs/sg247363.pdf
[3] Источник: http://habrahabr.ru/post/219053/
Нажмите здесь для печати.