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

2분 분량
0

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 인스턴스가 충돌하거나 장애 조치되지 않는지 확인하십시오.

관련 정보

MySQL 데이터베이스 엔진 기반 DB 인스턴스에 연결하기

Amazon RDS DB 인스턴스 수정