설명
RDS DB 인스턴스의 backup_retention_period = 0은 자동 백업을 비활성화합니다. AWS 공급자 v6.14.0의 aws_db_instance에서도 기본값은 0입니다. 자동 백업은 장애, 운영 실수와 데이터 손상 이후의 시점 복구에 중요한 보호 장치입니다.
수동 스냅샷은 별도로 관리할 수 있지만 자동 백업과 같은 복구 시점을 제공하지는 않습니다. 운영 데이터베이스라면 필요한 자동 백업 기간을 명시적으로 정해야 합니다.
잠재적 영향
- 복구 불가 위험: 장애나 삭제 사고 후 원하는 시점으로 복원하지 못할 수 있습니다.
- 데이터 손실 확대: 다른 복구 수단이 없다면 최근 변경분을 포함한 운영 데이터가 유실될 수 있습니다.
- 운영 기준 불일치: 인스턴스마다 백업 정책이 달라 관리가 어려워집니다.
해결 방법
backup_retention_period를 복구 요구에 맞는 1~35일로 설정하세요.- 0과 0이 아닌 값 사이의 변경에는 서비스 중단이 발생하므로 적용 시점을 계획하세요.
- 자동 백업뿐 아니라 필요한 스냅샷 보존과 복구 테스트도 운영 절차에 포함하세요.
예시
백업 설정 비교용 발췌입니다. MySQL 5.7과 db.t2.micro는 기존 예시의 값이므로 실제 리전과 환경의 지원 여부를 확인하세요. 네트워크를 별도로 구성하고 var.db_password로 유효한 비밀번호를 안전하게 제공하세요. 비밀번호가 저장될 수 있는 Terraform 상태도 보호해야 합니다.
변경 전
hcl
resource "aws_db_instance" "example" {
allocated_storage = 20
storage_type = "gp2"
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t2.micro"
db_name = "mydb"
username = "foo"
password = var.db_password
backup_retention_period = 0
}
변경 후
hcl
resource "aws_db_instance" "example" {
allocated_storage = 20
storage_type = "gp2"
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t2.micro"
db_name = "mydb"
username = "foo"
password = var.db_password
backup_retention_period = 12
}
변경 전에는 자동 백업이 꺼져 있습니다. 변경 후에는 12일의 보존 기간을 설정합니다. 12일은 예시이며, 실제 백업 완료와 복원 가능성을 확인해야 합니다.