DBMS 2

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

HADR

DBMS 2
DB2 가이드
DB2 사용자 가이드
HADR
작성자
admin
작성일
2021-02-19 14:49
조회
1972

HADR

HADR

HADR 이란 ?
DB2 HADR은 Database 복제 기술을 이용하여, Site의 부분 또는 전체적인 장애 상황을 대비합니다. HADR환경에서는 Primary와 Standby 두 대의 Server를 운영하게 됩니다.

db2

HADR 가동
Primary DB에서 Capture된 Log Record가 Standby DB에 전송되며, 수신된 Log Record 는 Standby DB에서 재실행 됩니다. 이러한 반복적인 재실행을 통해서, Standby DB는 Primary DB에 대한 동기화된 복제 DB로서 장애를 대비하게 됩니다.

db2


HADR

HADR Takeover
Primary DB에 장애가 발생하면, Standby DB가 새로운 Primary DB역할을 인계 받아 Transaction 을 수행하게 됩니다. 또, 장애가 발생한 서버가 복구가 되면, 새로운 Primary DB에서 발생한 Transaction Catch-UP을 통해 재동기화 됩니다. 이 시점부터, 이전의 Primary DB는 새로운 Standby DB가 됩니다.

db2

HADR 재 동기화
새로운 Standby DB가 새로운 Primary와 Catch-up이 종료되고, Transaction의 동기화가 정상 적으로 수행되는 중에는, 관리자의 조작(Takeover 명령 또는 또는 GUI)에 의해 Primary와 Standby의 Role을 변경할 수 있습니다

db2


HADR Read On Standby

9.7 이후, HADR환경에서 Standby 서버는 조회 업무를 처리할 수 있습니다.

db2

RoS 사용을 위해 레지스트리 변수를 아래와 같이 설정합니다. 변경시에는 Instance 재시작이 요구됩니다.


$ db2set DB2_HADR_ROS = Y

Standby서버에서 지원되는 사항은 아래와 같습니다.


- 모든 동기화 모드
sync
async
nearsync
- 모든 연결 상태
peer to peer
remote catch up
local catch up
- 복잡한 DML
joins
nested queries
index scans
- 내부 임시 테이블, 버퍼 풀, 동시에 인덱스 사용 및 인덱스 트리 구조 변경

HADR 구성 개요

HADR 구성 준비 (HADR을 위한 Primary와 Standby DB준비)

db2

Primary DB 복제
Primary DB의 Full Backup 이미지를 Standby Server에 Copy하여, Restore합니다. Standby 시스템에서 DB Restore한 이후에 Standby DB는 “ Roll Forward Pending ” 상태 가 됩니다. 즉, Standby DB는 Fail-Over에 의해 Primary 역할을 수행하기 전까지는 활성화 되지 않 으며, READ & WRITE를 허용하지 않습니다.

db2


HADR 구성 개요

Standby DB Start Standby DB가 시작되면, Local Catch-Up 상태가 됨니다. Pending Log Record가 Standby DB에서 재 수행됨니다.

db2

Standby DB 를 시작하면 Local Catch-Up 상태가 됩니다. Standby 시스템 의 Local Pending Log를 모두 처리하면, Standby DB는 Remote Catch- Up상태가 되며, 이때 Standby DB 는 Primary DB 의 Log를 모두 재 수행하고, Standby DB 가 Remote Catch-Up 상태가 되기 위해서는 Primary DB 가 반드시 활성화 되어야 합니다. Primary DB 의 모든 Log가 적용되고 나면, Standby DB 는 Peer 상태가 되고, Primary DB 의 Log가 Disk로 쓰여질 때마다 Log Record가 Standby DB 에 전송되어 적용(재 수행)됩니다.

Primary DB Start
Primary DB 가 시작되면, Standby DB 가 접속을 대기합니다. Standby DB 가 정해진 임계시간 내에 Primary DB 에 접속하지 못하면, HADR은 시작되지 못합니다. HADR_TIMEOUT Configuration Parameter를 이용해 Time-Out 기간을 정의가능합니다.

db2


HADR 동기화 모드

동기화 (Synchronization) 모드 Primary DB와 Standby DB 사이에 Log 적용방식을 관리하기 위해 동기화 (Synchronization) 모드를 정의합니다.

db2

Sync 모g Record가 저장됨.
- Standby DB에 Log가 정상적으로 적용되었음을 Standby DB로부터 응답을 받음.
- Log Data가 Primary DB와 Standby DB에 모두 저장되었음을 보장함.

db2


HADR 동기화 모드

NearSync 모드 - Commit 조건
- Primary DB의 Disk의 Log 파일에 Log Record가 저장됨.
- Standby DB의 Main Memory에 Log Record가 정상적으로 쓰여졌음을 Standby DB로
부터 Primary DB 응답을 받음.

db2

Async 모드 - Commit 조건
-Primary Database의 Disk의 Log 파일에 Log Record가 저장됨.
- Log Record가 Standby Database에 전달됩니다. HADR 프로세스로부터 Socket을 통한
Log Record를 수신 받았음을 응답함.

db2


Wizard를 통한 HADR 구성

