액티브-액티브 복제의 충돌 처리
pgactive
확장은 클러스터별이 아니라 데이터베이스별로 작동합니다. pgactive
를 사용하는 각 DB 인스턴스는 독립 인스턴스이며 모든 소스의 데이터 변경을 수락할 수 있습니다. 변경 사항이 DB 인스턴스로 전송되면 PostgreSQL은 변경 사항을 로컬에서 커밋한 다음 pgactive
를 사용하여 변경 사항을 다른 DB 인스턴스에 비동기적으로 복제합니다. 두 PostgreSQL DB 인스턴스가 거의 동시에 같은 레코드를 업데이트하는 경우 충돌이 발생할 수 있습니다.
pgactive
확장은 충돌 감지 및 자동 해결을 위한 메커니즘을 제공합니다. 두 DB 인스턴스 모두에서 트랜잭션이 커밋된 시점의 타임스탬프를 추적하고 최신 타임스탬프와 함께 변경 사항을 자동으로 적용합니다. 또한 pgactive
확장은 pgactive.pgactive_conflict_history
테이블에서 충돌이 발생하는 경우에 이를 로깅합니다.
pgactive.pgactive_conflict_history
는 계속 규모가 늘어납니다. 제거 정책을 정의할 수 있습니다. 정기적으로 일부 레코드를 삭제하거나 이 관계에 대한 파티션 스키마를 정의하여 수행할 수 있으며, 나중에 원하는 파티션을 분리, 삭제, 잘라낼 수 있습니다. 정기적으로 제거 정책을 구현하기 위한 한 가지 옵션은 pg_cron
확장을 사용하는 것입니다. PostgreSQL pg_cron 확장을 사용하여 유지 관리 일정 예약 pg_cron
기록 테이블에 대한 다음 예제 정보를 참조하세요.