다중 마스터 복제

Multi-master replication

다중 마스터 복제는 컴퓨터 그룹에 의해 데이터를 저장하고 그룹의 구성원에 의해 업데이트되는 데이터베이스 복제 방법이다.모든 구성원은 클라이언트 데이터 쿼리에 응답한다.다중 마스터 복제 시스템은 각 구성원이 변경한 데이터를 그룹의 나머지 부분에 전파하고, 다른 구성원이 동시에 변경한 사이에 발생할 수 있는 충돌을 해결하는 역할을 한다.

다중 마스터 복제는 그룹의 단일 구성원이 주어진 데이터의 "마스터"로 지정되고 해당 데이터 항목을 수정할 수 있는 유일한 노드인 1차 복제와 대조될 수 있다.데이터 항목을 수정하려는 다른 구성원은 먼저 마스터 노드에 연락해야 한다.단일 마스터만 허용하면 그룹 구성원 간의 일관성을 쉽게 얻을 수 있지만 다중 마스터 복제에 비해 유연성이 떨어진다.

또한 다중 마스터 복제는 수동 복제본 서버가 마스터 데이터를 복제하는 장애 조치(failover) 클러스터링과 대조하여 마스터가 작동을 중지할 경우 테이크오버를 준비할 수 있다.마스터는 클라이언트 상호작용을 위해 활성화된 유일한 서버 입니다.

종종 Multi-master 시스템의 통신과 복제는 Consensus 알고리즘의 유형을 통해 처리되지만, 소프트웨어 고유의 사용자 정의 알고리즘이나 독점 알고리즘을 통해서도 구현될 수 있다.

다중 마스터 복제의 주요 목적은 가용성 향상과 서버 응답 시간 단축이다.[1]

이점

  • 접근성:한 마스터가 실패하면 다른 마스터는 데이터베이스를 계속 업데이트한다.
  • 분산 액세스:마스터는 여러 물리적 사이트에 위치할 수 있으며, 즉 네트워크를 통해 분산될 수 있다.

단점들

  • 일관성:대부분의 다중 마스터 복제 시스템은 느슨하게 일관성이 있을 뿐, 즉 게으름과 비동기식으로 AID 속성을 위반하는 것이다.
  • 성능:빠른 복제 시스템은 복잡하고 통신 지연 시간을 증가시킨다.
  • 무결성:관련 노드 수가 증가하고 지연 시간이 증가함에 따라 충돌 해결과 같은 문제는 난해해질 수 있다.

구현

디렉터리 서비스

많은 디렉토리 서버는 LDAP(Lightweight Directory Access Protocol)를 기반으로 하며 다중 마스터 복제를 구현한다.

Active Directory

디렉터리 서버에 가장 널리 사용되는 다중 마스터 복제 구현 중 하나는 마이크로소프트Active Directory이다.Active Directory 내에서 하나의 도메인 컨트롤러에서 업데이트된 개체는 다중 마스터 복제를 통해 다른 도메인 컨트롤러로 복제된다.모든 도메인 컨트롤러가 서로 복제하는 것은 필요하지 않다. 이는 대규모 Active Directory 배포에서 과도한 네트워크 트래픽을 유발할 수 있기 때문이다.대신 도메인 컨트롤러는 모든 서버가 과도한 복제 트래픽 없이 적시에 업데이트되도록 하는 복잡한 업데이트 패턴을 가지고 있다.그러나 일부 Active Directory 요구 사항은 Flexible 단일 마스터 작업을 통해 더 잘 처리된다.

CA 디렉터리

CA 디렉토리는 다중 마스터 복제를 지원한다.

OpenDS/OpenDJ

OpenDS(및 후속 제품 OpenDJ)는 버전 1.0 이후 멀티마스터를 구현했다.OpenDS/OpenDJ 다중 마스터 복제는 비동기식으로, 다수의 노드로 확장할 수 있는 게시-구독 메커니즘이 있는 로그를 사용한다.OpenDS/OpenDJ 복제는 항목 및 속성 수준에서 충돌을 해결한다.광역 네트워크를 통해 OpenDS/OpenDJ 복제를 사용할 수 있다.

오픈LDAP

널리 사용되는 오픈 소스 LDAP 서버인 OpenLDAP는 버전 2.4(2007년 10월) 이후 멀티마스터 복제를 구현한다[1].

데이터베이스 관리 시스템

아마존 오로라

아마존 오로라는 redo 레코드를 복제하는 writer node와 6개의 스토리지 노드로 구성되어 있다.작성기 노드는 각 스토리지 노드에 변경사항을 전송하며, 각 노드는 충돌을 확인한 후 변경사항 확인 또는 거부사항을 보고한다.[2]

아파치 카우치DB

Apache CouchDB는 추가 전용 데이터 저장소를 사용하고 MVCC(Multiversion Concurrency Control)를 사용하여 구축된 HTTP 기반의 간단한 다중 마스터 복제 시스템을 사용한다.

