PostgreSQL용 Cloud SQL 오류 메시지

이 페이지에서는 Cloud SQL에서 발생하는 몇 가지 오류 메시지를 설명합니다.

개요

Cloud SQL의 오류 메시지는 소스도 다양하고 여러 위치에 나타납니다. 일부 오류 메시지는 데이터베이스 엔진 자체에서, 일부는 Cloud SQL 서비스에서, 일부는 클라이언트 애플리케이션에서 나오며, 일부는 Cloud SQL Admin API 호출에 의해 반환됩니다.

이 페이지에는 Cloud SQL에서 볼 수 있는 가장 일반적인 오류가 포함되어 있습니다. 찾고 있는 오류 코드나 메시지를 여기서 찾을 수 없는 경우 다음 페이지에서 소스 참조 자료를 찾을 수 있습니다.

표시되는 오류 메시지에 대한 참조 자료를 찾을 수 없다면 다른 사용자의 관련 경험이 있을 수 있는 다음 몇몇 위치에서 찾을 수도 있습니다.

작업 오류

A | B | C | D | E | F | G | I | L | M | N | O | P | Q | R | S | T | U | W

오류 메시지 문제 해결
사용자 'XXX'@'XXX'에 대한 액세스가 거부됨(비밀번호 사용: XXX) 다음과 같은 몇 가지 원인이 있을 수 있습니다.
  • 사용자 이름(또는 비밀번호)이 잘못되었습니다.
  • 사용자가 @XXX 이외의 URL에서 연결합니다.
  • 사용자에게 연결하려는 데이터베이스에 대한 올바른 권한이 없습니다.

해결 방법:

  • 사용자 이름과 해당 비밀번호를 확인합니다.
  • 연결의 출처를 확인하여 사용자에게 액세스 권한이 있는 URL과 일치하는지 확인합니다.
  • 데이터베이스에서 사용자의 권한 부여를 확인합니다.
할당된 IP 범위를 네트워크에서 찾을 수 없습니다. 할당된 범위를 수정하거나 삭제한 후에는 VPC 피어링이 업데이트되지 않았습니다.

비공개 연결을 수정해야 합니다. 다음 명령어를 사용하고 --force 인수를 사용합니다.

gcloud services vpc-peerings update \
--network=VPC_NETWORK \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force
오류 메시지 문제 해결
잘못된 요청입니다. 이 메시지의 원인은 여러 가지일 수 있습니다. Illegal Argument가 가장 일반적인 원인 중 하나입니다. 이 경우 요청에서 잘못된 인수를 사용하거나 잘못된 인수 값을 사용하고 있습니다. 다른 여러 원인의 경우 오류 메시지에 유용한 힌트가 있을 수 있습니다.

Illegal Argument의 경우 요청을 검사하여 각 인수가 허용되고 각 인수 값이 유효한지 확인합니다. 그 외 모든 원인은 로그 파일을 검사하여 추가 정보가 있는지 확인합니다.

오류 메시지 문제 해결
CreateConnection에서 할당된 범위를 수정할 수 없습니다. UpdateConnection을 사용하세요. 할당된 범위를 수정하거나 삭제한 후에 VPC 피어링이 업데이트되지 않았습니다.

비공개 연결을 수정해야 합니다. 다음 명령어를 사용하고 --force 인수를 사용합니다.

gcloud services vpc-peerings update \
--network=VPC_NETWORK \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force
피어에서 연결 재설정.

내보내기를 수행하려고 하는데 Cloud Storage가 특정 기간 내에 데이터를 수신하지 않으면 연결이 재설정됩니다.

pg_dump를 사용하여 직접 내보내기를 시도합니다.

Constraints/sql.restrictAuthorizedNetworks. 클론 작업이 Authorized Networks 구성에 의해 차단되었습니다. Google Cloud Console의 연결 섹션에서 공개 IP 주소에 Authorized Networks가 구성되어 있으며 보안 고려사항으로 인해 클론이 허용되지 않습니다.

