rds_tools 함수 참조
rds_tools 확장은 RDS for PostgreSQL DB 인스턴스를 관리하고 모니터링하기 위한 유틸리티 함수 세트를 제공합니다. 이러한 함수를 사용하면 별도의 모니터링 도구 없이 SQL에서 직접 복제, vacuum 및 구성 문제를 진단할 수 있습니다. 이러한 함수들은 표준 PostgreSQL 함수 외에 추가로 제공되는 것입니다. 표준 PostgreSQL 함수에 대한 자세한 내용은 PostgreSQL 설명서에서 Functions and Operators
이 섹션에서는 RDS for PostgreSQL에서 사용할 수 있는 rds_tools 함수를 설명합니다. 각 함수의 설명에는 해당 함수를 사용할 수 있게 된 rds_tools 확장 버전이 명시되어 있습니다.
확장을 생성하려면 다음 명령을 실행합니다.
postgres=> CREATE EXTENSION rds_tools; CREATE EXTENSION
주제
rds_tools.role_password_encryption_type
각 데이터베이스 역할에 사용되는 암호 암호화 방법을 반환합니다. 이 집합 반환 함수는 RDS로 보호되는 시스템 역할은 출력에서 제외합니다. rds_tools 확장 버전 1.0부터 사용할 수 있습니다.
데이터베이스 사용자를 SCRAM으로 마이그레이션하기 전에 이 함수를 사용하여 암호 암호화 방식을 검토하는 예제는 SCRAM for PostgreSQL 암호 암호화 사용 섹션을 참조하세요.
함수 프로토타입
rds_tools.role_password_encryption_type()
인수
없음.
출력
-
rolname- 데이터베이스 역할의 이름입니다. -
encryption_type- 사용되는 암호 암호화 방법(md5또는scram-sha-256)입니다.
사용 예
=> SELECT * FROM rds_tools.role_password_encryption_type(); rolname | encryption_type ---------------+----------------- postgres | md5 app_user | md5 readonly_user | scram-sha-256 (3 rows)
rds_tools.blue_green_get_status
블루/그린 배포 작업 중에 제한된 명령이 실행되었는지 확인합니다. 논리적 복제를 사용하는 블루/그린 배포 중에는 블루 환경과 그린 환경 간에 데이터 정의 언어(DDL) 명령 또는 대형 객체(LO) 작업을 복제할 수 없습니다. 제한된 명령이 감지되는 경우, 데이터가 그린 환경으로 올바르게 복제되지 않을 수 있으므로 블루/그린 배포를 재시작해야 합니다. rds_tools 확장 버전 1.3부터 사용할 수 있습니다.
함수 프로토타입
rds_tools.blue_green_get_status(command_type)
인수
-
command_type- 확인할 제한된 명령의 유형입니다. 유효한 값은 데이터 정의 언어 명령('DDL') 및 대형 객체 작업('LO')입니다.
출력
boolean 값입니다. 배포 중에 지정된 유형의 제한된 명령이 실행되었으면 false를 반환하고, 그러한 명령이 감지되지 않았으면 true를 반환합니다.
사용 예
=> SELECT rds_tools.blue_green_get_status('DDL'); blue_green_get_status ----------------------- f (1 row)
rds_tools.postgres_get_av_diag
차단 상태이거나 지연되고 있는 autovacuum 프로세스에 관한 진단 정보와 각 문제를 해결하기 위한 제안 사항을 반환합니다. 정확한 결과를 얻으려면 트랜잭션 ID가 가장 오래된 데이터베이스에서 이 집합 반환 함수를 실행하세요. 자세한 정보는 공격적인 vacuum 블로커 식별 및 해결을 참조하세요.
rds_tools 확장 버전 1.9부터 사용할 수 있습니다.
함수 프로토타입
rds_tools.postgres_get_av_diag()
인수
없음.
출력
-
blocker- vacuum을 차단하는 데이터베이스 활동의 범주입니다. 값은 다음 중 하나입니다.활성 문
트랜잭션의 유휴 상태
준비된 트랜잭션
논리적 복제 슬롯
물리적 복제 슬롯을 사용하는 읽기 전용 복제본
스트리밍 복제를 사용하는 읽기 전용 복제본
임시 테이블
-
database- 차단 활동이 발생하고 있는 데이터베이스의 이름입니다. -
blocker_identifier- 차단 활동의 식별자입니다. 이 값은 다음과 같이 차단 요인의 유형에 따라 달라집니다.실행 중인 문 또는 트랜잭션 내 유휴 세션인 경우, 프로세스 ID와 해당 SQL 문이 표시됩니다.
준비된 트랜잭션인 경우, 준비된 트랜잭션 이름이 표시됩니다.
읽기 복제본인 경우, 해당 복제본의 IP 주소가 표시됩니다.
복제 슬롯인 경우, 복제 슬롯 이름이 표시됩니다.
-
wait_event- 해당하는 경우 차단 세션의 대기 이벤트입니다. -
autovacuum_lagging_by- 해당 범주에서 autovacuum이 지연되고 있는 트랜잭션 수입니다. -
suggestion- 데이터베이스 이름, 프로세스 ID, 수행할 조치를 포함하여 차단 요인을 해결하기 위한 제안 사항입니다. -
suggested_action- 차단 요인을 해결하기 위해 수행해야 하는 조치 사항의 배열입니다.
사용 예
=> SELECT * FROM rds_tools.postgres_get_av_diag() ORDER BY autovacuum_lagging_by DESC; blocker | Active statement database | my_database blocker_identifier | SELECT pg_sleep(20000); wait_event | Timeout:PgSleep autovacuum_lagging_by | 568600871 suggestion | Connect to database "my_database", review carefully, and consider terminating the process using suggested_action. suggested_action | {"SELECT pg_terminate_backend(29621);"}
rds_tools.rds_version
DB 인스턴스의 RDS for PostgreSQL 엔진 버전을 표시합니다. 이 함수는 인스턴스의 구성 파일에서 버전 정보를 읽습니다. rds_tools 확장 버전 1.1부터 사용할 수 있습니다.
함수 프로토타입
rds_tools.rds_version()
인수
없음.
출력
엔진 버전이 포함된 문자열입니다.
사용 예
=> SELECT rds_tools.rds_version(); rds_version ------------- 18.1.R1 (1 row)
rds_tools.logical_seed_lsn
논리적 복제가 소스 인스턴스로부터 분기되는 지점을 나타내는 논리적 시드 로그 시퀀스 번호(LSN)를 반환합니다. 논리적 복제 설정을 관리하고 복제 일관성 지점을 파악하려면 이 함수를 사용하세요. rds_tools 확장 버전 1.2부터 사용할 수 있습니다.
함수 프로토타입
rds_tools.logical_seed_lsn()
인수
없음.
출력
pg_lsn 값입니다.
사용 예
=> SELECT rds_tools.logical_seed_lsn(); logical_seed_lsn ------------------ 0/1677B68 (1 row)
rds_tools.db_instance_identifier
DB 인스턴스 식별자를 표시합니다. 이 식별자는 DB 인스턴스를 생성할 때 지정하며, 이후 모든 AWS 서비스에서 이 식별자를 사용하여 데이터베이스를 식별합니다. rds_tools 확장 버전 1.2부터 사용할 수 있습니다.
함수 프로토타입
rds_tools.db_instance_identifier()
인수
없음.
출력
DB 인스턴스 식별자가 포함된 문자열입니다.
사용 예
=> SELECT rds_tools.db_instance_identifier(); db_instance_identifier ------------------------ my-postgres-instance (1 row)
rds_tools.dbi_resource_id
DB 인스턴스의 DB 인스턴스 리소스 ID(DBI 리소스 ID)를 표시합니다. DBI 리소스 ID는 AWS가 DB 인스턴스에 대해 생성하는 변경 불가능한 고유 식별자입니다. 이 식별자는 인스턴스의 이름이 변경되더라도 인스턴스 수명 동안 동일하게 유지됩니다. 데이터베이스 활동을 AWS CloudTrail 로그 또는 기타 AWS 모니터링 서비스와 연관시키려면 이 값을 사용하세요. 이 값은 DBInstance RDS API 명령에서 반환되는 DbiResourceId 필드와 일치합니다. rds_tools 확장 버전 1.4부터 사용할 수 있습니다.
함수 프로토타입
rds_tools.dbi_resource_id()
인수
없음.
출력
DBI 리소스 ID를 포함한 문자열입니다.
사용 예
=> SELECT rds_tools.dbi_resource_id(); dbi_resource_id ----------------------------------- db-ABC123DEF456GHI789JKL012MNO345P (1 row)
rds_tools.multi_az_db_cluster_source_dbi_resource_id
다중 AZ DB 클러스터 배포를 위한 소스 인스턴스의 DBI 리소스 ID를 표시합니다. 다중 AZ 구성의 인스턴스 간 관계를 이해하고 복제 또는 장애 조치 시나리오 문제를 해결하려면 이 함수를 사용하세요. rds_tools 확장 버전 1.4부터 사용할 수 있습니다.
함수 프로토타입
rds_tools.multi_az_db_cluster_source_dbi_resource_id()
인수
없음.
출력
소스 DBI 리소스 ID를 포함한 문자열입니다. 인스턴스가 다중 AZ DB 클러스터의 일부가 아니거나, 구성 파일이 존재하지 않거나 dbi_resource_id 필드가 구성에 없는 경우 NULL을 반환합니다.
사용 예
=> SELECT rds_tools.multi_az_db_cluster_source_dbi_resource_id(); multi_az_db_cluster_source_dbi_resource_id -------------------------------------------- db-XYZ789ABC123DEF456GHI012JKL345MNO678P (1 row)
rds_tools.show_topology
RDS 다중 AZ 클러스터의 토폴로지 메타데이터를 표시하며, 클러스터 내 모든 인스턴스의 연결 정보를 제공하여 신속한 전환을 가능하게 합니다. AWS Advanced JDBC Wrapper Driver와 같은 클라이언트 라이브러리는 이 집합 반환 함수를 사용하여 RDS 다중 AZ 클러스터의 모든 인스턴스에 직접 연결합니다. 라이터 인스턴스의 리소스 ID를 식별하려면 이 함수를 rds_tools.multi_az_db_cluster_source_dbi_resource_id 함수와 함께 사용하세요. rds_tools 확장 버전 1.4부터 사용할 수 있습니다.
함수 프로토타입
rds_tools.show_topology([client_identifier])
인수
-
client_identifier(선택 사항) - 토폴로지를 쿼리하는 클라이언트 라이브러리 또는 프록시의 식별자입니다. 이 파라미터는 선택 사항이지만 권장됩니다. Amazon RDS가 토폴로지를 활발히 쿼리하는 클라이언트를 추적할 수 있도록 하며, 향후 추가 클라이언트를 지원하는 데 필요한 원격 측정 데이터도 제공하기 때문입니다.
출력
-
id- RDS 다중 AZ 클러스터 내 각 인스턴스의 DBI 리소스 ID입니다. -
endpoint- 클러스터 내 각 노드의 엔드포인트입니다. -
port- RDS 다중 AZ 클러스터 내 각 인스턴스의 포트 번호입니다. -
role- 클러스터 내 노드의 역할(예: 라이터 또는 리더)입니다. -
status– 노드의 상태입니다. -
version- 토폴로지 레코드의 버전입니다.
사용 예
=> SELECT id, endpoint, port, role FROM rds_tools.show_topology('my-jdbc-app'); id | endpoint | port | role -----------------+-----------------------------------------------------------+------+-------- db-IDENTIFIER-1 | somedb-instance-1.aaaaaaaaaaaa.us-west-2.rds.amazonaws.com | 5432 | writer db-IDENTIFIER-2 | somedb-instance-2.aaaaaaaaaaaa.us-west-2.rds.amazonaws.com | 5432 | reader db-IDENTIFIER-3 | somedb-instance-3.aaaaaaaaaaaa.us-west-2.rds.amazonaws.com | 5432 | reader (3 rows)
rds_tools.pg_ls_multixactdir
PostgreSQL에 다중 트랜잭션 데이터를 저장하는 pg_multixact 디렉터리의 내용을 나열합니다. 다중 트랜잭션 사용량을 모니터링하고, 다중 트랜잭션 관련 문제를 해결하며, 데이터베이스 스토리지 패턴을 파악하려면 이 집합 반환 함수를 사용하세요. rds_tools 확장 버전 1.7부터 사용할 수 있습니다.
함수 프로토타입
rds_tools.pg_ls_multixactdir()
인수
없음.
출력
-
name- 파일 또는 디렉터리의 이름입니다. -
size- 바이트 단위의 크기입니다. -
modification- 마지막 수정 타임스탬프입니다.
사용 예
=> SELECT * FROM rds_tools.pg_ls_multixactdir(); name | size | modification ---------------------------+------+------------------------ pg_multixact/members/ | 4096 | 2026-10-01 19:17:29+00 pg_multixact/members/0000 | 8192 | 2025-08-22 21:53:46+00 pg_multixact/offsets/ | 4096 | 2026-10-01 19:17:29+00 pg_multixact/offsets/0000 | 8192 | 2026-10-01 19:22:38+00 (4 rows)