pgactive 확장에 대한 파라미터 설정 구성 - Amazon Relational Database Service

pgactive 확장에 대한 파라미터 설정 구성

다음 쿼리를 사용하여 pgactive 확장과 관련된 모든 파라미터를 볼 수 있습니다.

app=> SELECT * FROM pg_settings WHERE name LIKE 'pgactive.%';

다양한 파라미터를 사용하여 pgactive 확장을 구성할 수 있습니다. 이러한 파라미터는 AWS Management Console 또는 AWS CLI 인터페이스를 통해 설정할 수 있습니다.

기본 pgactive 확장 파라미터

다음 표에서는 pgactive 확장의 기본 파라미터에 대한 참조를 제공합니다.

파라미터

단위

Default

설명

pgactive.conflict_logging_include_tuples

boolean

pgactive 확장에 대한 전체 튜플 정보를 로깅합니다.

참고

변경 사항을 적용하려면 서버를 재시작해야 합니다.

pgactive.log_conflicts_to_table

boolean

pgactive 확장이 감지된 충돌을 pgactive.pgactive_conflict_history 테이블에 로깅할지 여부를 결정합니다. 자세한 내용은 충돌 로깅을 참조하세요.

참고

변경 사항을 적용하려면 서버를 재시작해야 합니다.

pgactive.log_conflicts_to_logfile

boolean

pgactive 확장이 감지된 충돌을 PostgreSQL 로그 파일에 로깅할지 여부를 결정합니다. 자세한 내용은 충돌 로깅을 참조하세요.

참고

변경 사항을 적용하려면 서버를 재시작해야 합니다.

pgactive.synchronous_commit

boolean

끄기

pgactive 적용 작업자의 커밋 동작을 결정합니다. 비활성화(꺼짐)되면 적용 작업자가 비동기 커밋을 수행하여 적용 작업 중에 PostgreSQL 처리량이 개선되지만, 업스트림에 대한 재생 확인은 지연됩니다. off로 설정하면 항상 안전하고 트랜잭션 손실이나 건너뛰기가 발생하지 않습니다. 이 설정은 다운스트림 노드의 디스크 플러시 타이밍 및 확인이 업스트림으로 전송되는 시점에만 영향을 미칩니다. 체크포인트 또는 주기적 작업과 같은 관련 없는 작업을 통해 커밋이 디스크로 플러시될 때까지 시스템에서 재생 플러시 확인 전송이 지연됩니다. 그러나 업스트림이 synchronous_standby_names에 나열된 다운스트림을 포함하는 경우 이를 off로 설정하면 업스트림에서 동기 커밋이 클라이언트에 성공을 보고하는 데 더 오랜 시간이 걸립니다. 이 경우 파라미터를 on으로 설정하세요.

참고

synchronous_standby_names에 나열된 노드를 사용하여 이 파라미터를 on으로 설정하더라도 액티브-액티브 구성에서 복제 충돌이 발생할 수 있습니다. 이는 시스템에 노드 간 잠금 및 글로벌 스냅샷 관리가 부족하여 서로 다른 노드의 동시 트랜잭션이 동일한 튜플을 수정할 수 있기 때문입니다. 또한 트랜잭션은 업스트림 노드에서 커밋한 후에만 복제를 시작합니다. 동기 커밋을 활성화해도 pgactive 확장이 항상 일관된 시스템으로 변환되지 않습니다.

pgactive.temp_dump_directory

string

초기 설정 중 데이터베이스 복제 작업에 필요한 임시 스토리지 경로를 정의합니다. 이 디렉터리는 postgres 사용자가 쓸 수 있어야 하며 전체 데이터베이스 덤프를 포함할 만큼 충분한 스토리지 공간이 있어야 합니다. 시스템은 논리적 복사 작업이 포함된 초기 데이터베이스 설정 중에만 이 위치를 사용합니다. 이 파라미터는 pgactive_init_copy command에서 사용되지 않습니다.

pgactive.max_ddl_lock_delay

milliseconds

-1

동시 쓰기 트랜잭션을 강제로 중단하기 전에 DDL 잠금의 최대 대기 시간을 지정합니다. 기본값은 -1이며, 이는 max_standby_streaming_delay에 설정된 값을 채택합니다. 이 파라미터는 시간 단위를 허용합니다. 예를 들어 10초를 나타내는 10s로 설정할 수 있습니다. 이 대기 기간 동안 시스템은 지속적 쓰기 트랜잭션이 커밋되거나 롤백될 때까지 기다리는 동안 DDL 잠금 획득을 시도합니다. 자세한 내용은 DDL 잠금을 참조하세요.

pgactive.ddl_lock_timeout

milliseconds

-1

DDL 잠금 시도가 잠금을 얻기 위해 대기하는 시간을 지정합니다. 기본값은 lock_timeout에 지정된 값을 사용하는 -1입니다. 10초를 나타내는 10s와 같은 시간 단위를 사용하여 이 파라미터를 설정할 수 있습니다. 이 타이머는 DDL 잠금을 얻기 위한 대기 기간만 제어합니다. 시스템이 잠금을 얻고 DDL 작업을 시작하면 타이머가 중지됩니다. 이 파라미터는 DDL 잠금을 유지할 수 있는 총기간 또는 전체 DDL 작업 시간을 제한하지 않습니다. 작업의 총기간을 제어하려면 statement_timeout을 대신 사용합니다. 자세한 내용은 DDL 잠금을 참조하세요.

