공유 디스크 장애 조치는 데이터베이스 사본 하나만 있으면 동기화 오버 헤드를 피합니다. 여러 서버에서 공유하는 단일 디스크 배열을 사용합니다. 기본 데이터베이스 서버가 실패하면 대기 서버가 데이터베이스 충돌에서 복구되는 것처럼 데이터베이스를 마운트하고 시작할 수 있습니다. 이것은 데이터 손실없이 빠른 장애 조치를 허용합니다.
공유 하드웨어 기능은 네트워크 저장 장치에서 일반적입니다. 네트워크 파일 시스템 사용도 가능하지만 파일 시스템에 전체가 있도록주의해야합니다.posix행동 (참조섹션 19.2.2.1). 이 방법의 중대한 한계는 공유 디스크 어레이가 실패하거나 손상되면 기본 및 대기 토토 베이가 모두 작동하지 않는다는 것입니다. 또 다른 문제는 기본 토토 베이가 실행되는 동안 대기 토토 베이가 공유 스토리지에 액세스해서는 안된다는 것입니다.
공유 하드웨어 기능의 수정 된 버전은 파일 시스템 복제입니다. 여기서 파일 시스템에 대한 모든 변경 사항은 다른 컴퓨터에있는 파일 시스템에 미러링됩니다. 유일한 제한은 대기 토토 베이에 파일 시스템의 일관된 사본을 갖도록하는 방식으로 미러링을 수행해야한다는 것입니다. 구체적으로, 대기에 쓰기는 기본의 것과 동일한 순서로 수행되어야합니다..DRBDLinux 용 인기있는 파일 시스템 복제 솔루션입니다.
Warm and Hot Standby 토토 베이는 쓰기 awead 로그 스트림을 읽어 최신 상태로 유지할 수 있습니다 (Wal) 레코드. 기본 서버가 실패하면 대기에는 기본 서버의 거의 모든 데이터가 포함되어 있으며 새 기본 데이터베이스 서버로 빠르게 만들 수 있습니다. 동기식이거나 비동기식 일 수 있으며 전체 데이터베이스 서버에 대해서만 수행 할 수 있습니다.
파일 기반 로그 배송 (을 사용하여 대기 토토 베이를 구현할 수 있습니다.섹션 27.2) 또는 스트리밍 복제 (참조섹션 27.2.5) 또는 둘 다의 조합. 핫 대기에 대한 정보는 참조PostgreSQL : 문서 : 16 : 27.4. 뜨거운 스포츠 토토 베트맨.
논리적 복제는 데이터베이스 토토 베이가 다른 토토 베이로 데이터 수정 스트림을 보낼 수 있도록합니다.PostgreSQLLogical Replication은 WAL에서 논리적 데이터 수정 스트림을 구성합니다. 논리적 복제는 테이블별로 데이터 변경을 복제 할 수 있습니다. 또한 자체 변경 사항을 게시하는 토토 베이는 다른 토토 베이의 변경 사항을 구독하여 데이터가 여러 방향으로 흐를 수 있습니다. 논리적 복제에 대한 자세한 내용은 참조하십시오.PostgreSQL : 문서 : 16 : 31 장. 논리적 젠 토토. 논리적 디코딩 인터페이스 (를 통해PostgreSQL : 문서 : 16 : 49 장. 무지개 토토 디코딩), 타사 확장은 또한 유사한 기능을 제공 할 수 있습니다.
트리거 기반 복제 설정은 일반적으로 데이터 수정 쿼리를 지정된 기본 토토 베이로 Funnels합니다. 기본 토토 베이는 테이블별로 작동하면 대기 토토 베이로 데이터 변경 (일반적으로)을 비동기로 보냅니다. 대기 토토 베이는 기본이 실행되는 동안 쿼리에 응답 할 수 있으며 일부 지역 데이터 변경 또는 쓰기 활동을 허용 할 수 있습니다. 이 형태의 복제는 종종 큰 분석 또는 데이터웨어 하우스 쿼리를 오프로드하는 데 사용됩니다.
Slony-I는 테이블 당 세분성을 가진 이러한 유형의 복제의 예이며 여러 대기 서버를 지원합니다. 대기 서버를 비동기 적으로 업데이트하기 때문에 (배치) 실패 중에 데이터 손실이 가능합니다..
SQL 기반 복제 미들웨어를 사용하여 프로그램은 모든 SQL 쿼리를 가로 채고 하나 또는 모든 서버로 보냅니다. 각 서버는 독립적으로 작동합니다. 모든 서버가 변경 사항을 수신하도록 읽기 제기 쿼리는 모든 서버로 전송되어야합니다. 그러나 읽기 전용 쿼리는 하나의 서버로만 전송 될 수 있으므로 읽기 워크로드가 해당 서버를 배포 할 수 있습니다.
쿼리가 단순히 방송되지 않은 경우와 같은 기능random ()
, current_timestamp
및 시퀀스는 서버에서 다른 값을 가질 수 있습니다. 이는 각 서버가 독립적으로 작동하기 때문에 SQL 쿼리가 실제 데이터 변경보다는 방송되기 때문입니다. 허용 할 수없는 경우, 미들웨어 또는 응용 프로그램은 단일 소스에서 그러한 값을 결정한 다음 해당 값을 쓰기 쿼리에 사용해야합니다. 또한 모든 거래가 모든 서버에서 커밋 또는 중단, 아마도 2 단계 커밋 (를 사용하여주의를 기울여야합니다.거래 준비and준비).PGPOOL-IIandContinuent Tungsten이러한 유형의 복제의 예입니다.
랩톱이나 원격 서버와 같이 정기적으로 연결되지 않았거나 통신 링크가 느린 서버의 경우 서버간에 데이터를 일관성있게 유지하는 것은 어려운 일입니다. 비동기 멀티 마스터 복제를 사용하여 각 서버는 독립적으로 작동하며 다른 서버와 정기적으로 통신하여 충돌하는 트랜잭션을 식별합니다. 갈등은 사용자 또는 충돌 해결 규칙에 의해 해결 될 수 있습니다. Bucardo는 이러한 유형의 복제의 예입니다.
동기간 멀티 마스터 복제에서 각 토토 베이는 쓰기 요청을 수락 할 수 있으며 각 트랜잭션이 저지르기 전에 원래 토토 베이에서 다른 모든 토토 베이로 수정 된 데이터가 전송됩니다. 무거운 쓰기 활동은 과도한 잠금을 일으키고 지연을 저지르면 성능이 저하 될 수 있습니다. 읽기 요청은 모든 토토 베이로 전송 될 수 있습니다. 일부 구현은 공유 디스크를 사용하여 통신 오버 헤드를 줄입니다. 동기식 멀티 마스터 복제는 대부분 읽기 워크로드에 가장 적합하지만, 큰 장점은 모든 토토 베이가 쓰기 요청을 수락 할 수 있다는 것입니다. 기본 토토 베이와 대기 토토 베이간에 워크로드를 분할 할 필요가 없으며 데이터 변경이 한 토토 베이에서 다른 토토 베이로 전송되기 때문에와 같은 비 결정적 기능에 문제가 없습니다.random ()
.
PostgreSQL이 유형의 복제를 제공하지는 않지만PostgreSQL2 상 커밋 (거래 준비and준비 준비)) 응용 프로그램 코드 또는 미들웨어에서이를 구현하는 데 사용할 수 있습니다.
표 27.1위에 나열된 다양한 솔루션의 기능을 요약합니다.
표 27.1. 고 가용성,로드 밸런싱 및 복제 기능 매트릭스
기능 | 공유 디스크 | 파일 시스템 Repl. | 쓰기 로그 배송 | Logical Repl. | Trigger- 기반 REPL. | SQL Repl. 중간 웨이 | 비동기. MM Repl. | 동기화. MM Repl. |
---|---|---|---|---|---|---|---|---|
인기있는 예 | NAS | DRBD | 내장 스트리밍 대답. | 내장 논리 대체, pglogical | Londiste, Slony | PGPOOL-II | Bucardo | |
comm. 방법 | 공유 디스크 | 디스크 블록 | Wal | 논리 디코딩 | 테이블 행 | SQL | 테이블 행 | 테이블 행 및 행 잠금 |
특별 하드웨어가 필요 없음 | • | • | • | • | • | • | • | |
여러 기본 토토 베이 허용 | • | • | • | • | ||||
기본 오버 헤드 없음 | • | • | • | • | ||||
여러 토토 베이를 기다리지 않음 | • | with sync off | with sync off | • | • | |||
기본 실패는 데이터를 잃지 않습니다 | • | • | 동기화 | with sync on | • | • | ||
Replicas는 읽기 전용 쿼리를 허용 | hot standby | • | • | • | • | • | ||
표 당 세분화 | • | • | • | • | ||||
충돌 해결 필요 없음 | • | • | • | • | • | • |
위 카테고리에 맞지 않는 몇 가지 솔루션이 있습니다.
데이터 파티션은 테이블을 데이터 세트로 나눕니다. 각 세트는 하나의 토토 베이 만 수정할 수 있습니다. 예를 들어, 데이터는 각 사무실에 토토 베이가있는 런던과 파리 (예 : 런던과 파리)에서 분할 할 수 있습니다. 런던과 파리 데이터를 결합한 쿼리가 필요한 경우 응용 프로그램은 토토 베이를 모두 쿼리 할 수 있거나 기본/대기 복제를 사용하여 각 토토 베이에 대한 다른 사무실 데이터의 읽기 전용 사본을 유지할 수 있습니다..
위의 많은 솔루션을 사용하면 여러 토토 베이가 여러 쿼리를 처리 할 수 있지만 단일 쿼리를 사용하여 여러 토토 베이를 사용하여 더 빠르게 완료 할 수 없습니다. 이 솔루션을 사용하면 여러 토토 베이가 단일 쿼리에서 동시에 작동 할 수 있습니다. 일반적으로 토토 베이간에 데이터를 분할하고 각 토토 베이가 쿼리의 일부를 실행하고 결과를 중앙 토토 베이로 결합하여 사용자에게 반환하여 수행합니다. 이것은를 사용하여 구현할 수 있습니다.pl/proxy도구 세트.
또한이라는 점도 주목해야합니다.PostgreSQL오픈 소스이며 쉽게 확장되며, 많은 회사가 취해졌습니다PostgreSQL고유 한 장애 조치, 복제 및로드 밸런싱 기능을 갖춘 상업용 폐쇄 소스 솔루션을 만들었습니다. 이것들은 여기서 논의되지 않습니다.
문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면