PostgreSQL/장애사례
Foreign Table
`O`
2024. 11. 14. 21:38
728x90
반응형
- 이 페이지에서는 PostgreSQL / PPAS 에서 쓰이는 Foreign Table 에 대한 개념 및 구성방법, 이에 관련한 장애 사례를 다룬다.
(참조 : https://www.percona.com/blog/2018/08/21/foreign-data-wrappers-postgresql-postgres_fdw/)
(참조 : https://postgresql.kr/docs/11/sql-createforeigntable.html / https://brownbears.tistory.com/99) - Foreign Table 은 Oracle DB Link 와 유사한 개념으로써, 외부서버의 DB 와 연결 뒤, 외부 서버에 운영 테이블 생성 및 관리를 해 줄수 있도록 지원 하는 Extension 이다.
(관련 정보는 해당 블로그 내 Extension 설치 참조) - 구성 방법은 아래와 같다.
- 먼저 postgres_fdw extension 을 설치 후, 이에 대한 사용 권한을 부여해야 한다.
- 먼저 postgres_fdw extension 을 설치 후, 이에 대한 사용 권한을 부여해야 한다.
grant usage on FOREIGN DATA WRAPPER postgres_fdw to /* 해당 기능을 사용 할 유저 */;

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

-
- 다음은 외부서버 접근 시, 해당 서버에 로그인 할 DB 계정 및 PW 정보를 입력하여, 해당 서버를 사용 할 계정과 외부서버 로그인 계정간 연결을 Mapping 해 준다.
- 다음은 외부서버 접근 시, 해당 서버에 로그인 할 DB 계정 및 PW 정보를 입력하여, 해당 서버를 사용 할 계정과 외부서버 로그인 계정간 연결을 Mapping 해 준다.
CREATE USER MAPPING
FOR /* 외부서버를 사용 할 DB 계정 (아래 예시에서는 postgres 로 접속 테스트 예정이기에 기입) */
SERVER /* 위에 설정한 접속 대상 외부서버 */
OPTIONS ( /* 해당 서버에 접속 시, 사용 할 외부 서버 DB 계정 및 PW (해당 계정은 외부서버에 미리 만들어져 있어야 한다.) */ );

- 이와 같이 설정이 끝나면 테스트로 테이블을 생성 해본다.
CREATE FOREIGN TABLE /* 생성할 테이블 이름 */
SERVER /* 위에 설정한 접속 대상 외부서버 */
OPTIONS ( /* 생성 시, 외부서버에서 생성 및 조회 될 대상 스키마와 테이블명 지정 */ );

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

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

반응형