가능하면 Cloud SQL 인스턴스에서 모든 Authorized Networks 항목을 삭제합니다. 그렇지 않으면 Authorized Networks 항목 없이 복제본을 만듭니다.

오류 메시지 문제 해결
user 데이터베이스가 없습니다. gcloud sql connect --user가 기본 postgres 사용자에서만 작동합니다.

기본 사용자와 연결한 후 사용자를 변경합니다.

디스크가 가득 참 복제본을 만드는 동안 기본 인스턴스 디스크 크기가 가득 찰 수 있습니다.

기본 인스턴스를 수정하여 더 큰 디스크 크기로 업그레이드합니다.

오류 메시지 문제 해결
서브네트워크를 만들 수 없습니다. IP 범위에 더 이상 사용 가능한 주소가 없습니다.

할당된 IP 범위에서 여유 블록을 찾을 수 없습니다. 이 서비스 제공업체에 새 범위를 할당하세요.

할당된 IP 범위에 사용 가능한 주소가 더 이상 없습니다.

다음 시나리오를 고려해 보세요.

  • 비공개 서비스 연결에 할당된 IP 범위의 크기가 /24보다 작습니다.
  • 비공개 서비스 연결에 할당된 IP 범위의 크기가 Cloud SQL 인스턴스 수에 비해 너무 작습니다.
  • 인스턴스가 여러 리전에서 생성되는 경우 할당된 IP 범위의 크기 요구사항이 더 커집니다. 할당된 범위 크기를 참조하세요.

위의 각 시나리오에서 비공개 서비스 연결에 대해 기존 IP 범위를 확장하거나 추가 IP 범위를 할당할 수 있습니다.

새 범위를 할당하는 경우 기존 할당과 겹치는 할당을 만들지 않도록 주의합니다.

새 IP 범위를 만든 후 다음 명령어를 사용하여 VPC 피어링을 업데이트합니다.

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com
--ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
--network=VPC_NETWORK
--project=PROJECT_ID \
--force

기존 할당을 확장하는 경우 할당 범위를 늘리기만 하고 줄이지 않도록 합니다. 예를 들어 원래 할당이 10.0.10.0/24인 경우 새 할당을 최소 10.0.10.0/23으로 만듭니다.

일반적으로 /24 할당에서 시작하는 경우 각 조건(추가 인스턴스 유형 그룹, 추가 리전)에 대해 /mask를 1만큼 줄이는 것이 좋은 규칙입니다. 예를 들어 동일한 할당에서 인스턴스 유형 그룹을 둘 다 만들려는 경우 /24에서 /23으로 전환하면 충분합니다.

기존 IP 범위를 확장한 후 다음 명령어를 사용하여 VPC 피어링을 업데이트합니다.

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
오류 메시지 문제 해결
(gcloud.sql.connect) 클라이언트에 ipv6 연결이 없고 데이터베이스 인스턴스에 ipv4 주소가 없는 것으로 보입니다. Cloud Shell을 사용하여 비공개 IP 인스턴스에 연결하려고 합니다.

현재 Cloud Shell에서 비공개 IP 주소만 있는 인스턴스로 연결할 수 없습니다.

오류 메시지 문제 해결
내부 오류입니다. 프로젝트에 이 기능에 필요한 서비스 네트워킹 서비스 계정이 없을 수 있습니다.

서비스 권한을 복구하려면 Service Networking API를 사용 중지하고 5분 정도 기다린 후 다시 사용 설정합니다.

잘못된 요청: 인스턴스의 서비스 네트워킹 구성이 잘못되었습니다. 프로젝트에서 Service Networking API가 사용 설정되지 않았습니다.

