CS/데이터베이스

데이터베이스 Replication

Junuuu 2022. 6. 2. 01:06
728x90

Replication이란?

사전적으로 "복제"라는 뜻을 가지고 있습니다.

 

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

 

애플리케이션은 데이터베이스에 SQL 명령을 보내 데이터를 삽입/변경/삭제하게 되는데 마스터 서버는 SQL 명령을 수신하면 그 SQL 명령을 리플리카 서버에도 똑같이 보냅니다.

 

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

 

Why Replication?

굳이 복제하는 이유가 뭘까요?

 

바로 데이터의 안정성을 위함입니다.

 

어떤 원인으로 인해 데이터가 손상되었을 때, 가장 기초적인 대처는 백업을 가지는 것입니다.

 

하지만 백업이 얼마나 주기적으로 일어나는지에 따라 백업된 시간과 장애가 발생한 시간 사이의 데이터 변경 사항들은 모두 소실되게 됩니다.

 

리플리카 서버는 아주 약간의 딜레이가 존재하지만 거의 실시간으로 마스터와 동일한 데이터를 가지고 있습니다.

 

또한 리플리카 -> 마스터로 승격이 가능하기 때문에 만약 마스터 서버에 장애가 발생하면 리플리카 -> 마스터로 승격시켜 기존 마스터 서버를 대체하는 방식을 사용합니다.

 

리플리케이션의 응용

리플리카 서버는 기본적으로 읽기 전용으로 사용됩니다.

 

이러한 특성을 활용하면 데이터베이스 서버의 부하를 줄일 수 있습니다.

 

애플리케이션 개발 시 데이터의 접근 시간이 중요한 읽기 쓰기 SQL 작업은 마스터 서버에 접속하여 수행하고 접근 시간이 중요하지 않은  '읽기 전용' 작업은 리플리카 서버에 접속하여 수행하도록 합니다.

 

 

리플레케이션 응용 예시 그림

https://huisam.tistory.com/entry/mysql-replication#MySQL%--Master%--Slave%--%EA%B-%AC%EC%A-%B-%--%EB%A-%-C%EB%--%A-%EC%--%B-%EB%B-%B-%EA%B-%B-

 

How

어떻게 이러한 일들이 수행될까요?

 

MySQL의 Replication 방식(https://mangkyu.tistory.com/97)

위의 그림은 MySQL의 Replication 방식에 대한 그림입니다.

 

1. Master 노드에 쓰기 트랜잭션이 수행됩니다.

2. Master 노드는 데이터를 저장하고 트랜잭션에 대한 로그를 파일에 기록합니다. (BIN LOG)

3. Slave 노드의 IO Thread는 Master 노드의 로그 파일을 Relay Log에 복사합니다.

4. Slave 노드의 SQL Thread는 파일을 한 줄씩 읽으며 데이터를 저장합니다.

 

Master와 Slave 간의 데이터 무결성 검사를 하지 않는 비동기 방식으로 데이터를 동기화시킵니다.

 

장점

DB 요청의 대부분이 읽기 작업이기 때문에 Replication만으로도 충분히 성능을 높일 수 있다.

비동기 방식으로 운영되어 지연 시간이 거의 없다.

 

단점

노드들 간의 데이터 동기화가 보장되지 않아 일관성 있는 데이터를 얻지 못할 수 있다.

Master 노드가 다운되면 복구 및 대처가 까다롭다.

 

 

 

 

출처

https://www.coovil.net/db-replication/

 

쿠빌(COOVIL) | 데이터베이스 리플리케이션(Replication)과 그 응용

데이터베이스 리플리케이션(Replication)은 실시간 복제본 데이터베이스 서버를 운용하는 것을 의미합니다. 기준이 되는 서버를 마스터 서버라 하고, 마스터 서버와 동일한 내용을 갖는 또 다른 서

www.coovil.net

https://mangkyu.tistory.com/97

 

[Database] 리플리케이션(Replication) vs 클러스터링(Clustering)

1. 리플리케이션(Replication)이란? [ 리플리케이션(Replication)이란? ] 리플리케이션이란 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식이다. 리플리케이션에서 Master Node는 쓰

mangkyu.tistory.com