데이터베이스 서버가 함께 작동하여 두 번째 서버가 기본 서버가 실패하면 신속하게 인수하십시오 (높음 가용성) 또는 여러 컴퓨터가 동일하게 서비스 할 수 있도록 데이터 (로드 밸런싱). 이상적으로는 데이터베이스 서버가 작동 할 수 있습니다 함께 원활하게. 정적 웹 페이지를 제공하는 웹 서버는 가능합니다 단순히로드 균형 잡힌 웹 요청에 의해 아주 쉽게 결합됩니다 여러 기계. 실제로 읽기 전용 데이터베이스 서버는 가능합니다 비교적 쉽게 결합했습니다. 불행히도 대부분의 데이터베이스 서버에는 요청의 읽기/쓰기 혼합이 있으며 서버를 읽고/쓰기 결합하기가 훨씬 어렵습니다. 이는 읽기 전용 데이터이기 때문입니다 각 서버에 한 번만 배치해야합니다. 서버를 모든 서버로 전파하여 향후 읽기를해야합니다. 해당 서버에 대한 요청은 일관된 결과를 반환합니다.
이 동기화 문제는 근본적인 어려움입니다 서버가 함께 작동합니다. 단일 솔루션이 없기 때문에 모든 사용 사례에 대한 동기화 문제의 영향을 제거합니다. 여러 솔루션이 있습니다. 각 솔루션은이를 다룹니다 다른 방식으로 문제를 해결하고 그 영향을 최소화합니다. 특정 작업량.
일부 솔루션은 하나만 허용하여 동기화를 처리합니다 데이터를 수정하려면 서버. 데이터를 수정할 수있는 서버는 다음과 같습니다 읽기/쓰기 또는 "마스터"서버라고합니다. 회신 할 수있는 서버 읽기 전용 쿼리를 "슬레이브"서버라고합니다. 할 수없는 서버 마스터 서버로 변경 될 때까지 액세스해야합니다. "대기"서버.
일부 솔루션은 동기식이므로 데이터 수정을 의미합니다 모든 서버가 가질 때까지 거래는 커밋 된 것으로 간주되지 않습니다 거래를 저질렀습니다. 이것은 장애 조치가 될 것임을 보장합니다 데이터를 잃지 않으며 모든로드 균형 잡힌 서버가 반환됩니다. 어떤 서버가 쿼리 되든 일관된 결과. ~ 안에 대조적으로, 비동기 솔루션은 사이에 약간의 지연이 가능합니다 커밋 시간과 다른 서버로의 전파, 일부 거래가 손실 될 수있는 가능성을 열어 백업 서버로의 전환 및 해당로드 밸런스 서버 약간 오래된 결과를 반환 할 수 있습니다. 비동기 통신 동기가 너무 느리면 사용됩니다.
솔루션은 또한 세분성으로 분류 할 수 있습니다. 일부 솔루션은 전체 데이터베이스 서버 만 처리 할 수 있으며 다른 사람들은 테이블 당 또는 다트베이스 별 수준에서 제어를 허용합니다.
성능은 어떤 선택 으로든 고려해야합니다. 일반적으로 있습니다 기능과 성능 간의 절충. 예를 들어, a 느린 네트워크를 통한 전체 동기 솔루션이 절단 될 수 있습니다 절반 이상의 성능, 비동기식은 성능에 미치는 영향을 최소화합니다.
이 섹션의 나머지 부분은 다양한 장애 조치를 간략하게 설명합니다. 토토 결과 및로드 밸런싱 솔루션. 에이용어집도 가능합니다.
공유 디스크 장애 조치는 동기화 오버 헤드를 피합니다 데이터베이스 사본이 하나뿐입니다. 단일 디스크를 사용합니다 여러 서버에서 공유하는 배열. 메인이라면 데이터베이스 서버가 실패하고 대기 서버가 마운트 할 수 있습니다. 그리고 데이터베이스가 회복되는 것처럼 데이터베이스를 시작합니다. 데이터베이스 충돌. 이를 통해 데이터가없는 빠른 장애 조치가 가능합니다 손실.
공유 하드웨어 기능은 네트워크에서 일반적입니다 저장 장치. 네트워크 파일 시스템도 사용합니다 가능하지만 파일 시스템을 관리해야합니다. 전체posix행동 (보다섹션 17.2.1). 이 방법의 중요한 한계는 다음과 같습니다 공유 디스크 어레이가 실패하거나 손상되면 기본 및 대기 서버는 모두 비 기능적입니다. 또 다른 문제는 대기 서버가 기본 서버가 실행되는 동안 공유 스토리지.
공유 하드웨어 기능의 수정 된 버전입니다 파일 시스템 토토 결과, 모든 파일 시스템이 변경되는 경우 다른 컴퓨터에 상주하는 파일 시스템에 미러링됩니다. 유일한 제한은 미러링을 수행해야한다는 것입니다. 대기 서버에 일관된 사본을 갖도록하는 방법 파일 시스템의 - 구체적으로, 대기에 씁니다. 마스터와 같은 순서로 수행해야합니다.DRBD인기있는 파일입니다 Linux 용 시스템 토토 결과 솔루션.
따뜻한 대기 서버 (참조섹션 24.4)는 전류를 유지할 수 있습니다 쓰기 로그 스트림을 읽음으로써 (Wal) 레코드. 기본 서버가 실패하면 따뜻한 대기에는 거의 모든 데이터가 포함됩니다. 기본 서버, 신속하게 새 마스터를 만들 수 있습니다. 데이터베이스 서버. 이것은 비동기식이며 만 수행 할 수 있습니다 전체 데이터베이스 서버의 경우
마스터 슬레이브 토토 결과 설정은 모든 데이터를 보냅니다 수정 마스터 서버에 대한 수정. 마스터 서버는 비동기식으로 데이터 변경을 슬레이브로 보냅니다 섬기는 사람. 슬레이브는 읽기 전용 쿼리에 대답 할 수 있습니다 마스터 서버가 실행 중입니다. 슬레이브 서버는 이상적입니다 데이터웨어 하우스 쿼리.
Slony-I가 예입니다 이 유형의 복제 중에서 테이블 당 세분화, 여러 노예에 대한 지원. 그것이 업데이트되기 때문입니다 슬레이브 서버는 비동기 적으로 (배치로) 가능합니다 실패 중 데이터 손실.
명령문 기반 토토 결과 미들웨어, 프로그램 모든 SQL 쿼리를 가로 채고 하나 또는 전부로 보냅니다. 서버. 각 서버는 독립적으로 작동합니다. 읽기 쓰기 쿼리는 모든 서버로 전송되며 읽기 전용 쿼리 하나의 서버로만 전송 될 수 있으므로 읽기 워크로드를 허용합니다. 배포 될 예정입니다.
쿼리가 단순히 방송되지 않은 기능, 기능인 경우
좋다random ()
, current_timestamp
및 시퀀스
서버에 다른 값이 있습니다. 이건 때문입니다
각 서버는 독립적으로 작동하며 SQL 쿼리 때문에
방송됩니다 (실제 수정 행 아님). 이것이 있다면
용납 할 수없는 미들웨어 또는 응용 프로그램이어야합니다
단일 서버에서 그러한 값을 쿼리 한 다음 사용하십시오.
쓰기 쿼리의 값. 또한,주의를 기울여야합니다
트랜잭션은 모든 서버에서 커밋하거나 중단합니다
2 단계 커밋 사용 ( 사용거래 준비andPostgreSQL : 문서. PGPOOL-IIandequoia예입니다
이 유형의 토토 결과 중.
정기적으로 연결되지 않은 서버의 경우 랩톱 또는 원격 서버로 데이터가 일관되게 유지됩니다 서버는 과제입니다. 비동기 멀티 마스터 사용 토토 결과, 각 서버는 독립적으로 작동합니다 주기적으로 다른 서버와 통신합니다 상충되는 거래를 식별합니다. 갈등은 될 수 있습니다 사용자 또는 충돌 해결 규칙에 의해 해결됩니다.
동기식 멀티 마스터 토토 결과에서 각 서버는 할 수 있습니다
쓰기 요청을 수락하고 수정 된 데이터가 전송됩니다
원래 서버에서 각각의 모든 서버로
트랜잭션이 필요합니다. 무거운 쓰기 활동으로 인해 발생할 수 있습니다
과도한 잠금으로 성능이 저하됩니다. 사실은,
쓰기 성능은 종종 단일의 성능보다 나쁩니다.
섬기는 사람. 읽기 요청은 모든 서버로 전송 될 수 있습니다. 일부
구현은 공유 디스크를 사용하여 통신을 줄입니다
간접비. 동기간 멀티 마스터 토토 결과가 가장 좋습니다
대부분의
서버는 쓰기 요청을 수락 할 수 있습니다.
마스터와 슬레이브 서버 간의 파티션 워크로드
데이터 변경이 한 서버에서
다른 하나는 비 결정에 문제가 없습니다
와 같은 기능random ()
.
PostgreSQL그렇지 않습니다 이 유형의 토토 결과를 제공하십시오PostgreSQL2 상 커밋 (PostgreSQL : 문서and준비 준비)를 사용할 수 있습니다 응용 프로그램 코드 또는 미들웨어에서이를 구현하려면
때문에PostgreSQLis 오픈 소스와 쉽게 확장 된 많은 회사들이 촬영PostgreSQL및 고유 한 상업용 폐쇄 소스 솔루션을 만들었습니다 장애 조치, 토토 결과 및로드 밸런싱 기능.
표 25-1나열된 다양한 솔루션의 기능을 요약합니다 위에.
표 25-1. 고 가용성,로드 밸런싱, 및 복제 기능 매트릭스
기능 | 공유 디스크 장애 조치 | 파일 시스템 토토 결과 | PITR을 사용하는 따뜻한 대기 | 마스터 슬레이브 토토 결과 | 명령문 기반 토토 결과 미들웨어 | 비동기 멀티 마스터 토토 결과 | 동기 멀티 마스터 토토 결과 |
---|---|---|---|---|---|---|---|
특별 하드웨어 필요 없음 | • | • | • | • | • | • | |
여러 마스터 서버 허용 | • | • | • | ||||
마스터 서버 오버 헤드 없음 | • | • | • | ||||
여러 서버를 기다리지 않음 | • | • | • | • | |||
마스터 실패는 데이터를 잃지 않을 것입니다 | • | • | • | • | |||
노예가 읽기 전용 쿼리를 허용 | • | • | • | • | |||
표 당 세분화 | • | • | • | ||||
충돌 해결 필요 없음 | • | • | • | • | • | ||
커뮤니케이션 방법 | 공유 디스크 | 디스크 블록 | WAL | 테이블 행 | SQL | 테이블 행 | 테이블 행 및 행 잠금 |
위의 내용에 맞지 않는 몇 가지 솔루션이 있습니다. 카테고리 :
데이터 파티셔닝은 테이블을 데이터 세트로 분할합니다. 각 세트 하나의 서버 만 수정할 수 있습니다. 예를 들어, 데이터는 할 수 있습니다 사무실에서 분할됩니다 (예 : 런던과 파리 각 사무실의 서버. 런던을 결합한 쿼리 인 경우 파리 데이터가 필요하며 응용 프로그램은 두 가지를 모두 쿼리 할 수 있습니다 서버 또는 마스터/슬레이브 복제를 사용하여 각각에 대한 다른 사무실 데이터의 읽기 전용 사본 섬기는 사람.
위의 많은 솔루션을 사용하면 여러 서버가 허용됩니다 여러 쿼리를 처리하지만 단일 쿼리를 허용하지 않습니다. 여러 서버를 사용하여 더 빨리 완료하십시오. 이 솔루션 여러 서버가 동시에 단일에서 동시에 작동 할 수 있습니다 질문. 일반적으로 데이터를 분할하여 달성됩니다 서버 중에서 각 서버가 해당 부분을 실행하도록합니다. 쿼리 및 반환 결과는 결합되어 사용자에게 반환됩니다.PGPOOL-II이 기능이 있습니다. 또한, 이것은를 사용하여 구현할 수 있습니다.pl/proxy도구 세트.