Amazon RDS MySQL DB 인스턴스에 연결할 때 ‘MySQL server has gone away’ 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 11월 23일

MySQL을 실행하는 Amazon Relational Database Service(RDS) DB 인스턴스를 쿼리하려고 했는데 ‘MySQL server has gone away’ 또는 ‘Lost connection to server during query’라는 오류 메시지 중 하나가 수신되었습니다.

간략한 설명

서버 시간이 초과되어 연결이 종료된 경우 다음과 같은 오류가 표시될 수 있습니다.

  • CR_SERVER_GONE_ERROR – 클라이언트가 서버에 질문을 보낼 수 없습니다.
  • CR_SERVER_LOST – 클라이언트에서 서버에 쓸 때 오류가 발생하지 않았지만 클라이언트가 질문에 대한 전체 답변(또는 답변)을 받지 못했습니다.

자세한 내용은 MySQL 설명서의 MySQL server has gone away를 참조하십시오.

해결 방법

다음은 이러한 오류의 원인과 관련 해결 방법입니다.

  • 연결이 너무 오랜 시간 유휴 상태인 경우 클라이언트에서 연결이 잘못 종료될 수 있습니다. 이 문제를 해결하려면 애플리케이션 제한 시간이 MySQL 제한 시간보다 짧은지 확인하고 애플리케이션에서 유휴 연결을 종료하도록 설정합니다.
  • 연결 제한 시간이 초과되면 사용자 지정 파라미터 그룹으로 wait_timeoutinteractive_timeout 파라미터를 늘려 MySQL의 제한 시간을 늘립니다. 자세한 내용은 DB 파라미터 그룹 작업을 참조하세요.
  • 오류가 발생하는 쿼리가 규모가 큰 데이터 세트를 검색하는 쿼리인 경우 사용자 지정 파라미터 그룹을 이용해 max_allowed_packet 크기 파라미터의 값을 늘립니다. 자세한 내용은 DB 파라미터 그룹의 파라미터 수정을 참조하세요.
    참고: Amazon Aurora의 경우 파라미터를 수정하고 클러스터 파라미터 그룹에 파라미터를 설정하여 전체 클러스터 수준에서 적용할 수 있습니다. DB 파라미터 그룹에 파라미터를 설정하면 인스턴스 수준에서만 파라미터가 적용됩니다. Amazon Lightsail MySQL 데이터베이스의 경우 명령줄 인터페이스(CLI)를 사용하여 파라미터를 수정하기 전에 파라미터를 수정할 수 있는지 확인해야 합니다. 자세한 내용은 Amazon Lightsail에서 데이터베이스 파라미터 업데이트를 참조하세요. Lightsail 인스턴스 또는 서버 로컬 MySQL 데이터베이스나 Amazon Elastic Compute Cloud(Amazon EC2) MySQL의 경우 구성 파일에 파라미터를 설정할 수 있습니다. 일반적인 온프레미스 MySQL 환경에서 설정하는 방식과 유사하게 글로벌 xxx를 설정할 수도 있습니다.
  • 규모가 큰 데이터 세트를 반환할 때만 오류가 발생하는 경우 클라이언트에서 규모가 큰 9001 MTU 값을 사용하기 때문일 수 있습니다. 이 문제를 해결하려면 클라이언트 TCP/IP MTU 값을 줄입니다. 클라이언트 MTU 값 변경에 대한 자세한 내용은 인스턴스의 MTU 구성 항목을 참조하세요.
  • init_connect 파라미터가 처리 불가능한 값으로 설정되어 있는 경우 관련 클라이언트 연결에 실패할 수 있습니다. 모든 init_connect 파라미터가 정상적으로 처리되는지 확인합니다. 사용자에게 init_connect 파라미터로 참조되는 모든 절차에 대한 EXECUTE 권한이 있는지 확인합니다.
  • 모든 연결이 동시에 끊기는 경우 이 문제가 발생할 때 다른 연결이 계속 작동 중인지 확인합니다. 이 문제를 해결하려면 Amazon RDS 이벤트를 보고 MySQL 오류 로그를 검토하여 MySQL DB 인스턴스가 충돌하거나 장애 조치되지 않는지 확인하십시오.

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요하세요?