[AWS RDS] RDS Oracle에서 EFS 사용하기
AWS Oracle RDS로 Datapump로 이관시 EFS=(NFS) 로 조금 더 Downtime을 줄이고, 비용도 절약하고, 복잡도를 줄여 간단하게 Migration 해보자. RDS Oracle EFS
Dec 17, 2023
금번 프로젝트에서 AWS EC2 ORACLE Database 에서 AWS ORACLE RDS으로 이관하는 작업을 진행하였다. 이관시 방법은 Datapump로 진행하였으며, Dumpfile이관하는데 기존 이관 방식에서는 EC2에 Dumpfile을 추출하고 RDS Local (EBS)로 옮기는 방식으로 진행 하였다. 해당 방법은 Dumpfile을 2번 Netwrok를 태워 옮겨야하며, Dumpfile에 1T 면 EC2, RDS 모두 1T 의 줄일 수 없는 추가공간이 필요하였다. 불필요한 리소스 사용을 줄이기 위해 방법을 찾았고 AWS ORACLE RDS에 EFS를 붙일 수 있는 방법을 찾았고, 수행해보았다.
EFS(Elastic File System)는 기존 IDC환경으로는 NFS(Network FIle System)이고 I/O 용량 및 Storage 사용량에 따라 비용이 청구되며, 영구보관 용 보다는 Server To Server 간 파일을 전송할 때 사용하기 좋은 기술이다.
AWS Oracle RDS EFS 구성하기
구성도는 아래와 같다. AWS DOCS에 나온 대로 IAM 및 정책 설정을 하고, RDS에 EFS_INTEGRATION 옵션 추가한 후 중요한 건 RDS는 파일시스템 컨트롤이 불가능하기 때문에 별도로 EC2에 EFS를 붙여 권한부여가 반드시 필요하다.. 그래야 EFS에 읽기 쓰기가 가능하다.

-- RDS내부 EFS Directory 생성
exec rdsadmin.rdsadmin_util.create_directory_efs('EFS_DIR','/rdsefs-fs-xxxxxxxxxxxxxxxxxx/datapump');
-- Directory 조회
select * from dba_directories;
-- Directory 삭제
--drop directory EFS_DIR;
--Directory 내부 파일 조회
select * from table(rdsadmin.rds_file_util.listdir(p_directory=> 'EFS_DIR'));
-- DBMS_FILE_TRANSFER를 사용하여 가져오거나, 보내기
begin
dbms_file_transfer.put_file(
source_directory_object => 'DATAPUMP', -- Source DB Directory_name
source_file_name => 'TEST_20231205.dmp', -- Source DB Dumpfile_Name
destination_database => 'TEST', -- Target DB Name
destination_directory_object => 'EFS_DIR', -- Target DB Directory_name (EFS)
destination_file_name => 'TEST_20231205.dmp'); -- Target DB Dumpfile_Name
end;
/
결론
On-Promise 또는 EC2 환경에서 AWS RDS 시스템으로 이관 할 시 Local EBS를 사용하지 않아 불필요한 Resource를 줄이고, 2번 이동해야하는 File COPY 시간을 줄여주기에 저용량 이관시 효율적으로 사용 할 수 있습니다.
Share article