먼저 복제.. 아울러 리플리케이션 등의 이야기는 마니 들어보셨을 겁니다.. ^_^

이번에 할 이야기가 복제를 어케 하냐의 이야기이니.. 먼저 정확히 이론적인 부분을

살피고 복제 설정에 들어가도록 하지요... ^_^

역시나 조금 길어질 그런 부분이니... 가능한 차근차근 설명하겠습니다....

문제가 되시거나.. 오류가 있으시다면 꼭 질문/답변 게시판에 달아주시기를 바랍니다.

그럼 이야기를 시작하지요 ^_^

 


 

이전에는 유닉스와 같은 메인프레임의 시절이 있었습니다.... ^_^

모든 작업은 유닉스 서버에서 이루어지며.. 사용자는 단지 텔넷 같은 더미 터미널로

서버에 접속해 작업을 하던.. 단지 바보 터미널만을 사용하던 시절이 있었지요...

하이텔 초창기의 터미널을 대여해서 써보신분 마니 계실 겁니다...

하지만 어느덧 시간이 지나... 메인 프레임 시스템으로는 많은 사용자와

작업양을 견디질 못하는 시대가 되었습니다...

이에 Client / Server라는 개념의 시대가 등장하지요...

이놈의 중요한 다른점은 어느것이든 서비스를 제공하면 바로 서버라는 점입니다...

NT와 win95가 있는데.....

win95에서 서비스를 제공하면 이거이 서버다.. 라는 겁니다....

DB역시 마찬가지로... 이러한 C/S의 치맛바람이 불게 되었지요....

속도도 빨라지지요... 전국지사에서 각 지사마다 서버를 두어 속도 빨라지지요..

호홍~~ 아주 좋았습니다... 하지만 문제는 어디서든 생기는 겁니다....

서울에 본사가 있고 부산에 지사가 있는 회사인데....

데이터의 일관성 유지가 힘든 겁니다....

같은날 같은 시각 물건값이 틀려서 서울에서는 만원인데.. 부산에서는 만2000원 인 겁니다..

게다가 보안성의 유지도 역시 만만치 않았구요......

아울러 서울이나 부산이나 데이터를 삽입시 어디서나 일관성있게 변경되는 그런

솔루션이 필요해진 겁니다....

그래서 등장했지요... 이 솔루션이....

특히 크게 2가지로 볼 수 있는데....

2 Phase Commit과 Replication이라는 2가지 솔루션의 등장입니다...

간단히 비교를 해 보면...

 

 

2Phase Commit

Replication

일관성(Consistency)

Tight(엄격한 일관성)

Loose(느슨한 일관성)

동시성(Concurrency)

나쁨

매우 좋음

분산 트랜젝션

가능

불가능

동시수정

가능

불가능

서버에 걸리는 부하

많음

적음(분산이 가능)

확장성/유연성

보통

좋음

 

 자잔~~~~

살짝 복제의 개념이 잡히실 거에요...

복제시 제공해주는 서버 A는 데이터를 수정하고.. 제공받는 서버 B와 C는?

데이터를 받기만 한다....(SQL7에서는 Updating subscriber로 받는서버 B,C에서도

데이터 수정이 가능)

아울러 트랜젝션을 사용해야 하는

A에서 300을 빼고 서버B에 150, 서버C에 150을 더하는 식의 분산 트랜젝션의 처리...

역시 불가능할 겁니다...

따러서 이러한 트랜젝션을 써야할 경우라면? 반드시 2 phase commit을 써야지요..

은행같은 경우에 대표적입니다... ^_^

그런데도!!!!!

복제가 각광을 받는 이유는 무엇일가요?

바로 2phase commit이 가지는 단점 땜입니다....

2phase commit시는 서버 A는 물론 B,C ... 등의 서버중에서 1개만 이라도

맛이 간다면?  몽조리 맛이 가는겁니다... A가 맛이가면...

B,C,.. 은 물론 맛이 갈 수 있고...

B,C,..들중 1개만 맛이 간다면? A역시 눈만 뜨고 있지 아무 수정도 할 수 없게 되지요..

(트랜젝션사용이 계속 에러가 나니까요..)

게다가 한 개의 서버 D를 추가하려 합니다...

그럼 상당히 많은 부분에 작업을 해서 거의 재구축 해야할 정도가 된다...

까지 되니까요... ^_^ 이러한 유연성에서 역시 결함이 될 수 있지요...

그렇다면 우리가 보려하는 복제는 어떨가요?

서버 B,C들중 B가 문제가 되어서 복제에 참여가 불가능 하더라도?

서버 A와 C는 계속 데이터를 주고 받을 수 있으며 서버 B역시 문제가 해결되면

다시 데이터를 주고 받을 수 있게 되는 거지요...

물론 동시성 역시 매우 좋구요 ^_^

아울러 복제시 복제 업무를 전담하는 서버(Distributor)가 있어서 원래 메인 서버는

전혀 큰 부하 없이 작업을 계속 할 수 있는 장점이 있지요...

 

그럼 어느정도 복제에 대한 개념을 잡으셨으리라 생각 하구용 ^_^

실제 복제에서 사용되는 용어의 개념에 대해 살짝 알아 보지요.. ^_^

 


 

 6. Replication(복제)란? _ 1. 복제란 무엇인가?





profile

부족하지만, SQLER의 누군가와 함께한 나눔을 통해 제가 더 많이 즐거웠습니다.
SQLER와 함께 즐거워 할수록, 그 나눔을 통해 더 많은 기회와 가치를 발견하게 되었습니다.
나눔의 생각이 앞으로도 계속, SQLER를 움직일 것입니다.

코난, 김대우 / SQLER 운영자 / 골라먹는 SQLER RSS 정보 구독 / 실시간 SQLER 소식 uxkorea 트위터