본문 바로가기

개발관련

[AWS RDS] uncategorized SQLException for SQL []; SQL state [HY000]; error code [126]; Incorrect key file for table '/rdsdbdata/tmp/#sql_blah_blah.MYI';

반응형

RDS 용량 증가 방법 참고 : 

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html

 

Amazon RDS용 스토리지 DB 인스턴스 작업 - Amazon Relational Database Service

Amazon RDS용 스토리지 DB 인스턴스 작업 Amazon RDS에 데이터를 저장하는 방식을 지정하려면 DB 인스턴스를 만들거나 수정할 때 스토리지 유형을 선택하고 스토리지 크기를 입력합니다. 추후에는 DB 인스턴스를 수정하여 스토리지의 양을 늘리거나 스토리지의 유형을 변경할 수 있습니다. 워크로드를 사용할 때 어떤 스토르지 유형을 사용할지에 대한 자세한 내용은 Amazon RDS 스토리지 유형 단원을 참조하십시오. DB 인스턴스 스토리지 용량 증가

docs.aws.amazon.com

 

uncategorized SQLException for SQL []; SQL state [HY000]; error code [126]; Incorrect key file for table '/rdsdbdata/tmp/#sql_blah_blah.MYI';

MYSQL을 사용하면서 위와 같은 에러가 발생한다면 데이터베이스에 저장공간이 부족한 것이다.

 

클라이언트에서의 요청으로 인하여 데이터베이스에서 쿼리를 실행시키기 전에 임시테이블을 생성하는데 임시테이블을 생성하는 공간에서 용량이 부족하면 위와같은 에러가 발생한다.

이번에 회사의 Replication DB에서 용량부족으로 인하여 이런 이슈가 발생했다.

확인해보니 해당 RDS 인스턴스에서 스토리지 용량이 고정으로400 GiB로설정되어있었고, 설정된 스토리지 용량을 오버할 시에 자동으로 용량을 증가시켜주는 설정이 Off 처리되어 있었다.

그리고 RDS 인스턴스의 용량이 꽉차서 상태가스토리지 공간 부족으로 표시되고 있었다.

 

그래서 해당 인스턴스의 스토리지 용량을500 GiB로업그레이드했고 스토리지 용량 오버 자동으로 용량을 증가시키는 옵션도 On 처리하여 해결했다.

하지만 멈춰있던 동안의 데이터를 다시 복제해오는 시간이 걸려서 master DB에는 insert 혹은 update 정상적으로 처리했지만 read 할 때의 replication DB에는 처리한 데이터가 없어서 반영이 안된것처럼 보이는 이슈가 생겼다.

그래서 Replication DB 모두 복제되기 전까지는 master DB 바라보도록 일부 서버 어플리케이션들의 설정을 수정하여 재배포했다.

 

보통 RDS 스토리지 용량을 적정한 용량으로 설정해놓고 이를 오버할 시에 자동으로 스토리지 공간이 증가하도록 설정되어있어야 한다.

왜냐하면 보통 DB 증가했으면 증가했지 줄어들지는 않기 때문에 점점 쌓여갈 수 밖에 없는 구조이기 때문에 이러한 설정을 해야하고 

또RDS에서도이런 설정을 default 제공하는 만큼 권장하고있는 설정방법이다.

반응형