Engineering/Etc

GCP SQL 인스턴스 구성(hw 사양) 변경시 "Setting flag innodb_buffer_pool_size to 37580963840 exceeds the available memory for the instance's machine type e2-custom-2-8192" 오류 해결

부스 boos 2025. 4. 24. 12:02
728x90

 서비스가 점점 노후화되서 GCP SQL 서버 사양을 낮출려고 vCPU, 메모리 수치를 변경하려고 하니 "Setting flag innodb_buffer_pool_size to 37580963840 exceeds the available memory for the instance's machine type e2-custom-2-8192" 오류가 나면서 실패했다.

 메시지를 보아하니 innodb_buffer_pool_size 설정값을 높게 했다가 낮은 사양으로 바꿀려고 하니 수치가 안맞는다는 건데, 직접 최소 수치를 넣었는데도 적용이 안되어서 어떻게 변경해야 할지 난감했다. (GCP 다 보니 허들이 있다.)

 

그런데, 생각해보니 gemini 에서 질문하면 답이 나올거 같아서 해보니 정답이었다.

 

메모리 설정 계산 방법까지 친절하게 설명하고 있지만, 결국 해결 방법은 innodb_buffer_pool_size 파라미터를 먼저 삭제하고 스펙을 변경하면 된다.

해결 방법:
이 문제를 해결하려면 innodb_buffer_pool_size를 인스턴스의 머신 유형에 적합한 더 작은 값으로 설정해야 합니다. 다음은 몇 가지 권장 사항입니다.
  1. 적절한 값 계산: 일반적으로 innodb_buffer_pool_size는 시스템 총 메모리의 50%에서 80% 사이로 설정하는 것이 좋습니다. 하지만 Cloud SQL 인스턴스의 경우, 전체 8GB 메모리를 InnoDB 버퍼 풀에 할당하는 것은 불가능합니다. 안전하게 시작하려면 4GB에서 6GB 사이의 값을 고려해 볼 수 있습니다.
    바이트 단위로 변환하면 다음과 같습니다.
    • 4GB: (4 \times 1024 \times 1024 \times 1024 = 4294967296) 바이트
    • 6GB: (6 \times 1024 \times 1024 \times 1024 = 6442450944) 바이트
  2. Cloud SQL 인스턴스 구성: Cloud SQL 인스턴스의 플래그를 수정하여 innodb_buffer_pool_size를 적절한 값으로 설정합니다.
    Google Cloud 콘솔 사용:
    • Cloud SQL 인스턴스 개요 페이지로 이동합니다.
    • 왼쪽 메뉴에서 구성을 클릭합니다.
    • 데이터베이스 플래그 섹션으로 이동합니다.
    • innodb_buffer_pool_size 플래그를 찾아 편집하거나, 없다면 플래그 추가를 클릭하여 새로 추가합니다.
    • 새로운 값 (예: 4294967296 또는 6442450944)을 입력합니다.
    • 저장을 클릭합니다. 인스턴스가 재시작될 수 있습니다.
    gcloud CLI 사용:
    Bash
    gcloud sql instances patch INSTANCE_NAME --database-flags "innodb_buffer_pool_size=4294967296"
     
     
    INSTANCE_NAME을 실제 인스턴스 이름으로 바꾸고, 원하는 바이트 값을 설정합니다.

 

 

옛날에는 잘 모르는 시스템은 구글에서 열심히 구글링해서 결과를 찾고 맞는건지 아는 사람들한테 확인하고 했었는데, AI 로 바로 검색이 되니 바로 해결이 가능한 시대가 되었다.