HADR Wizard 시작하기
DB2에서 제공하는 GUI(HADR 구성마법사)를 통해 HADR 구성환경을 손쉽게 구현하는 방 법을 소개합니다. HADR 구성을 포함한, Start / Stop, Database Role 전환 등의 관 리 업무를 수행 가능합니다.

db2


Wizard를 통한 HADR 구성

“HADR 데이터베이스 설정” GUI Wizard를 통해 간단하게 구현할 수 있습니다.

db2

데이터베이스 로그 마법사 구성
? HADR환경을 운영하기 위해서는 Log 관리를 Archive모드로 운영해야 합니다.
? “데이터베이스 로그 마법사” 를 통해 순환(Circular)로그를 아카이브(Archive)로그
유형으로 전환 할 수 있습니다.

db2


Wizard를 통한 HADR 구성

Database의 Log를 Archive 하는 방법 선택
- 수동 아카이브 : Archive Log를 DBA가 관리.
- User Exit 루틴 : User Exit Program을 사용하여 Archive Log를 관리.
- DB2를 사용하여 자동으로 로그파일 아카이브 : DB CFG의 logarchmeth1를 통해 Log
를 Archive 하도록 합니다. 미디어 유형 및 아카이브 로그 경로를 지정합니다.

db2

로그 파일의 수와 크기(1차 로그 파일 및 2차 로그 파일 수와 각 로그 파일의 크기) 를 정 의 합니다.

db2


Wizard를 통한 HADR 구성

사용 중인 Log 경로를 정의합니다. 또한 Log 파일의 손상을 대비하여 로그 파일 미러 (Mirror) 경로를 정의 할 수 있습니다.

db2

Circular Log환경에서 Archive Log환경으로 전환 시, DB CFG Parameter를 변경한 후, Database Full Backup을 수행하여야 합니다. Backup 이미지를 저장할 유형과 경로를 지정합니다.

db2


Wizard를 통한 HADR 구성

Backup에 대한 병렬처리 수, Buffer 수/크기를 지정합니다. Offline full Backup을 위해서는 데이터베이스를 Quiesce모드에서 Backup을 하여야 합니다. 또한 Backup 이 미지를 압축할 것인지를 결정합니다.

db2

위의 모든 설정을 지정한 후, 완료를 Click하여 Offline Backup을 수행합니다.

db2


Wizard를 통한 HADR 구성

db2

다음은 Archive Log 환경을 위한 DB CFG 변경 내용 및 Backup을 수행하는 Script 예 입니다.


CONNECT TO SAMPLE;
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
UNQUIESCE DATABASE;
CONNECT RESET;
UPDATE DB CFG FOR SAMPLE USING
indexrec RESTART
logindexbuild ON
logarchmeth1 "DISK:C:\DB2\NODE0000\SQL00001\SQLOGDIR2"
logprimary 3
logsecond 2
logfilsiz 1000;
BACKUP DATABASE SAMPLE TO "P:\src"
WITH 2 BUFFERS
BUFFER 1024
PARALLELISM 1
WITHOUT PROMPTING;
Wizard를 통?법사 구성에서 “완료” 를 Click하게 되면 다음과 같은 Message와 함께 Backup을 수행하게 됩니다.

db2


Wizard를 통한 HADR 구성

데이터베이스 로그 구성을 마치면, 기본데이터베이스 선택화면이 다음과 같이 화면이 바뀝니다

db2


Wizard를 통한 HADR 구성

db2

db2


Wizard를 통한 HADR 구성

db2

db2


Wizard를 통한 HADR 구성

db2

db2


Wizard를 통한 HADR 구성

db2

db2


Wizard를 통한 HADR 구성

명령표시를 통해 다음과 같은 내용을 확인할 수 있습니다


