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
,DELETE
및UPDATE
와 같은 데이터 조작 언어(DML) 문 -
SELECT FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }
문 -
PREPARE
및EXECUTE
문 -
이 목록에 있는 문이 포함된
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_connections
가 800
이고 apg_write_forward.max_forwarding_connections_percent
가 10
이면 라이터는 최대 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 권한을 부여해야 합니다.