Aurora PostgreSQL에 대한 로컬 쓰기 전달 작업 - Amazon Aurora

Aurora PostgreSQL에 대한 로컬 쓰기 전달 작업

다음 섹션을 사용하여 데이터베이스 클러스터에 로컬 쓰기 전달이 활성화되어 있는지 확인하고, 호환성 고려 사항을 확인하며, 구성 가능한 파라미터 및 인증 설정을 참조할 수 있습니다. 이 정보는 Aurora PostgreSQL의 로컬 쓰기 전달 기능을 효과적으로 활용할 수 있는 세부 정보를 제공합니다.

참고

로컬 쓰기 전달을 사용하는 클러스터의 라이터 인스턴스가 다시 시작되면 로컬 쓰기 전달을 사용하는 리더 인스턴스의 활성 상태이며 전달된 트랜잭션 및 쿼리가 모두 자동으로 닫힙니다. 라이터 인스턴스를 다시 사용할 수 있게 되면 이러한 트랜잭션을 다시 시도할 수 있습니다.

DB 클러스터에 로컬 쓰기 전달이 활성화되어 있는지 확인

DB 클러스터에서 로컬 쓰기 전달을 사용할 수 있는지 확인하려면 클러스터에 LocalWriteForwardingStatus 속성이 enabled로 되어 있는지 확인합니다.

‎‎AWS Management Console에서 클러스터의 세부 정보 페이지 구성 탭에서 로컬 읽기 복제본 쓰기 전달이 활성화됨 상태인 것을 볼 수 있습니다.‎‎

모든 클러스터에 대한 로컬 쓰기 전달 설정의 상태를 보려면 다음 AWS CLI 명령을 실행합니다.

aws rds describe-db-clusters \ --query '*[].{DBClusterIdentifier:DBClusterIdentifier,LocalWriteForwardingStatus:LocalWriteForwardingStatus}' [ { "LocalWriteForwardingStatus": "enabled", "DBClusterIdentifier": "write-forwarding-test-cluster-1" }, { "LocalWriteForwardingStatus": "disabled", "DBClusterIdentifier": "write-forwarding-test-cluster-2" }, { "LocalWriteForwardingStatus": "requested", "DBClusterIdentifier": "test-global-cluster-2" }, { "LocalWriteForwardingStatus": "null", "DBClusterIdentifier": "aurora-postgresql-v2-cluster" } ]

DB 클러스터는 LocalWriteForwardingStatus에 대해 다음과 같은 값을 가질 수 있습니다.

  • disabled - 로컬 쓰기 전달이 비활성화되었습니다.

  • disabling - 로컬 쓰기 전달을 비활성화하는 중입니다.

  • enabled - 로컬 쓰기 전달이 활성화되었습니다.

  • enabling - 로컬 쓰기 전달을 활성화하는 중입니다.

  • null - 이 DB 클러스터에서는 로컬 쓰기 전달을 사용할 수 없습니다.

  • requested - 로컬 쓰기 전달이 요청되었지만 아직 활성 상태가 아닙니다.

Aurora PostgreSQL의 로컬 쓰기 전달 제한 사항

특정 명령문은 쓰기 전달과 함께 Aurora PostgreSQL에서 사용할 때 허용되지 않거나 부실 결과를 생성할 수 있습니다. 또한 사용자 정의 함수 및 사용자 정의 프로시저는 지원되지 않습니다. 따라서 EnableLocalWriteForwarding 설정은 DB 클러스터에 대해 기본적으로 꺼져 있습니다. 이 설정을 켜기 전에, 애플리케이션 코드가 이러한 제한 사항의 영향을 받지 않는지 확인하십시오.

다음과 같은 종류의 SQL 문을 쓰기 전달과 함께 사용할 수 있습니다.

  • INSERT, DELETEUPDATE와 같은 데이터 조작 언어(DML) 문

  • SELECT FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }

  • PREPAREEXECUTE

  • 이 목록에 있는 문이 포함된 EXPLAIN

  • DML 명령문은 INSERT ... SELECT 명령문 또는 DELETE ... WHERE 명령문과 같이 여러 부분으로 구성될 수 있습니다. 이 경우 전체 명령문이 라이터 DB 인스턴스로 전달되어 그 위치에서 실행됩니다.

다음과 같은 종류의 SQL 문은 쓰기 전달에서 지원되지 않습니다.

참고

