본문 바로가기

aws

RDS -> s3 백업

스냅샷 복원이 아닌 dump 파일을 restore 하는 방법입니다.

 

 

1. RDS 데이터를  s3로 dump                     rds -> s3

pg_dump -v -h ${DATABASE_HOST} -U ${DATABASE_USER} -d ${DATABASE_NAME} | aws s3 cp --storage-class STANDARD_IA --sse aws:kms - s3://my-bucket/dump.sql

 

번외 덤프 파일로 s3 저장만 한다면 압축해서 저장한다.
pg_dump -Z 9 -v -h ${DATABASE_HOST} -U ${DATABASE_USER} -d ${DATABASE_NAME} | aws s3 cp --storage-class STANDARD_IA --sse aws:kms - s3://my-bucket/dump.sql.gz

 

 

2. S3의 덤프 데이터를 RDS로 restore     s3 -> rds 

- 당연히 s3 파일에 접근 가능한 권한이 있어야 합니다.

- 파일경로는 s3:// 가 아닌 https:// 로 되어야 합니다.

wget -O - 's3의 dump 파일 경로' | psql -h ${DATABASE_HOST} -U ${DATABASE_USER} -d ${DATABASE_NAME}

 

2-1. 해당 *.sql을 다운로드 받은 후 import

psql -h ${DATABASE_HOST} -U ${DATABASE_USER} -d ${DATABASE_NAME} < dump.sql

 

 

번외

pg_restore: error: input file does not appear to be a valid archive
>> pg_store 대신 psql 명령어로 실행하세요.

 

ERROR: invalid byte sequence for encoding "UTF8": 0xa1
덤프 파일이 UTF-8 형식이 아닐 경우의 에러 , file 커맨드로 타입을 확인해 보자
>> file ${파일 이름}
dump.sql: UTF-8 Unicode text

 

 

참고

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html