코딩마을방범대

데이터베이스 리플리케이션(Replication) 본문

🎃 기타/상식 ❗

데이터베이스 리플리케이션(Replication)

신짱구 5세 2024. 5. 20. 14:05
728x90

 

 

데이터베이스 리플리케이션(Replication)

 

실시간 복제본 데이터베이스 서버를 운용하는 것

기준이 되는 서버를 마스터 서버라 하고, 마스터 서버와 동일한 내용을 갖는 또 다른 서버를 ‘리플리카(Replica)’라 한다.

 

어플리케이션은 데이터베이스에 SQL 명령을 보내 데이터를 삽입/변경/삭제하게 되는데, 

마스터 서버는 SQL 명령을 수신하면 그 SQL 명령을 리플리카 서버에도 똑같이 보낸다.

이렇게 되면 마스터 서버와 리플리카 서버의 데이터가 동일한 상태로 유지된다.

 

 


 

목적

기본적으로 데이터 안정성을 위함이다.

 

기존

어떠한 원인으로 인해 데이터가 손상되었을 때, 가장 기초적인 대처는 가장 최신의 백업본을 복구하여 사용하는 것이다.

그러나 백업본을 이용한 대처는 큰 단점이 있다.

데이터 백업을 주기적이고 자동으로 되도록 해놓았다고 하더라도 백업된 시간과 장애가 발생한 시간 사이의 데이터 변경 사항들은 모두 소실되게 된다.

 

리플리카 서버

리플리카 서버는 ‘아주 약간의 딜레이가 있긴 하지만’ 거의 실시간으로 마스터 서버와 동일한 데이터를 갖고 있기 때문에, 장애 복구 시 데이터 소실이 최소화된다.

리플리카 서버는 마스터 서버로 승격이 가능하기에, 마스터 서버로 승격시켜 기존 마스터 서버를 대체하는 방식으로 복구가 진행된다. 리플리카 서버를 마스터 서버로 승격한 후, 이 새로운 마스터 서버에 대한 리플리카 서버를 생성하면 복구가 완료된다.

 

 

 


 

응용

 

리플리카 서버는 기본적으로 읽기전용으로 운용된다.

이러한 특성을 활용하면 데이터베이스 서버의 부하를 줄이고, 데이터베이스를 억세스하는 어플리케이션의 동작 성능을 개선할 수 있다.

어플리케이션 개발 시, 데이터의 억세스 시간이 중요한 읽기쓰기 SQL 작업은 마스터 서버에 접속하여 수행하고, 데이터의 억세스 시간이 중요하지 않는 ‘읽기전용’ 작업은 리플리카 서버에 접속하여 수행하도록 한다.

 

예를 들어, 서비스 어플리케이션은 항시 마스터 데이터베이스 서버에서 데이터를 조작하도록 하고, ‘많은 부하가 유발될 수 있는’ 관리자 사이트의 특정 내역 조회 기능에 대해서는 리플리카 데이터베이스 서버로부터 데이터를 가져오도록 하는 것이다.

이렇게 하면, 큰 규모의 데이터에서 자료를 추출하게 될 때 발생하는 데이터베이스 서버 부하를 리플리카 서버가 대신 받아 처리하기에 마스터 서버가 받게 되는 부하가 크게 줄어든다.

 

 

 




 

동작 원리

 

기본적으로 비동기 복제 방식을 이용하고 있다.

Master 노드에서 변경되는 데이터에 대한 이력을 로그에 기록하면 Master Thread가 비동기적으로 이를 읽어서 Slave쪽으로 전송한다.

 

Master DBMS 역할 : 

웹서버로 부터 데이터 등록/수정/삭제 요청시 바이너리로그(Binarylog)를 생성하여 Slave 서버로 전달하게 됩니다

(웹서버로 부터 요청한 데이터 등록/수정/삭제 기능을 하는 DBMS로 많이 사용됩니다)

 

Slave DBMS 역할 : 

Master DBMS로 부터 전달받은 바이너리로그(Binarylog)를 데이터로 반영하게 됩니다

(웹서버로 부터 요청을 통해 데이터를 불러오는 DBMS로 많이 사용됩니다)

 

 

바이너리 로그란?
변경사항들에 대한 정보를 담고 있는 이진 파일을 바이너리 로그 파일 이라고 한다.
(show나 select와 같은 조회 문법은 제외됨)

 

 


 

단점

 

1. 데이터의 정합성을 보장할 수 없음

  • Slave가 Master의 쿼리 처리량을 따라가지 못한다면 데이터 정합성이 보장되지 않는다.

2. Binary Log File 관리

  • Master는 Binary Log가 무분별하게 쌓이는 것을 막기위해 데이터 보관 주기를 설정하지만 
    Master는 Slave까지 관리 하지 않기 때문에 Master에서 Binary Log File을 삭제 했다고
    Slave에서 Binary Log를 삭제하지 못한다.

3. Fail Over 불가

  • master에서 Error가 발생 했을 경우 Slave로 Failover하는 기능을 지원하지 않는다.
    Slave 역시 Master와 Log 위치가 다르다면 관리자가 직접 작업해야 한다.

 

 

 

 

 

 


참고사이트

데이터베이스 리플리케이션과 그 응용

 

 

 

728x90