오류 삽입 쿼리를 사용하여 Amazon Aurora PostgreSQL 테스트 - Amazon Aurora

오류 삽입 쿼리를 사용하여 Amazon Aurora PostgreSQL 테스트

오류 삽입 쿼리를 사용하여 Aurora PostgreSQL DB 클러스터의 내결함성을 테스트할 수 있습니다. 오류 삽입 쿼리는 Amazon Aurora 인스턴스에 SQL 명령으로 발행됩니다. 장애 삽입 쿼리를 사용하면 인스턴스를 중단시켜 장애 조치 및 복구를 테스트할 수 있습니다. 또한 Aurora Replica 장애, 디스크 장애 및 디스크 혼잡을 시뮬레이션할 수 있습니다. 오류 삽입 쿼리는 다음과 같이 사용 가능한 모든 Aurora PostgreSQL 버전에서 지원됩니다.

  • Aurora PostgreSQL 버전 12, 13, 14 이상

  • Aurora PostgreSQL 버전 11.7 이상

  • Aurora PostgreSQL 버전 10.11 이상

오류 삽입 쿼리가 충돌을 지정하면 Aurora PostgreSQL DB 인스턴스가 강제로 충돌합니다. 다른 오류 삽입 쿼리로 인해서도 오류 이벤트 시뮬레이션이 발생하지만 이 경우 이벤트는 발생하지 않습니다. 오류 삽입 쿼리를 제출할 때 실패 이벤트 시뮬레이션이 발생하는 시간 길이를 지정할 수도 있습니다.

Aurora 복제본의 엔드포인트에 연결하여 오류 삽입 쿼리를 Aurora 복제본 중 하나로 제출할 수 있습니다. 자세한 내용은 Amazon Aurora 엔드포인트 연결 섹션을 참조하세요.

인스턴스 충돌 테스트

aurora_inject_crash() 오류 삽입 쿼리 함수를 사용하여 Aurora PostgreSQL 인스턴스의 충돌을 강제로 일으킬 수 있습니다.

이 오류 삽입 쿼리의 경우 장애 조치가 발생하지 않습니다. 장애 조치를 테스트하려면 RDS 콘솔에서 DB 클러스터에 대한 장애 조치(Failover) 인스턴스 작업을 선택하거나 failover-db-cluster AWS CLI 명령 또는 FailoverDBCluster RDS API 작업을 사용합니다.

구문

SELECT aurora_inject_crash ('instance' | 'dispatcher' | 'node');
옵션

이 오류 삽입 쿼리에는 다음 충돌 유형 중 하나가 사용됩니다. 충돌 유형은 대소문자를 구분하지 않습니다.

'인스턴스'

Amazon Aurora 인스턴스용 PostgreSQL 호환 데이터베이스의 충돌이 시뮬레이션됩니다.

'dispatcher'

Aurora DB 클러스터용 기본 인스턴스에서 디스패처 충돌이 시뮬레이션됩니다. 디스패처가 Amazon Aurora DB 클러스터용 클러스터 볼륨에 업데이트 쓰기 작업을 합니다.

'노드'

PostgreSQL 호환 데이터베이스 및 Amazon Aurora 인스턴스용 디스패처의 충돌이 모두 시뮬레이션됩니다.

Aurora 복제본 실패 테스트

aurora_inject_replica_failure() 오류 삽입 쿼리 함수를 사용하여 Aurora 복제본의 실패를 시뮬레이션할 수 있습니다.

Aurora 복제본이 실패하면 Aurora 복제본 또는 DB 클러스터의 모든 Aurora 복제본으로의 복제가 지정된 시간 간격 동안 지정된 백분율만큼 차단됩니다. 시간 간격이 경과되면 영향을 받는 Aurora 복제본이 자동으로 프라이머리 인스턴스와 동기화됩니다.

구문

SELECT aurora_inject_replica_failure( percentage_of_failure, time_interval, 'replica_name' );
옵션

이 오류 삽입 쿼리에는 다음 파라미터가 사용됩니다.

percentage_of_failure

실패 이벤트 도중 차단되는 복제의 비율입니다. 이 값은 0 ~ 100의 실수(Double)입니다. 0을 지정하면 복제가 차단되지 않습니다. 100을 지정하면 모든 복제가 차단됩니다.

time_interval

Aurora Replica 실패 시뮬레이션 시간 길이. 간격은 초 단위입니다. 예를 들어 값이 20이면 시뮬레이션이 20초 동안 실행됩니다.

참고

Aurora 복제본 실패 이벤트에 대한 시간 간격을 지정할 때는 각별히 주의하십시오. 시간 간격을 너무 길게 지정하고 라이터 인스턴스가 실패 이벤트 중에 대량의 데이터를 기록하는 경우 Aurora DB 클러스터에서 Aurora 복제본이 충돌했다고 간주하여 해당 복제본을 교체할 수도 있습니다.

replica_name

