토이 프로젝트를 진행하면서 잠깐 서비스를 운영하였는데 그동안 쌓인 데이터를 실수로 삭제해버렸다... 복구를 하려고 애썼으나 결국 실패 😭😭😭😭😭
솔직히 삭제를 일부러 하는 거 아니면 할리가 있겠어?? 하고 백업을 해놓지 않았는데 내가 바보같이 drop table로 다 날려먹었다.. (데이터베이스 이름이 비슷해서 헷갈렸음..)
때문에 누구나 똑같은 실수를 할 수도 있기에 백업과 복구 방법을 자세히 정리하고자 한다.
mysql에서 mysqldump로 데이터를 백업하는 방법이 있지만 이 포스트에서는 RDS를 이용한 데이터 백업을 다루겠다.
RDS -> 데이터베이스 -> [RDS 이름] -> 유지 관리 및 백업
으로 이동하면 아래 사진처럼 확인할 수 있다.
현재 나는 백업, 스냅샷을 생성해두지 않았다. 이제 이걸 복구가 가능하도록 백업을 해보자.
백업이라는 것은 특정 시점의 스냅샷을 남기는 것이다. RDS 스냅샷이란 특정 시점의 Amazon RDS 데이터베이스 인스턴스의 백업이다. 데이터베이스의 데이터 및 구성 설정을 캡처하여 해당 스냅샷에서 데이터베이스를 복원하거나 새 데이터베이스를 만들 수 있다.
스냅샷의 세부적인 특징은 여기를 참고하자
백업을 하는 방식은 수동 백업, 자동 백업 2가지가 있다.
자동 백업된 스냅샷과 수동 백업한 스냅샷의 가장 큰 차이점은 기존 RDS 인스턴스를 삭제하면 자동 백업된 스냅샷들은 같이 삭제가 되고 수동 백업한 스냅샷은 유지가 된다. 그렇기 때문에 RDS 인스턴스를 삭제하기 전에 꼭 수동으로 스냅샷을 저장하고 삭제하자.
수동 백업은 RDS 생성 후 특정 시점에 데이터를 남기고 싶을 때 아래처럼 스냅샷을 생성하면 된다.
아래처럼 스냅샷이 생성되고 있다.
스냅샷이 생성되는 중에는 기존 DB가 다운될 수 있으니 서비스 중인 인스턴스가 있다면 주의하자! (데이터 양에 따라 다르지만 5분 내외로 걸린다고 한다.)
성공!
RDS를 생성할 때 입맛에 맞게 설정을 해주면 된다.
이건 나중에 해보고 정리하자.
특정 시점으로 복원을 클릭한다.
복원 가능한 최근 시간을 선택한다면 제일 최근 시점으로 복원을 할 수 있고 사용자 지정 날짜 및 시간을 선택하면 복구 가능시간 사이에 정확한 시간 분 초까지 설정해서 복원 시점을 정할 수 있다.
그 외에 설정들은 기존 RDS 인스턴스와 똑같이 복제되므로 따로 수정할 필요 없다.
밑으로 내려가 삭제 방지를 활성화한 후 특정 시점으로 복원을 누르면 몇 분내에 새로운 RDS 인스턴스가 복제된다.
너무너무 아찔하고 팀원들에게 미안하다.. 데이터를 삭제해버리다니... 앞으로 개발용 DB가 아닌 서비스용 DB는 무조건 백업을 해둬야겠다. 오늘도 하나 배워갑니다..!