Developer Log
  • Wiki
  • Books
    • 리눅스 시스템 프로그래밍
      • 핵심 개념 소개
        • 시스템 프로그래밍
        • API와 ABI
        • 리눅스 프로그래밍의 개념
          • 파일과 파일시스템
          • 프로세스
          • 사용자와 그룹
          • 권한
          • 시그널
          • 프로세스간 통신
          • 에러 처리
    • 데이터 베이스 첫걸음
      • 데이터베이스란
        • 데이터베이스의 역할을 생각해 보자
          • 우리와 데이터베이스의 관계
          • 데이터베이스의 기본 기능
          • 데이터베이스 종류
      • 관계형 데이터베이스란
        • 대표적인 DBMS를 알아보자
          • 관계형 데이터베이스란
          • SQL 기초 지식
          • 관계형 데이터베이스를 다루기 위한 사전 지식
      • 데이터베이스에 얽힌 돈 이야기
        • 초기비용과 운영비용을 생각하자
      • 데이터베이스와 아키텍처 구성
        • 다중화에 대해 생각해보자
          • 아키텍처란
          • 데이터베이스의 아키텍처
            • 역사와 개요
              • Stand-alone
              • 클라이언트/서버
              • Web 3계층
            • 가용성과 확장성의 확보
          • DB 서버의 다중화
            • 클러스터링
            • 리플리케이션
          • 성능을 추구하기 위한 다중화 - Shared Nothing
          • 적합한 아키텍처를 설계하기 위해
      • DBMS를 조작할 때 필요한 기본 지식
        • MySQL 설치해보자
        • MySQL과 커넥션 만들기, 데이터베이스에 전화걸기
        • SQL과 관리 명령의 차이
        • 관계형 데이터베이스의 계층
      • SQL 문의 기본
        • SELECT 문으로 테이블 내용을 살펴보자
        • SELECT 문을 응용해보자
        • 데이터를 갱신, 삽입, 제거해보자
        • 뷰를 작성하고 복수 테이블에서 선택해보자
      • 트랜잭션과 동시성 제어
      • 테이블 설계의 기초
      • 백업과 복구
      • 성능을 생각하자
    • 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴
      • 객체 지향
        • 들어가기
        • 객체 지향
        • 다형성과 추상 타입
        • 재사용: 상속보단 조립
      • 설계 원칙 / DI와 서비스 로케이터
        • 설계 원칙: SOLID
          • 단일 책임 원칙(Single Responsibility Principle)
          • 개방 폐쇄 원칙(Open - Closed Principle)
          • 리스코프 치환 원칙(Liskov Substitution Principle)
          • 인터페이스 분리 원칙(Interface Segregation Principle)
          • 의존 역전 원칙(Dependency Inversion Principle)
          • SOLID 정리
        • DI(Dependency Injection)와 서비스 로케이터
      • 주요 디자인 패턴
        • 디지인 패턴이란?
        • 전략(Strategy) 패턴
        • 템플릿 메서드(Template Method) 패턴
        • 상태(State) 패턴
        • 데코레이터(Decorator) 패턴
        • 프록시(Proxy) 패턴
        • 어댑터(Adapter) 패턴
        • 옵저버(Observer) 패턴
        • 미디에이터(Mediator) 패턴
        • 파사드(Facade) 패턴
        • 컴포지트(Composite) 패턴
        • 널(Null) 객체 패턴
        • 팩토리 메서드 패턴
        • 커맨드 패턴
        • 추상 팩토리 패턴
    • 테스트 주도 개발
      • 1부
        • 다중 통화를 지원하는 Money 객체
        • 타락한 객체
        • 모두를 위한 평등
        • 프라이버시
        • 솔직히 말하자면
        • 돌아온 '모두를 위한 평등'
        • 사과와 오렌지
Powered by GitBook
On this page
  • 리플리케이션이란
  • 리플리케이션에서 주의할 점

Was this helpful?

  1. Books
  2. 데이터 베이스 첫걸음
  3. 데이터베이스와 아키텍처 구성
  4. 다중화에 대해 생각해보자
  5. DB 서버의 다중화

리플리케이션

Previous클러스터링Next성능을 추구하기 위한 다중화 - Shared Nothing

Last updated 6 years ago

Was this helpful?

리플리케이션이란

Active-Active, Active-Standby 클러스터 구성에서는 서버 부분은 다중화할 수 있어도 저장소 부분은 다중화하지 않는 단점이 있다. 이런 상황을 대응하기 위해, DB 서버와 저장소 세트를 복수로 준비하는 것을 '리플리케이션(Replication)' 라고 한다.

리플리케이션은 DB 서버와 저장소가 동시에 사용 불능일 때, 서비스를 지속하는 것이 가능하다는 점에서 가용성이 높은 아키텍처이다.

디스크를 다중화하는 RAID

저장소 내부의 컴포넌트(대부분 하드디스크)를 다중화하는 기술을 'RAID(Redundant Array of Independent Disks)' 라고 한다. 기본적으로 클러스터링과 동일하게 단일 장애점을 제거하여, 디스크를 병렬로 나열해 한 개가 망가져도 데이터 소실이 발생하지 않게 하는 것이다.

리플리케이션에서 주의할 점

리플리케이션에서 중요한 점은 Active 측 저장소의 데이터는 항상 사용자로부터 갱신된다는 것이다. 이 때문에 Standby 측 데이터에도 갱신을 반영하여 최신화하지 않으면 Active 측과의 데이터 정합성을 유지할 수 없다.

리플리케이션에서는 Active DB 서버에서 갱신된 데이터를 일정 주기로 Standby DB 서버에 동기화한다. 이때 Standby 갱신 주기를 얼마로 할 것인가와 성능 사이에 트레이드오프가 발생한다.

리플리케이션 구성은 '피라미드형'으로 만들 수 있어, '데이터가 오래되도 참조만 하면 된다'는 처리를 손자나 증손자 세트에서 하여 부모에 걸리는 부하를 분산할 수있다.

부모는 주인, 아들은 노예?

동기화하는 측의 부모(Active) 데이터베이스를 '마스터', 동기화되는 측의 자식(Standby) 데이터베이스를 '슬레이브' 라고 부르고, 이러 리플리케이션을 '마스터 슬레이브 방식' 이라고 지칭한다.

또한, 양쪽 모두 마스터인 쌍방향 리플리케이션 구조인 '멀티 마스터 방식' 도 존재한다.