pgactive.debug_trace_ddl_locks_level

boolean

pgactive 확장의 DDL 잠금 작업에 대한 기본 디버그 로그 수준을 재정의합니다. 이 설정을 구성하면 기본 수준 대신 LOG 디버그 수준에서 DDL 잠금 관련 메시지가 내보내집니다. 전체 서버에서 상세 DEBUG1 또는 DEBUG2 로그 수준을 활성화하지 않고 DDL 잠금 활동을 모니터링하려면 이 파라미터를 사용합니다.

사용 가능한 로그 수준(상세 수준이 낮은 순):

  • none - DDL 잠금 메시지가 DEBUG1 이하의 서버 로그 수준으로만 표시됩니다.

  • statement - DDL 잠금 획득 시도에 대한 LOG 출력을 추가합니다.

  • acquire_release - 잠금 획득, 해제, 거부 이벤트 및 원격 DDL 잠금의 피어 노드 애플리케이션을 기록합니다.

  • peers - 피어 노드 간 DDL 잠금 협상에 대한 추가 세부 정보를 제공합니다.

  • debug - 모든 DDL 잠금 관련 활동을 LOG 수준에서 로깅합니다.

모니터링 옵션에 대한 자세한 내용은 글로벌 DDL 잠금 모니터링을 참조하세요.

참고

이 설정에 대한 변경 사항은 구성을 다시 로드할 때 적용됩니다. 서버를 다시 시작할 필요가 없습니다.

추가 pgactive 확장 파라미터

다음 표에는 pgactive 확장에 사용할 수 있는 덜 자주 사용되는 구성 옵션과 내부 구성 옵션이 나와 있습니다.

파라미터

단위

Default

설명

pgactive.debug_apply_delay

integer

pgactive.pgactive_connections 항목에 명시적 적용 지연이 없는 구성된 연결에 적용 지연(밀리초)을 설정합니다. 이 지연은 노드 만들기 또는 조인 시간 중에 설정되며, pgactive는 커밋된 이후 지정된 밀리초 이상이 경과할 때까지 피어 노드에서 트랜잭션을 재생하지 않습니다.

주로 테스트 환경에서 지연 시간이 긴 네트워크를 시뮬레이션하여 충돌을 더 쉽게 발생시키는 데 사용됩니다. 예를 들어 노드 A와 B의 지연 시간이 500ms인 경우 노드 A에 값을 삽입한 후 노드 B에 충돌하는 삽입을 수행할 수 있는 시간이 500ms 이상입니다.

참고

서버를 다시 로드하거나 적용 작업자를 다시 시작해야 적용됩니다.

pgactive.connectability_check_duration

integer

실패한 시도 중에 데이터베이스 작업자가 연결을 설정하려고 시도하는 기간(초)을 지정합니다. 작업자는 성공하거나 이 제한 시간 값에 도달할 때까지 초당 1회 연결을 시도합니다. 이 설정은 작업자가 연결을 설정할 준비가 되기 전에 데이터베이스 엔진이 시작될 때 유용합니다.

pgactive.skip_ddl_replication

boolean

on

pgactive가 활성화된 Amazon RDS에서 DDL 변경 사항이 복제되거나 처리되는 방식을 제어합니다. on으로 설정하면 노드가 비 pgcctive 노드와 같은 DDL 변경 사항을 처리합니다. 이 파라미터를 사용할 때는 다음 요구 사항이 적용됩니다.

  • skip_ddl_replication 값이 업스트림 노드와 다른 경우 새 노드는 pgactive 그룹에 조인할 수 없습니다.

  • 파라미터 값이 업스트림 노드와 일치하지 않으면 기존 노드가 pgactive 작업자를 시작할 수 없습니다.

  • 모든 pgactive 멤버는 동일한 파라미터 값을 사용해야 합니다.

최고 사용자 권한을 사용하여 글로벌, 로컬(세션 수준)의 두 가지 방법으로 이 파라미터를 수정할 수 있습니다.

참고

이 파라미터를 잘못 변경하면 복제 설정이 손상될 수 있습니다.

pgactive.do_not_replicate

boolean

이 파라미터는 내부 전용입니다. 트랜잭션에서 이 파라미터를 설정하면 변경 사항이 DB 클러스터의 다른 노드에 복제되지 않습니다.

참고

이 파라미터를 잘못 변경하면 복제 설정이 손상될 수 있습니다.

pgactive.discard_mismatched_row_attributes

boolean

이 파라미터는 전문가 전용입니다. 특정 복제 문제를 해결할 때만 이 파라미터를 사용하는 것이 좋습니다. 다음과 같은 경우 이 파라미터를 사용합니다.

  • 수신 복제 스트림에 로컬 테이블보다 더 많은 열이 있는 행이 포함되어 있습니다.

  • 이러한 원격 행에는 Null이 아닌 값이 포함됩니다.

