개발은 너무해

[스크랩] RAC 본문

Oracle/Oracle Scrap

[스크랩] RAC

까칠 평생초보 2010.05.18 16:42

1. RAC [Real Application Cluster]

  1) Application : 클라이언트, 리스너 같은 데이터 베이스로 부터 서비스를 받는 모든 것들.
  2) Cluster : 군집, 집합 : 하나의 데이터 베이스에 여러개의 인스턴스를 띄어 놓아 만들어진 상태

- 싱글 DB


- RAC

- 인스턴스는 각 머신에 있다.
- 1번 인스턴스에서 작업을 하다 인스턴스가 죽었을 경우(Fail over)
- 2번 인스턴스로 투명하게 넘어가서 쓰게 된다. (가용성)


2. RAC 를 쓰는 이유?

1) 가용성
2) 로드 발란스

* RAC 구조

- Interconnect : DATAFILE로 내려가지 않고 메모리 to 메모리로 전송이 가능하게 해준다.
      (Cache Fusion)(OPS 보다 당연히 빠르다.)

- Ethernet + UDP : 가장 보편적으로 사용

- 1Gbit Ethernet : 현재 보편적으로 사용 (초당 125M정도)

- 10Gbit Ethernet : 향후..

- Infiniband : 향후 (초당 2Gbit ~ 96Gbit 까지 적용) 전송량이 많을 때 부하가 생긴다.

- OPS : 메모리에서 다른 메모리로 읽어질 때 중간에 디스크로 내려썼다가 올라온다.
- 한쪽 클라이언트에서 다른 쪽 클라이언트까지 같이 설치해 주어야 한다.
- Shared Storage 
   - Raw Device - 가장 보편적으로 사용 / 쓰기 속도가 좋다 / 관리가 불편
   - Clustered File System : 비싸다. 잘 깨진다는 문제가 있다.
   - ASM : 점점 기능이 좋아지고 있다(11g에서 활용성 높음)

3. 클러스터

1) OS 클러스터
2)ORACLE 클러스터

4. 10g RAC 설치 순서

1) 오라클 클러스터를 먼저 설치
2) 오라클 소프트웨어 설치
3) 오라클 ASM 설치 (10g) [OS 클러스터를 안쓸 경우 ASM 을 무조건 설치해 주어야 한다.]
4) 오라클 DB 설치

5. RAW Device => OS 클러스터를 설치 해 주어야 한다.

$ CRS_STAT -t : [Target 컬럼] online 되어져 있어야 다른 쪽 노드로 넘어갈 수 있다.
                      : [State] 현재 상태

$ CRS_STOP -all : RAC 서비스가 멈춰 있을 경우에는 stat를 먼저 확인해 본 후 offline 되었을 경우.
$ CRS_START -all : 서비스를 내렸다가(STOP) 다시 올려준다.(START)

1) GCS : Global Cache Service
     - 노드간의 DATA, 메세지 전송을 관리하는 서비스
     - LMS Process : Global Cache 동기화, 최대20개까지(10gR1), 최대 36개까지(10gR2)

2) GES : Global Enqueue Service 
     - Global 하게 Lock을 관리
     - 노드간의 Lock 정보를 요청하고 응답하는 것을 관리하는 서비스
     - LMD Process : Global enqueue 동기화(Lock)
     - LCK Process : Library Cache Lock / Pin, Row Cache Lock 동기화

3) CGS : Cluster Group Service
     - 클러스터의 멤버쉽을 관리하는 서비스
     - LMON Process : Global Lock Monitoring Process Recover 등의 작업 수행

4) GRD : Global Resource Directory
     - Global Resource 의 위치 및 상태를 관리하는 분산 DATABASE
     - 모든 BLOCK의 정보는 BLOCK이 속한 MASTER NODE를 GRD 에서 관리
     - BLOCK에 최신 정보가 있다.
     - GRD가 관리하는 정보
        : DBA(Data Block Address) + Location Holder 위치(holding 하고 있는 위치, ex. emp가 1번에 있니?2번에 있니? 없니??)
        + LOCK MODE(Null, Shared, Exclusive) + Role(Local, Global) + SCN + PI(Past Image)

6. show parameter service

하나의 노드가 깨졌을때 OCR 의 정보를 보고 복구를 한다.

RAC는 datafile, controlfile, redologfile 이외에 Voting Disk 와 OCR 이 필요함.

1) OCR : 클러스터 구성에 필요한 메타 정보를 가지고 있다.
             작업 중이던 노드가 죽으면 다른 노드에 넘겨야 한다는 정보가 들어있다.)
2) Voting Disk : Split Brain 현상을 방지하기 위한 파일
        ※ Split Brain : 의학 용어로 좌뇌와 우뇌의 Sync가 맞지 않은 경우, 동기화가 이루어져 있지 않은 경우를 말함
                       일관된 이미지를 보기 위한 것
                       양 쪽의 노드가 동기화, 맞춰주는 것

7. 논리적/물리적으로 백업을 반드시 해야함.
8. OCR은 자동백업
9. Cache Fusion
   1) interconnect 를 통한 효율적인 글로벌 버퍼 동기화 메커니즘
   2) Memory to Memory 동기화.

-> Request Node, Master Node, Holder Node 가 Interconnect 를 통해 Block/Message 를 교환하는 Mechanism


1) Request Node : 필요한 특정 블록을 Master Node 의 LMSn에 요청
2) Master Node : 요청받은 블록(버퍼)의 홀더 노드를 파악한 후 LMSn 에게 요청 노드로의 버퍼 전송을 요청
                         만일 없을 시에는 Block grant message 전달(직접 디스크에서 읽어들이도록 권한 부여)
3) Holder Node : 블럭(버퍼)전송이 가능한 경우, 요청 노드로 버퍼를 전송한다.

※ 노드가 2개 일 경우.

1. A user 가 EMP를 읽으려면 1번 instance GRD를 확인, 없으면 2번 GRD 확인, 없으면 디스크에서 올린다.
2. 이 때 B user 가 EMP를 읽으려고 2번 instance 에서 접근시 LMSn 이 interconnect로 emp를 넘겨준다.
3. 이 경우 둘 다 Shared mode 의 Lock을 갖는다.
4. B user 가 scott의 SAL 을 UPDATE하고 COMMIT 하였을 경우,
    -> B user가 갖고 있떤 Shared mode Lock은 Exclusive 하게 바뀐다.
5. A user 가 가지고 있던 Shared Mode Lock은 Null Mode로 바뀐다.
6. A user 가 다음 EMP를 보고자 할 경우에는 UPDATE 된것을 보아야 한다.(commit 했으니깐..)
    (Null Mode는 다른 노드에서 받아와야 한다는 의미를 내포한다.)
0 Comments
댓글쓰기 폼