각 문서에는 개정 ID가 포함되어 있으므로, 모든 기록에는 자체로 이어지는 모든 이전 개정 ID의 진화 타임라인이 저장되며, 이는 CouchDB의 MVCC 시스템의 기초를 제공한다.또한 전체 데이터베이스에 대한 바이시퀀스 색인을 유지한다."복제 프로세스는 문서의 마지막 수정본만 복사하므로 원본 데이터베이스에만 있었던 모든 이전 수정본은 대상 데이터베이스로 복사되지 않는다."[3]

CouchDB 복제자는 두 가지 모두에 대해 작용하는 간단한 HTTP 클라이언트 역할을 한다.원본대상 데이터베이스.데이터베이스에 대한 현재 시퀀스 ID를 비교하고, 수정기호 차이를 계산하며, 원본 데이터베이스 이력에서 발견한 내용을 바탕으로 대상에 필요한 변경을 한다.양방향 복제는 단순히 소스 과 대상 값이 스와핑된 상태에서 다른 복제를 수행한 결과물이다.

아랑고DB

ArangoDB는 멀티마스터 복제를 사용하는 네이티브 멀티모델 데이터베이스 시스템이다.ArangoDB의 클러스터는 단일 장애 지점이 없는 CP 마스터/마스터 모델을 사용한다.클러스터가 네트워크 파티션과 마주칠 때 ArangoDB는 가용성보다 내부 일관성을 유지하는 것을 선호한다.클라이언트는 어떤 노드에 연결하든 상관없이 동일한 데이터베이스 보기를 경험한다.그리고, 클러스터는 하나의 기계가 고장나더라도 요청을 계속 처리한다.[4]

구름무늬

분산형 데이터베이스 시스템인 CloudantApache CouchDB와 대체로 동일한 HTTP API를 사용하며, MVCC(Multiversion Concurrency Control)를 사용하여 복제할 수 있는 동일한 기능을 노출한다.Cloudant 데이터베이스는 서로 간에 복제할 수 있지만 내부적으로는 Cloudant 클러스터 내의 노드가 멀티마스터 복제를 사용하여 서로 동기화 상태를 유지하고 API 소비자에게 고가용성을 제공한다.

eXtremeDB 클러스터

eXtremeDB 클러스터는 McObject의 eXtreme을 위한 클러스터링 하위 시스템이다.DB 내장 데이터베이스 제품군.동기식(2상 커밋) 방식으로 트랜잭션을 복제하여 여러 하드웨어 노드에 걸쳐 데이터베이스 일관성을 유지한다.eXtremeDB 클러스터의 중요한 특성은 전체 트랜잭션의 성패를 보장할 수 있는 로그 파일 기반, SQL 문 기반 또는 기타 복제 체계와는 대조적으로 트랜잭션 복제다.따라서 eXtremeDB 클러스터는 AID를 준수하는 시스템(BASE 또는 궁극적인 일관성이 아님)이며, 클러스터 노드에서 실행된 쿼리는 다른 클러스터 노드에서 실행된 것과 동일한 결과를 반환한다.

오라클

데이터베이스 클러스터는 두 가지 방법 중 하나를 사용하여 다중 마스터 복제를 구현한다.비동기 다중 마스터 복제는 지연된 트랜잭션 대기열에 대한 데이터 변경을 커밋하며, 이 대기열은 클러스터의 모든 데이터베이스에서 정기적으로 처리된다.동기식 다중 마스터 복제는 Oracle의 2단계 커밋 기능을 사용하여 클러스터가 있는 모든 데이터베이스가 일관된 데이터 집합을 갖도록 한다.

마이크로소프트 SQL

Microsoft SQL은 피어 투 피어 복제를 통해 다중 마스터 복제를 제공한다.여러 노드에 걸쳐 데이터 복사본을 유지 관리하여 스케일아웃 및 고가용성 솔루션을 제공한다.트랜잭션 복제를 기반으로 구축된 피어 투 피어 복제는 거의 실시간으로 트랜잭션에 일관된 변화를 전파한다.[5]

MySQL / 마리아DB

기본적인 수준에서는 순환 복제가 가능한 MySQL 버전 3.23으로 시작하는 다중 마스터 복제 계획을 달성할 수 있다.여기서 출발하여 MariaDBMySQL은 각각 다른 뉘앙스를 가진 복제 지원 서비스를 제공한다.

직접적 지원의 관점에서 보면 다음과 같다.

MariaDB: 기본적으로 버전 10.0 이후 다중 마스터 복제를 지원하지만 충돌 해결은 지원되지 않으므로 각 마스터는 서로 다른 데이터베이스를 포함해야 한다.MySQL에서는 버전 5.7.6부터 사용할 수 있는 다중 소스라고 명명된다.