프로젝트에서 Service Networking API를 사용 설정합니다. Cloud SQL 인스턴스에 비공개 IP 주소를 할당하려고 하고 공유 VPC를 사용할 때 이 오류가 표시되면 호스트 프로젝트에도 Service Networking API를 사용 설정해야 합니다.

오류 메시지 문제 해결
네트워크 연결 실패 프로젝트에서 Service Networking API가 사용 설정되지 않았습니다.

프로젝트에서 Service Networking API를 사용 설정합니다. Cloud SQL 인스턴스에 비공개 IP 주소를 할당하려고 하고 공유 VPC를 사용할 때 이 오류가 표시되면 호스트 프로젝트에도 Service Networking API를 사용 설정해야 합니다.

오류 메시지 문제 해결
또 다른 작업이 이미 진행되고 있어 작업에 실패했습니다. 대부분의 Cloud SQL 작업은 동기식입니다. 한 번에 하나만 실행할 수 있습니다.

이전 작업이 완료될 때까지 기다린 후에 다른 작업을 시작합니다.

이 인스턴스에 유효한 작업이 아님 이 오류는 instances.restoreBackup에 대한 API 호출에서 반환되며 스토리지 크기(XXGB)가 백업 크기(YYGB)보다 작으면 백업에서 인스턴스로 복원할 수 없습니다.

대상 인스턴스를 수정하여 스토리지 크기를 늘립니다.

오류 메시지 문제 해결
사용자 'postgres'의 비밀번호 인증에 실패했습니다. 새 PostgreSQL용 Cloud SQL 인스턴스를 만들면 기본 관리자 사용자 postgres가 생성되지만 비밀번호는 생성되지 않습니다. 사용자가 로그인하기 전에 이 사용자의 비밀번호를 설정해야 합니다.

오류 메시지 문제 해결
할당량을 초과했습니다. 분당 또는 일일 할당량 한도에 도달했습니다. Cloud SQL의 할당량 및 한도를 검토합니다.

Google Cloud Console에서 할당량 증가를 요청합니다.

오류 메시지 문제 해결
나머지 연결 슬롯이 예약되었습니다. 허용된 최대 연결에 도달했습니다.

max_connections 플래그의 값을 늘립니다. 데이터베이스 플래그 구성을 참조하세요.

요청에 유효한 API 키가 없습니다. 유효한 서비스 계정 키 JSON 파일이 없거나 예상 위치에 저장되지 않았을 수 있습니다.

GOOGLE_APPLICATION_CREDENTIALS 환경 변수에 저장된 위치에 유효한 서비스 계정 키 JSON 파일이 있고 이 변수가 올바른 위치를 가리키고 있는지 확인합니다.

오류 메시지 문제 해결
SSL 오류: 잘못된 패딩입니다. 서버 인증서 오류입니다.

새 서버 인증서를 만들고 rotate합니다.

시스템 오류가 발생했습니다.
  • 사용자에게 필요한 일부 Cloud Storage 권한이 없을 수 있습니다.
  • 데이터베이스 테이블이 없을 수 있습니다.

해결 방법:

  • 최소한 버킷에 대한 WRITER 권한과 내보내기 파일에 대한 READER 권한이 있는지 확인합니다. Cloud Storage에서 액세스 제어를 구성하는 방법에 대한 자세한 내용은 액세스제어 목록 만들기 및 관리를 참조하세요.
  • 테이블이 있는지 확인합니다. 테이블이 있으면 스토리지 버킷에 대한 올바른 권한이 있는지 확인합니다.
오류 메시지 문제 해결
테이블 정의가 변경되었습니다. 내보내기 프로세스 중에 테이블에서 변경 사항이 발생했습니다.

내보내기 작업 중에 다음 문을 사용하면 덤프 트랜잭션이 실패할 수 있습니다.

  • ALTER TABLE
  • CREATE TABLE
  • DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE

덤프 작업에서 이러한 문을 삭제합니다.