실패 시뮬레이션을 삽입할 Aurora Replica 단일 Aurora 복제본의 실패를 시뮬레이션하려면 Aurora 복제본의 이름을 지정합니다. DB 클러스터의 모든 Aurora 복제본에 대한 오류를 시뮬레이션하려면 빈 문자열을 지정합니다.

복제본 이름을 식별하려면 server_id 함수의 aurora_replica_status() 열을 참조하십시오. 예:

postgres=> SELECT server_id FROM aurora_replica_status();

디스크 실패 테스트

aurora_inject_disk_failure() 오류 삽입 쿼리 함수를 사용하여 Aurora PostgreSQL DB 클러스터에 대한 디스크 실패를 시뮬레이션할 수 있습니다.

디스크 실패 시뮬레이션 중에는 Aurora PostgreSQL DB 클러스터에서 임의로 디스크 세그먼트를 오류 상태로 표시합니다. 시뮬레이션 기간 동안 이러한 세그먼트에 대한 요청이 차단됩니다.

구문

SELECT aurora_inject_disk_failure( percentage_of_failure, index, is_disk, time_interval );
옵션

이 오류 삽입 쿼리에는 다음 파라미터가 사용됩니다.

percentage_of_failure

실패 이벤트 중에 오류 상태로 표시할 디스크의 비율(%). 이 값은 0 ~ 100의 실수(Double)입니다. 0을 지정하면 디스크의 어떤 부분도 오류 상태로 표시되지 않습니다. 100을 지정하면 전체 디스크가 오류 상태로 표시됩니다.

인덱스를 구축하고 배포할 것입니다

실패 이벤트를 시뮬레이션할 특정 논리 데이터 블록. 가용 논리 블록 또는 스토리지 노드 데이터의 범위를 초과하는 경우 지정할 수 있는 최대 인덱스 값을 알려주는 오류가 발생합니다. 이 오류를 방지하려면 Aurora PostgreSQL DB 클러스터를 위한 볼륨 상태 표시 단원을 참조하십시오.

is_disk

삽입 실패가 논리 블록에서 발생했는지 아니면 스토리지 노드에서 발생했는지 여부 표시. true를 지정하면 삽입 실패가 논리 블록에서 발생했음을 의미합니다. false를 지정하면 삽입 실패가 스토리지 노드에서 발생했음을 의미합니다.

time_interval

디스크 장애를 시뮬레이션하는 데 걸리는 시간입니다. 간격은 초 단위입니다. 예를 들어 값이 20이면 시뮬레이션이 20초 동안 실행됩니다.

디스크 정체 테스트

aurora_inject_disk_congestion() 오류 삽입 쿼리 함수를 사용하여 Aurora PostgreSQL DB 클러스터에 대한 디스크 정체를 시뮬레이션할 수 있습니다.

디스크 정체 시뮬레이션 중에는 Aurora PostgreSQL DB 클러스터에서 임의로 디스크 세그먼트를 정체 상태로 표시합니다. 시뮬레이션 기간 동안 지정된 최소 지연 시간과 최대 지연 시간 사이에서 이러한 세그먼트에 대한 요청이 지연됩니다.

구문

SELECT aurora_inject_disk_congestion( percentage_of_failure, index, is_disk, time_interval, minimum, maximum );
옵션

이 오류 삽입 쿼리에는 다음 파라미터가 사용됩니다.

percentage_of_failure

실패 이벤트 중에 정체 상태로 표시할 디스크의 비율(%). 이 값은 0에서 100 사이의 이중 값입니다. 0을 지정하면 디스크의 어떤 부분도 정체 상태로 표시되지 않습니다. 100을 지정하면 전체 디스크가 정체 상태로 표시됩니다.

인덱스를 구축하고 배포할 것입니다

실패 이벤트 시뮬레이션에 사용할 특정 논리 데이터 블록 또는 스토리지 노드.

가용 논리 블록 또는 스토리지 노드 데이터의 범위를 초과하는 경우 지정할 수 있는 최대 인덱스 값을 알려주는 오류가 발생합니다. 이 오류를 방지하려면 Aurora PostgreSQL DB 클러스터를 위한 볼륨 상태 표시 단원을 참조하십시오.

is_disk

삽입 실패가 논리 블록에서 발생했는지 아니면 스토리지 노드에서 발생했는지 여부 표시. true를 지정하면 삽입 실패가 논리 블록에서 발생했음을 의미합니다. false를 지정하면 삽입 실패가 스토리지 노드에서 발생했음을 의미합니다.

time_interval

디스크 정체를 시뮬레이션하는 데 걸리는 시간입니다. 간격은 초 단위입니다. 예를 들어 값이 20이면 시뮬레이션이 20초 동안 실행됩니다.

최소, 최대

최대 및 최소 정체 지연 시간(밀리초). 유효한 값의 범위는 0.0에서 100.0밀리초까지입니다. 정체 상태로 표시된 디스크 세그먼트는 시뮬레이션 기간 동안 최소 및 최대 범위 내에서 임의의 시간 동안 지연됩니다. 최대값은 최소값보다 커야 합니다.