이러한 문은 애플리케이션에서 암시적으로 사용하거나 PostgreSQL 프로토콜로 추론할 수 있습니다. 예를 들어 PL/SQL 예외 처리 시 지원되는 문이 아닌 SAVEPOINT를 사용할 수 있습니다.

  • 데이터 정의 언어(DDL) 문

  • ANALYZE

  • CLUSTER

  • COPY

  • 커서 - 커서는 지원되지 않으므로 로컬 쓰기 전달을 사용하기 전에 커서를 닫아야 합니다.

  • 사용자 정의 함수 및 사용자 정의 절차.

  • GRANT|REVOKE|REASSIGN OWNED|SECURITY LABEL

  • LOCK

  • SAVEPOINT

  • SELECT INTO

  • SET CONSTRAINTS

  • TRUNCATE

  • VACUUM

  • LISTEN / NOTIFY

  • 2단계 커밋 명령: PREPARE TRANSACTION, COMMIT PREPARED, ROLLBACK PREPARED

  • 시퀀스 업데이트: nextval(), setval()

쓰기 전달을 위한 기본 파라미터 설정

Aurora 클러스터 파라미터 그룹에는 로컬 쓰기 전달 기능에 대한 설정이 포함되어 있습니다. 이러한 파라미터는 클러스터 파라미터이므로 각 클러스터의 모든 DB 인스턴스에 이러한 변수의 동일한 값이 있어야 합니다. 이러한 파라미터에 대한 자세한 내용은 다음 표에 요약되어 있으며, 표 뒤에 사용 참고 사항이 나와 있습니다.

파라미터 범위 유형 기본값 유효값
apg_write_forward.connect_timeout 세션 30 0–2147483647
apg_write_forward.consistency_mode 세션 enum 세션 SESSION, EVENTUAL, GLOBAL, 및 OFF
apg_write_forward.idle_in_transaction_session_timeout 세션 밀리초 86400000 0–2147483647
apg_write_forward.idle_session_timeout 세션 밀리초 300000 0–2147483647
apg_write_forward.max_forwarding_connections_percent 전 세계 int 25 1–100

apg_write_forward.max_forwarding_connections_percent 파라미터는 리더에서 전달된 쿼리를 처리하기 위해 사용할 수 있는 데이터베이스 연결의 상한입니다. 이 값은 라이터 DB 인스턴스에 대한 max_connections 설정의 백분율로 표시됩니다. 예를 들어 max_connections800이고 apg_write_forward.max_forwarding_connections_percent10이면 라이터는 최대 80개의 동시 전달 세션을 허용합니다. 이러한 연결은 max_connections 설정을 통해 관리되는 동일한 연결 풀에서 발생합니다. 이 설정은 클러스터에 로컬 쓰기 전달이 활성화된 경우 라이터 DB 인스턴스에만 적용됩니다.

다음 설정을 사용하여 로컬 쓰기 전달 요청을 제어합니다.

  • apg_write_forward.consistency_mode - 읽기 전용 복제본에서 읽기 일관성 정도를 제어하는 세션 수준 파라미터입니다. 유효한 값은 SESSION, EVENTUAL, GLOBAL 또는 OFF입니다. 기본적으로 이 값은 SESSION로 설정됩니다. 값을 OFF로 설정하면 세션에서 로컬 쓰기 전달이 비활성화됩니다. 일관성 수준에 대한 자세한 내용은 Aurora PostgreSQL에서 로컬 쓰기 전달의 일관성 및 격리 단원을 참조하세요. 이 파라미터는 로컬 쓰기 전달이 활성화되어 있는 리더 인스턴스에만 적용됩니다.

  • apg_write_forward.connect_timeout - 라이터 DB 인스턴스에 연결할 때 읽기 전용 복제본이 연결을 끊기 전에 대기하는 최대 시간(초)입니다. 값이 0이면 무한정 대기할 수 있다는 뜻입니다.

  • apg_write_forward.idle_in_transaction_session_timeout - 라이터 DB 인스턴스가 연결을 닫기 전에 트랜잭션이 열려 있는 읽기 전용 복제본에서 전달된 연결의 활동을 기다리는 시간(밀리초)입니다. 세션이 이 기간을 넘어 트랜잭션에서 유휴 상태로 유지되면 Aurora에서 세션이 종료됩니다. 0 값은 제한 시간을 비활성화합니다.

  • apg_write_forward.idle_session_timeout - 라이터 DB 인스턴스가 연결을 닫기 전에 읽기 전용 복제본에서 전달된 연결의 활동을 기다리는 시간(밀리초)입니다. 세션이 이 기간을 넘어 유휴 상태로 유지되면 Aurora에서 세션이 종료됩니다. 0 값은 제한 시간을 비활성화합니다.

rdswriteforwarduser

rdswriteforwarduser는 읽기 전용 복제본과 라이터 DB 인스턴스 간의 연결을 설정하는 데 사용할 사용자입니다.

참고

rdswriteforwarduser는 PUBLIC 역할을 통해 CONNECT 권한을 고객 데이터베이스에 상속합니다. PUBLIC 역할에 대한 권한이 취소된 경우 쓰기를 전달해야 하는 데이터베이스에 대한 CONNECT 권한을 부여해야 합니다.