-- 백업 이미지를 기본에서 대기 시스템으로 복사하십시오.
--
-- 기본 시스템의 위치 : P:\SRC
-- 대기 시스템의 위치 : C:\SRC
--
-- 대기 시스템에서 데이터베이스 리스토어 - XR048800 - XR048800 (DB2) - SAMPLEX (SAMPLE)
--
RESTORE DATABASE SAMPLE FROM "C:\SRC"
TAKEN AT 20060414144312 REPLACE HISTORY FILE WITHOUT PROMPTING
--
-- 클라이언트 리라우트를 위한 데이터베이스 구성 - KR048800 - DB2 - SAMPLE
--
UPDATE ALTERNATE SERVER FOR DATABASE SAMPLE USING HOSTNAME XR048800 PORT
50000
--
-- 클라이언트 리라우트를 위한 데이터베이스 구성-XR048800-XR048800 (DB2)-SAMPLEX (SAMPLE)
--
UPDATE ALTERNATE SERVER FOR DATABASE SAMPLE USING HOSTNAME KR048800 PORT
50000
--
-- 기본 시스템에서 서비스 파일 갱신 - KR048800
-- 서비스 이름 : DB2_HADR_1
-- 포트 번호 : 55001
-- 서비스 이름 : DB2_HADR_2
-- 포트 번호 : 55002
--
-- 대기 시스템에서 서비스 파일 갱신 - XR048800
-- 서비스 이름 : DB2_HADR_1
-- 포트 번호 : 55001
-- 서비스 이름 : DB2_HADR_2
-- 포트 번호 : 55002
--
-- 기본 데이터베이스에서 HADR 구성 매개변수 갱신 - KR048800 - DB2 - SAMPLE
UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_HOST KR048800
UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_SVC DB2_HADR_1
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_HOST XR048800
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_SVC DB2_HADR_2
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_INST DB2
UPDATE DB CFG FOR SAMPLE USING HADR_SYNCMODE NEARSYNC
UPDATE DB CFG FOR SAMPLE USING HADR_TIMEOUT 120
CONNECT TO SAMPLE
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS
UNQUIESCE DATABASE
CONNECT RESET
--
-- 대기 데이터베이스에서 HADR 구성 매개변수 갱신-XR048800-XR048800 (DB2)-SAMPLEX (SAMPLE)
UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_HOST XR048800
UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_SVC DB2_HADR_2
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_HOST KR048800
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_SVC DB2_HADR_1
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_INST DB2
UPDATE DB CFG FOR SAMPLE USING HADR_SYNCMODE NEARSYNC
UPDATE DB CFG FOR SAMPLE USING HADR_TIMEOUT 120
--
-- 대기 데이터베이스에서EACTIVATE DATABASE SAMPLE
START HADR ON DATABASE SAMPLE AS STANDBY
--
-- 기본 데이터베이스에서 HADR 시작 - KR048800 - DB2 - SAMPLE
DEACTIVATE DATABASE SAMPLE
START HADR ON DATABASE SAMPLE AS PRIMARY
Wizard를 통한 HADR 구성

db2


CLP를 통한 HADR 구성

CLP를 통한 HADR구성
두 대의 HADR Pair를 위해 다음과 같은 N/W IP 및 Service Port로 구성된 시스템을 대 상으로 Command Line Process (CLP) 명령을 통해 구성할 수 있습니다.

db2

db2


CLP를 통한 HADR 구성

db2

HADR로 구성된 DB에 대한 구성을 다음과 같이 확인합니다.

db2


HADR Monitoring

db2pd 이용

db2


HADR Monitoring

db2 get snapshot for db … 이용

db2


HADR Role 변경 - Takeover

TAKEOVER “ TAKEOVER HADR ON DB sample USER db2admin USING db2admin ” ? Primary DB 와 Standby DB 가 서로 “ PEER ” 상태에서 H/W, S/W, 그 외 여러 정비작업 을 이유로 DB의 Role을 변경할 수 있습니다. ? Standby DB에서 TAKEOVER명령을 사용하여 Primary Role을 획득하여 새로운 Primary DB로서의 역할을 합니다. ? 이전 Primary DB에서는 정비작업을 수행할 수 있습니다. ? 작업 이후, Primary DB를 새로운 Standby DB로 Start한 후, Log 변경사항에 대한 Catch- Up을 수행합니다. ? Catch-Up이 종료되고, “ PEER ”상태가 되면, TAKEOVER 명령을 사용하여 새로운 Primary 로서의 역할을 수행 합니다.

TAKEOVER ~ BY FORCE “ TAKEOVER HADR ON DB sample USER db2admin USING db2admin BY FORCE ” ? H/W, S/W, N/W 및 Storage 장애로 인해, Primary DB가 정상적인 작업을 수행할 수 없고, Primary와 Standby DB사이에 서로 통신이 되지 않은 상황에서 Standby DB에게 강제적으로 Primary DB로서의 역할을 수행하게 할 때 사용합니다.

db2


Automatic Client Reroute

Automatic Client Reroute Primary Database의 장애로 인해, USER Application이 더 이상 서비스 할 수 없는 상황이 되면, 사용자 Application Connection을 자동으로 대체서버로 전환하여 Application을 계속 수행 할 수 있게 합니다.

? Client Reroute를 위해 별도로 Application을 수정할 필요는 없습니다.
? Client Run-Time Library에서 해당 REROUTE를 수행합니다.

db2


Automatic Client Reroute

Automatic Client Reroute ? Application에서의 장애 처리 User Application을 수행 하는 중,

1. Database와 Connection이 단절된 경우
2. 단절된 Database Connection이 재 연결된 경우
SQL을 재 수행 할 수 있습니다.
이로 인해, 사용자는 DB의 장애를 감지 못하고 지속적인 업무 수행이 가능합니다.

db2


HADR 튜닝 Parameter

통신 Parameter

db2

메모리 Parameter

db2

프로세스 Parameter
Standby에서 Rollforward 하는 동시 프로세스 수를 결정하며, Default는 CPU수이며, AIX시스템의 경우 SMT Enable되어 있을 경우, CPU수 *2 만큼 프로세스를 생성합니다. 이때 프로세스간 경합이 발생되어 오히려 HADR성능이 저하되는 경우가 발생하고, 또한 Standby의 CPU 를 과도하게 사용하는 경우가 발생됩니다.


CPU 수가 12일 경우
$cat /db2/bpvars.cfg
Prec_num_agents=12
db2set db2bpvars = /db2/bpvars.cfg

클라이언트 Parameter

db2