이 설정은 다음 오류 메시지를 재정의하고 데이터 분산이 발생하여 복제가 계속되도록 합니다. cannot right-pad mismatched attributes; attno %u is missing in local table and remote row has non-null, non-dropped value for this attribute

참고

이 파라미터를 잘못 변경하면 복제 설정이 손상될 수 있습니다.

pgactive.debug_trace_replay

boolean

on으로 설정하면 다운스트림 적용 작업자가 처리하는 각 원격 작업에 대해 로그 메시지를 내보냅니다. 로그에는 다음이 포함됩니다.

  • 유형 변경

  • 영향을 받는 테이블 이름

  • 트랜잭션 시작 이후 변경 사항 횟수

  • 트랜잭션 커밋 LSN

  • 커밋 타임스탬프

  • 업스트림 노드 식별자

  • 전달 노드 식별자(해당하는 경우)

로그는 대기 중인 DDL 명령과 테이블 삭제도 캡처합니다.

para>

기본적으로 로그에는 행 필드 콘텐츠가 포함되지 않습니다. 로그에 행 값을 포함하려면 다음 플래그가 활성화된 상태로 다시 컴파일해야 합니다.

  • VERBOSE_INSERT

  • VERBOSE_UPDATE

  • VERBOSE_DELETE

참고

이 로깅 설정을 활성화하면 성능에 영향이 미칠 수 있습니다. 문제 해결을 위해 필요한 경우에만 활성화하는 것이 좋습니다. 이 설정에 대한 변경 사항은 구성을 다시 로드할 때 적용됩니다. 서버를 다시 시작할 필요가 없습니다.

pgactive.extra_apply_connection_options

pgactive 노드와의 모든 피어 노드 연결에 대해 연결 파라미터를 구성할 수 있습니다. 이러한 파라미터는 keepalive 및 SSL 모드와 같은 설정을 제어합니다. 기본적으로 pgactive는 다음 연결 파라미터를 사용합니다.

  • connect_timeout=30

  • keepalives=1

  • keepalives_idle=20

  • keepalives_interval=20

  • keepalives_count=5

기본 파라미터를 재정의하려면 다음과 유사한 명령을 사용합니다.

pgactive.extra_apply_connection_options = 'keepalives=0'

개별 노드 연결 문자열은 이러한 설정과 pgactive의 기본 제공 연결 옵션보다 우선합니다. 연결 문자열 형식에 대한 자세한 내용은 libpq connection strings를 참조하세요.

기본 keepalive 설정을 활성화된 상태로 유지하는 것이 좋습니다. 신뢰할 수 없는 네트워크를 통해 대규모 트랜잭션을 완료하는 데 문제가 있는 경우에만 keepalive를 비활성화합니다.

참고

기본 keepalive 설정을 활성화된 상태로 유지하는 것이 좋습니다. 신뢰할 수 없는 네트워크를 통해 대규모 트랜잭션을 완료하는 데 문제가 있는 경우에만 keepalive를 비활성화합니다. 이 설정에 대한 변경 사항은 구성을 다시 로드할 때 적용됩니다. 서버를 다시 시작할 필요가 없습니다.

pgactive.init_node_parallel_jobs (int)

논리적 노드가 pgactive.pgactive_join_group 함수와 조인하는 동안 pg_dumppg_restore가 사용할 수 있는 병렬 작업 수를 지정합니다.

이 설정에 대한 변경 사항은 구성을 다시 로드할 때 적용됩니다. 서버를 다시 시작할 필요가 없습니다.

pgactive.max_nodes

int

4

pgactive 확장 그룹에 허용되는 최대 노드 수를 지정합니다. 기본값은 노드 4개입니다. 이 파라미터의 값을 설정할 때 다음 사항을 고려해야 합니다.

  • pgactive 확장 그룹의 모든 노드는 동일한 파라미터 값을 사용해야 합니다.

  • 파라미터 값이 업스트림 노드와 다른 경우 새 노드는 조인할 수 없습니다.

  • 파라미터 값이 업스트림 노드와 다른 경우 기존 노드는 pgactive 확장 작업자를 시작할 수 없습니다.

  • 그룹이 크면 추가 모니터링 및 유지 관리 작업이 필요하므로 이 파라미터의 값을 신중하게 지정합니다.

이 파라미터는 구성 파일에서 ALTER SYSTEM SET 명령을 사용하여 두 가지 방법으로 설정할 수 있습니다.

이 파라미터의 기본값은 4입니다. 즉, 어느 시점에든 pgactive 확장 그룹에 최대 4개의 노드가 허용됩니다.

참고

변경 사항은 서버를 다시 시작한 후에 적용됩니다.

pgactive.permit_node_identifier_getter_function_creation

boolean

이 파라미터는 내부 전용입니다. 활성화하면 pgactive 확장을 통해 pgactive 노드 식별자 getter 함수를 만들 수 있습니다.