본문 바로가기

IT/에러 회고

Error writing file '/rdsdbdata/tmp/' (Errcode: 28 - No space left on device) 를 만났다. - AWS RDS aurora

회사내에서 서비스를 운영하다가 해당 에러를 맞닥트렸다.

Error writing file '/rdsdbdata/tmp/xXx' (Errcode: 28 - No space left on device)

DB 스키마를 볼 일이 있어서 조회하는데 워크벤치에서

unable to load schema 라는 간단한 메시지와 함께 해당 에러를 맞닥트렸다.

 

내용은 정말 간단하게

"임시폴더가 가득 찼다"

의 내용이다.

 

에러는 간단했지만 파급은 굉장했다.

간단한 select 외에 db스키마 조회, 인덱스 생성, 그룹바이를 통한 select 등이 전부 동작이 되지 않았다.

 

 

보통 우리가 쿼리를 작성할 때, group by 등을 사용하는데 grouping이나 sorting등을 할 때 우리는 로컬에 임시테이블을 만들어서 적재를 한다.

이때 무슨 연유로 해당 tmp폴더가 비워지지 않는 경우가 발생하여 해당 에러를 만나게 됬다.

 

여러 구글링을 해 본 결과.. 

1. DB 파라미터에 tmp_table_size 를 조정

- 메모리에 올릴지, 로컬에 쌓을지 그 기준을 보는 파일 사이즈.

- 메모리에 올리는 것이기 때문에 현재 메모리가 넉넉한지도 확인이 필요.

- 파라미터 그룹에서 해당 사이즈를 조정하면 별도의 DB 재시작없이 반영이 이루어짐.(다이나믹 파라미터)

 

별다른 성과 없음. 실패

 

2. aurora 장애조치.

장애 조치.

- RDS에서 제공하는 장애조치.

- 기존 서비스가 라이터클러스터에 엔드포인트를 직접 바라보고 있어서 클러스터 엔드포인트로 변경해줌.

- 클러스터 엔드포인트는 주소 내에 cluster라는 네이밍이 들어가 있음.

- 그리고 기존에 안되던 라이터 클러스터를 "장애조치" 하게 되면

   라이터 -> 리더/ 리더-> 라이터

   로 변경되게 된다.

 

- DB tool로 접속하기 위해서는 인스턴스의 public access 을 허용해줘야 한다.

 

정상적이었던 리더 인스턴스가 라이터로 변경되며 해결. 장애시간은 거의 발생하지 않았다.

 

그리고 기존 라이터였던 녀석은 다시 일어나지 못했다..

my.cnf 를 읽지 못해서 재부팅이 안되던데.. 인스턴스 자체에 문제가 있었던 듯 싶다.

보통은 ssh로 접속해서 확인하고 싶었으나 aurora 는 ssh로 접속이 불가한 것으로 알 고 있어.. 디테일한 내용을 볼 순 없었다..

대시보드의 한계..

'IT > 에러 회고' 카테고리의 다른 글

Cannot find module '<경로> - 빌드 에러  (0) 2022.02.15