게시물 5건
 
[DB] Mysql Replication - Part.1
글쓴이 : 최장섭 날짜 : 2013-07-09 (화) 13:59 조회 : 1321
- 현재까지 많은 시스템에서 사용되고 있는 DB 데이터 중 하나가 Mysql 이다.

- 모든 시스템에서 DB는 사용자 정보를 비롯하여시 서비스 운영에 주요 핵심이다.

- DB서버가 다운이 되거나 장애가 발생한다면 서비스 정지 및 큰 손해로 이어질수 있다. DB가 정지하는 원인으로는 몇가지 상황을 들 수 있다.

_ DB 서버 프로세서의 비정상적인 종료
_ 해당 서버의 디스크 용량이 풀(FULL) 찰 경우
_ 해당 서버의 디스크 장애 (Fail) 경우
_ 해당 서버의 전원이 죽어버리는 경우
_ 해당 서버의 연결된 LAN 에 문제가 발생하는 경우(S/W)

- 위의 경우 중 데몬의 정지 는 재시작으로 짧은시간내에 해결이 가능하다.

- 하지만 디스크의 문제나 서버의 H/W 적인 문제라면 복구하기까지 많은 시간이 소요된다. 경우에 따라서는 백업이 되있지 않을 경우도 있다.
이러한 경우를 대비해 Replication 이 이용된다.

▶ Replication - 리플리케이션
- 데이터를 실시간으로 다른곳으로 복제하는 것을 의미한다.

- 복제를 LAN이나 네트워크를 경유해서 수행하면 물리적으로 다른 서버간에 데이터를 유지할 수 있다.

- Single Master, Multi Slave

_ 마스터 - 클라이언트로부터 갱신과 참조 두 가지 쿼리를 받아들이는 서버
_ 슬레이브 - 클라이언트로부터 갱신 쿼리를 받아들이지 않으면서 데이터 갱신은 마스터와 연계를 통해서만 수행하는 역할을 하는 서버를 말한다.

- 리플리케이션 기능으로 지원되고 있는 것은, 한 대의 마스터와 여러 슬레이브로 이루어진 구성 (싱글마스터, 멀티슬레이브)이다.

- 여러 대의 마스터가 존재해서 서로가 서로의 데이터를 리플리케이션 하는 멀티 마스터라고 하는 구성은 가능하지 않다.

- 슬레이브는 여러 대 존재할 수 있으므로 SELECT 문 등의 참조 쿼리를 여러 슬레이브로 분산해서 성능 향상을 꾀할 수 있도록 구성할 수도 있다.

- Mysql 에서 지원하고 있는 것은 "비동기 데이터 리플리케이션" 이다.

_ 비동기란, 마스터에 수행한 갱신 처리가 동시에 슬레이브로 반영되지는 않는다. (반영되기 까지 시간차가 잇음)

_ 비동기가 아닌 동기 리플리케이션을 지원하고 있는 RDBMS 도 있지만, 비동기나 동기 각각 일장일단이 있으므로, 어느쪽이 우수 하고 다른쪽은
열등하다고 할수는 없다.

- SQL문 단위로 리플케이션이 이루어지며, 예를 들어 특정 UPDATE 문이 발생할 때 이 쿼리가 1건 갱신하는 UPDATE 문이건, 100만 건 갱신하는
UPDATE 문이건 간에 마스터에서 슬레이브로 전달되는 것은 하나의 UPDATE 문이다.

- 이 방식은 마스터와 슬레이브 간의 송수신이 적다는 점이 있지만, 실행할 때까지 결과를 알 수 없는 쿼리를 리플레이케이트 하면 마스터와 백업에서
저장하는 데이터가 달라질 가능성이 있다는 위험성도 있다.

- 예를 들면, 데이터를 갱신하는 쿼리에서 ORDER BY 절을 동반하지 않는 LIMIT 절이 있을경우, LIMIT 절에 의해 선택도니 행은 마스터와 슬레이브
간에 다를 가능성이 있다. 따라서 이렇게 될 경우, 마스터와 슬레이브 간에 다른 행이 갱신되는 결과를 낳게 된다.

- 이 문제의 치명적인 점은 데이터를 불일치를알아내기 어렵다는 점이다. 운좋게 UNIQUE 등의 제약조건에 위반되면 리플리케이션이 에러로 정지해
서 이상을 알아낼 수 있지만, 그렇지 않는 한 아무도 모르게 조용히 데이터 불일치가 발생해버릴 가능성이 있다.

- SQL 문의 단위의 리플리케이션은 그 밖에도 몇몇 잠재적인 문제를 내포하고 있지만, 이무 ㄴ제에 특효향은 없으며, 문제가 있는 쿼리가 발생하지
않도록 할 수밖에 없다.

- Mysql 5.1.5 버전 이후에서는 "행 단위 리플리케이션 기능"을 사용함으로써 이 문제를 해결할 수 있다.

- 행 단위 리플리케이션에서는 마스터에서 실제로 갱신된 행의 데이터가 리플리케이션되므로 앞서 본 LIMIT 절과 같이 실행할 때까지 결과를 알 수
없는 문제로부터는 벗어날 수 없게 된다.

- 또한 5.1.8 버전에서는 "혼재 모드" 라는 것이 추가 되었으며, 이는 평소 SQL문 단위로 리플리케이션을 하지만 경우에 따라서 행 단위 리플리케이션
을 수행하는 모드다.

소원마마 2019-11-12 (화) 21:36
소원마마 2019-11-12 (화) 21:39
이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
 

miwit.com sir.co.kr DNS Powered by DNSEver.com DNS Powered by DNSEver.com