MySQL: MySQL Group Replication, 충돌 처리 및 분산 복구 기능이 있는 가상 동기식 다중 마스터용 플러그인 5.7.17과 함께 출시되었다.

클러스터 프로젝트:

MySQL Cluster는 MySQL Server의 진정한 다중 마스터 기능을 위해 버전 6.3 이후 여러 마스터 간의 충돌 감지 및 해결을 지원한다.

또한 InnoDB 스토리지 엔진과 맞춤형 복제 플러그인의 포크를 기반으로 진정한 멀티마스터 기능을 제공하는 외부 프로젝트인 Galera Cluster도 있다.복제는 동기식이기 때문에 충돌은 불가능하다.

또한 Percona XtraDB Cluster는 Galera 복제 라이브러리와 다중 마스터를 지원하는 MySQL의 조합이다.

PostgreSQl

동기식 다중 마스터 복제를 위한 다양한 옵션이 존재한다.Mozilla Public License에 따라 사용할 수 있는 Postgres-XLPostgres-XC(현재 Postgres-X2로 알려져 있음)는 Postgres-XL과 동일한 라이센스로 사용할 수 있다.SQL 자체가 예다.PgCluster(Wayback Machine에서 Archive 2017-07-05) 프로젝트는 2007년에 포기된 것에 유의하십시오.

Postgre에 대한 복제 문서SQL[6] 사용 가능한 다양한 복제 유형을 분류한다.분산 다중 마스터에는 Bucardo, Rubyrep 및 BDR 양방향 복제를 비롯한 다양한 옵션이 존재한다.

PostgreSQL BDR

BDR은 궁극적으로 Postgre에 포함되는 것을 목표로 한다.SQL 코어(SQL Core)는 이전 옵션에 비해 상당히 향상된 성능을[7] 보여 주는 것으로 벤치마킹되었다.BDR은 데이터 쓰기(DML)의 복제뿐만 아니라 데이터 정의(DDL)와 글로벌 시퀀스의 변경도 포함한다.BDR 노드는 0.9 버전부터 온라인으로 업그레이드할 수 있다.2Quadrant는 2012년부터 지속적으로 BDR을 개발해왔으며 2014년부터는 생산에 사용되는 시스템을 갖추고 있다.최신 버전의 BDR 3.6은 칼럼 레벨 충돌 감지, CRDT, 빠른 복제, 다중 노드 쿼리 일관성 및 기타 많은 기능을 제공한다.

잉그레스

Ingres Replicator 내에서, 한 Ingres 서버에서 업데이트된 오브젝트는 다중 마스터 복제를 통해 로컬 또는 원격에 관계없이 다른 서버로 복제될 수 있다.한 서버가 실패하면 클라이언트 연결을 다른 서버로 재연결할 수 있다.대규모 구현에서 과도한 네트워크 트래픽을 유발할 수 있으므로 환경의 모든 Ingres 서버가 서로 복제할 필요는 없다.대신 잉그레스 복제자는 과도한 복제 트래픽 없이 적절한 데이터를 적절한 서버로 복제할 수 있도록 한다.즉, 환경의 일부 서버는 장애 조치(failover) 후보 서버 역할을 할 수 있고, 다른 서버는 부서별 솔루션에 대한 열 또는 테이블의 하위 집합 관리, 지리적 영역에 대한 행의 하위 집합 관리 또는 보고 서버에 대한 단방향 복제와 같은 다른 요구 사항을 충족할 수 있다는 것을 의미한다.소스, 대상 또는 네트워크 장애가 발생할 경우, 전체 트랜잭션이 복제되거나, 또는 그 중 어느 것도 복제되지 않도록 하여 이 2상 커밋 프로토콜을 통해 데이터 무결성을 강제한다.또한 Ingres Replicator는 RDB를 통해 작동할 수 있다.MS를 여러 공급업체에서[which?] 연결하여 사용함.

참고 항목

참조

  1. ^ Postgres-XCArced 2012-07-01의 웨이백 머신에서 Postgres-XC란 무엇인가?:

    쓰기 확장 가능은 Postgres-XC를 원하는 만큼의 데이터베이스 서버로 구성할 수 있고 단일 데이터베이스 서버가 할 수 없는 것과 비교하여 더 많은 쓰기(업데이트 SQL 문)를 처리할 수 있음을 의미한다.

  2. ^ "Build highly available MySQL applications using Amazon Aurora Multi-Master".
  3. ^ "Apache CouchDB Replication". Apache Foundation - Apache CouchDB Project.
  4. ^ "ArangoDB Cluster Architecture". ArangoDB - ArangoDB Architecture.
  5. ^ 피어 투 피어 트랜잭션 복제
  6. ^ Postgre에 대한 여러 복제 솔루션 비교Postgre에서 발견된 SQLSQL 9 설명서.검색된 2012-05-08
  7. ^ BDR Performance Petr Jelinek, 2쿼드런트.검색된 2014-07-10

외부 링크