임시 파일 크기가 temp_file_limit를 초과합니다. temp_file_limit 플래그가 데이터베이스 사용량에 비해 너무 낮게 설정되어 있습니다.

temp_file_limit 크기를 늘립니다. 데이터베이스 플래그 구성을 참조하세요.

내보내기 중입니다(제한 시간). CSV 형식과 SQL 형식은 내보내기 방식이 서로 다릅니다. SQL 형식은 전체 데이터베이스를 포함하며, 완료하는 데 더 많은 시간이 걸릴 수 있습니다.

CSV 형식을 사용하고 여러 개의 작은 내보내기 작업을 실행하여 각 작업의 크기와 길이를 줄입니다.

연결이 너무 많습니다. max_connections 플래그 값을 너무 높게 설정하면 이 오류가 발생할 수 있습니다. 플래그를 순서와 다르게 사용 설정해도 이 문제가 발생할 수 있습니다.

max_connections 플래그 값을 낮추거나 고객지원에 연락하여 플래그 삭제 후 hard drain을 요청합니다. 이렇게 하면 플래그 또는 설정 없이 새 구성으로 인스턴스가 다른 호스트에서 강제로 다시 시작됩니다.

오류 메시지 문제 해결
연결 권한이 없습니다. 승인은 다양한 수준에서 발생하므로 원인이 다양할 수 있습니다.
  • 데이터베이스 수준에서 데이터베이스 사용자가 있어야 하며 비밀번호가 일치해야 합니다.
  • 프로젝트 수준에서 사용자에게 serviceusage.services.use 또는 cloudsql.instances.connect 권한을 포함한 올바른 IAM 권한이 없을 수 있습니다.
  • 네트워크 수준에서 Cloud SQL 인스턴스가 공개 IP를 사용하는 경우 연결의 소스 IP가 승인된 네트워크에 있어야 합니다.

해결 방법:

  • 사용자가 존재하고 비밀번호가 일치하는지 확인합니다.
  • 사용자 계정에 Service Usage Consumer 역할을 할당합니다. 이 역할에는 serviceusage.services.use 권한이 포함됩니다.
  • 공개 IP를 사용하는 경우 소스 IP가 승인된 네트워크에 있는지 확인합니다.
오류 메시지 문제 해결
x509: 인증서에 유효한 이름이 없습니다. 알려진 문제: 현재 Cloud SQL 프록시 다이얼러는 Go 1.15와 호환되지 않습니다.

해결될 때까지 해결 방법이 나와 있는 GitHub의 토론을 참조하세요.

알 수 없는 오류

다음 표는 Unknown Error가 발생할 수 있는 몇 가지 알려진 사례를 보여주며, 해당하는 경우 특정 해결 방법을 보여줍니다. 하지만 이것이 전체 목록은 아닙니다. 이 표에서 자신의 사례를 찾을 수 없으면 Cloud SQL의 공개 Issue Tracker로 확인하세요. 여기에서도 문제를 찾을 수 없으면 보고서를 제출하거나 기타 지원 옵션을 검토할 수 있습니다.

