[데이터베이스] Replication

2022. 10. 7. 14:33CS/데이터베이스

데이터베이스 리플리케이션은 실시간 복제본 데이터베이스 서버를 운용하는 것을 의미한다.

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

Master DBMS 역할 :

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

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

INSERT, UPDATE, DELETE 처리

 

Slave DBMS 역할 :

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

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

SELECT 요청 처리

 

 

Replication 사용 목적

1. 데이터의 백업

 어떠한 원인으로 인해 데이터가 손상되었을 때, 가장 기초적인 대처는 가장 최신의 백업본을 복구하여 사용하는 것이다. 그러나 백업본을 이용한 대처는 큰 단점이 있다. 데이터 백업을 주기적이고 자동으로 되도록 해놓았다고 하더라도 백업된 시간과 장애가 발생한 시간 사이의 데이터 변경 사항들은 모두 소실되게 됩니다.

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

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

 

2. DBMS의 부하분산

 사용자의 폭주로 인해 1대의 DB서버로 감당할수 없을때, 리플리케이션(Replication)을 이용하여 같은 DB 데이터를 여러대를 만들수 있기에 부하를 분산할 수 있다

 그림으로 표현한다면 Master 서버를 등록/수정/삭제를 사용하는 서버로 사용하고, Slave 서버를 데이터를 읽는 용도로 사용하게 되면 DBMS의 부하를 분산하는 용도로 사용할 수 있게 된다.

 

 

[+] 리플리케이션 자세한 처리 방식

  • Master 노드에 쓰기 트랜잭션이 수행된다.
  • Master 노드는 데이터를 저장하고 트랜잭션에 대한 로그를 파일에 기록한다.(BIN LOG)
  • Slave 노드의 IO Thread는 Master 노드의 로그 파일(BIN LOG)를 파일(Relay Log)에 복사한다.
  • Slave 노드의 SQL Thread는 파일(Relay Log)를 한 줄씩 읽으며 데이터를 저장한다.