Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

Foreign Table 본문

PostgreSQL/장애사례

Foreign Table

`O` 2021. 3. 8. 01:53
728x90
반응형
grant usage on FOREIGN DATA WRAPPER postgres_fdw to /* 해당 기능을 사용 할 유저 */;

 

    • 그 후, 접속 할 대상의 외부 서버에 대한 정보를 아래와 같이 설정 해 준다.

    •  
CREATE SERVER /* 사용할 외부서버에 대한 약식 명칭 */ 2FOREIGN DATA WRAPPER postgres_fdw 3OPTIONS ( /* 예시와 같이 접속할 DB명, IP, 포트를 설정 해 준다 */ );

  •  
    • 다음은 외부서버 접근 시, 해당 서버에 로그인 할 DB 계정 및 PW 정보를 입력하여, 해당 서버를 사용 할 계정과 외부서버 로그인 계정간 연결을 Mapping 해 준다.

CREATE USER MAPPING
FOR /* 외부서버를 사용 할 DB 계정 (아래 예시에서는 postgres 로 접속 테스트 예정이기에 기입) */
SERVER /* 위에 설정한 접속 대상 외부서버 */
OPTIONS ( /* 해당 서버에 접속 시, 사용 할 외부 서버 DB 계정 및 PW (해당 계정은 외부서버에 미리 만들어져 있어야 한다.) */ );


    • 이와 같이 설정이 끝나면 테스트로 테이블을 생성 해본다.

CREATE FOREIGN TABLE /* 생성할 테이블 이름 */
SERVER /* 위에 설정한 접속 대상 외부서버 */
OPTIONS ( /* 생성 시, 외부서버에서 생성 및 조회 될 대상 스키마와 테이블명 지정 */ );

  •  
    • 아래와 같이 외부서버에서 사용될 DB 계정이 위의 테이블이 생성된 DB 나 스키마에 조회 및 기타 권한이 없다면 오류가 발생하므로
      아래 예시와 같이 적절한 권한을 미리 부여 하도록 한다. (PostgreSQL 권한 부여는 장애 및 기타 이상여부와 관련된 사례가 많음으로 주의 하도록 한다.)

  •  
    • 생성 및 권한부여가 끝났다면, 아래와 같이 조회를 해보면 테이블이 외부서버에 정상적으로 생성 및 조회가 가능함을 확인 할 수 있다

 

  • 위의 Foreign Table 에 대한 기초 구성법을 이해 했다면 아래와 같이 실제 장애 사례를 이해 할 수 있다.

    • 실제 운영중인 서버에서 위의 mapping 이 잘못되어 트랜잭션에 사용되는 테이블을 조회하지 못함으로써 장애가 발생한 적이 있었다.
      아래는 운영서버에서 사용하는 외부서버에 대한 mapping 리스트다.

 

    • 아래는 개발 서버에서 사용하는 mapping 리스트다.
      위의 리스트와 확인해보면 운영서버에서 사용하는 mems, rems 계정에 대한 mapping 이 없음을 알 수 있다.

 

    • 아래는 운영 서버가 사용하는 Foreign Table 리스트다. 역서 장애를 유발했던 테이블은 신규 배포 때 사용된 comm.mdm_adr_info 다.
      아래 리스트는 \detr 로도 확인 가능하다

 

  •  
    • 이제 운영서버에서 rems 계정으로 운영서버에 접속하여 해당 테이블을 조회해보면
      운영서버에서는 rems 계정에 대한 mapping 설정이 없었기 때문에 아래의 mapping 에러가 발생했고,
      이 때문에 장애가 발생하여 위의 배포작업을 원복 후, 사후 조치로 CREATE USER MAPPING 설정 추가를 통하여 이슈를 해소 했었다.

  •  
    • 이와 같이 해당 기능을 사용하려면 위의 mapping 및 DB, 스키마, 오브젝트 소유 및 권한확인을 꼼곰히 해야한다.
반응형

'PostgreSQL > 장애사례' 카테고리의 다른 글

DB Age Full 로 인한 DB 사용 불가  (0) 2021.04.22
Comments