작업 문제 원인 해결 방법
사용자 추가 사용자가 데이터베이스에 이미 있을 때 사용자를 추가하려고 시도하면 이 오류가 발생할 수 있습니다. 사용자가 데이터베이스에 존재하지 않는지 확인합니다.
백업 자동 또는 수동 백업 중에 이 오류가 표시되면 인스턴스 디스크가 가득 찼을 수 있습니다. 임시 파일 크기가 너무 많은 공간을 차지하는 경우 인스턴스를 다시 시작하여 해당 파일을 삭제하고 디스크 공간을 확보할 수 있습니다. 그렇지 않으면 인스턴스를 더 큰 디스크 크기로 업그레이드해야 할 수 있습니다.
클론 이 오류는 선택한 영역에 리소스가 부족할 때 발생할 수 있습니다. 리전의 다른 영역을 사용해 보거나 잠시 기다린 후 다시 시도하세요.
인스턴스 만들기
  • 이 오류는 최근에 삭제한 인스턴스와 동일한 이름을 다시 사용하려고 할 때 발생할 수 있습니다.
  • 또한 간헐적인 연결 문제로 인해 발생할 수도 있습니다.
  • 프로젝트에 대해 Service Networking API가 사용 설정되지 않았다고 로그에 표시될 수 있습니다.
  • 여러 인스턴스를 동시에 만들려고 할 때도 이 오류가 표시됩니다. 예를 들어 Terraform 스크립트를 사용하면 이 시도가 가능합니다.
  • 또 다른 원인은 특정 리소스가 소진되었거나 할당량 한도가 초과되었기 때문일 수 있습니다. 로그에서 Quota 'INTERNAL_FORWARDING_RULES_WITH_TARGET_INSTANCE_PER_NETWORK' exceeded. Limit: 100.0 globally와 같은 항목을 찾습니다.
  • 이 오류는 IP 범위에 사용 가능한 주소가 더 이상 없으면 서브넷을 만들 수 없는 경우에 발생할 수 있습니다.
  • 인스턴스 이름은 삭제 후 일주일이 지나야 다시 사용할 수 있습니다.
  • 간헐적인 연결 문제의 경우에 다시 시도하면 문제가 해결됩니다.
  • 프로젝트에 Service Networking API를 사용 설정합니다.
  • 병렬 인스턴스 만들기 스크립트는 인스턴스 중 하나만 만들 때만 성공합니다. 각 인스턴스 만들기 작업이 완료될 때까지 기다렸다가 다음 인스턴스로 계속 진행합니다.
  • 새 범위를 할당합니다.
복제본 만들기 로그 파일에 더 구체적인 오류가 있을 수 있습니다. Cloud Logging의 로그를 검사하여 실제 오류를 찾습니다.

오류가 set Service Networking service account as servicenetworking.serviceAgent role on consumer project이면 Service Networking API를 사용 중지했다가 다시 사용 설정합니다. 이렇게 하면 프로세스를 계속 진행하는 데 필요한 서비스 계정이 생성됩니다.

오류가 The instance creation failed due to a permission error with the CMEK key defined이면 키 설정 및 위치를 검토합니다.

내보내기 데이터베이스를 Cloud Storage 버킷으로 내보내는 중 이 오류가 발생하면 전송 실패 이유가 대역폭 문제 때문일 수 있습니다. Cloud SQL 인스턴스가 Cloud Storage 버킷과 다른 리전에 있을 수 있습니다. 한 대륙에서 데이터를 읽어 다른 대륙에 쓰려면 많은 네트워크 사용량이 필요하며, 이러한 간헐적인 문제를 일으킬 수 있습니다.
장애 조치(자동) 서비스에서 기본 인스턴스가 계속 응답하고 있는 것으로 감지되면 자동 장애 조치 작업으로 이 오류 메시지가 생성될 수 있습니다. 이 경우에는 수행할 작업이 없습니다. 장애 조치가 필요하지 않기 때문에 수행되지 않습니다.
가져오기 가져오기 파일에 수퍼유저 역할이 필요한 문이 포함되었을 수 있습니다. 파일을 수정하여 수퍼유저 역할이 필요한 모든 문을 삭제합니다.

또한 Cloud SQL에는 일부 타사 바이너리(예: mysqld)가 사용되며, 이로 인해 알 수 없는 오류 메시지가 생성될 수 있습니다. 이러한 오류는 해당 타사 바이너리의 내부 문제이며 Cloud SQL의 범위를 벗어납니다. 하지만 경우에 따라 동시에 보다 구체적인 오류가 Cloud SQL 로그 파일에서 발견될 수 있습니다.

또한 이것이 알 수 없는 오류 코드인 경우도 있습니다. 이럴 때 전체 메시지는 Unknown Error Code일 수 있습니다.