인스턴스 만들기

이 페이지에서는 MySQL용 Cloud SQL 인스턴스를 만드는 방법을 설명합니다.

모든 인스턴스 설정에 관한 자세한 내용은 인스턴스 설정을 참조하세요.

인스턴스를 생성하는 동안 단일 데이터베이스가 인스턴스에 추가됩니다. 데이터베이스를 만들거나 가져오는 방법으로 데이터베이스를 추가할 수도 있습니다.

시작하기 전에

  1. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Cloud Console의 프로젝트 선택기 페이지에서 Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Cloud SDK 설치 및 초기화
  5. 사용자 계정에 Cloud SQL 관리자 및 Compute 뷰어 역할이 있는지 확인합니다.

    IAM 페이지로 이동

    역할과 권한에 대해 자세히 알아보기

MySQL 인스턴스 만들기

MySQL 인스턴스를 만들려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스 만들기를 클릭합니다.
  3. MySQL을 선택하고 다음을 클릭합니다.
  4. 이름을 입력합니다.

    인스턴스 이름은 외부에 공개되므로 민감한 정보나 개인 식별 정보는 포함하지 마세요.

    인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. 필요한 경우 자동으로 포함됩니다(예: 로그 파일에서).

  5. 'root'@'%' 사용자의 비밀번호를 입력합니다.
  6. 위치에서 인스턴스의 리전과 영역을 선택합니다.

    인스턴스를 인스턴스에 액세스하는 리소스와 같은 리전에 배치합니다. 선택한 리전은 나중에 수정할 수 없습니다. 대부분의 경우 영역을 지정할 필요가 없습니다.

  7. 구성 옵션에서 인스턴스 설정을 업데이트합니다.
    설정 참고
    데이터베이스 버전
    데이터베이스 버전 MySQL 8.0, MySQL 5.7(기본값), 5.6
    연결
    비공개 IP 인스턴스의 비공개 IP 주소를 추가합니다. 인스턴스에 연결하려면 추가 구성이 필요합니다. .
    공개 IP 인스턴스의 공개 IP 주소를 추가합니다. 인스턴스에 연결하려면 추가 구성이 필요합니다.
    머신 유형 및 스토리지
    머신 유형 인스턴스의 CPU 개수와 메모리 양은 머신 유형(또는 '등급'이라고도 함)에 따라 다릅니다. 자세히 알아보기
    스토리지 유형 인스턴스의 SSD 또는 HDD 스토리지 사용 여부를 결정합니다. 자세히 알아보기
    스토리지 용량 인스턴스에 제공된 저장용량입니다. 자세히 알아보기
    스토리지 용량 자동 증가 인스턴스에 여유 공간이 부족할 때 Cloud SQL에서 자동으로 저장용량을 제공할지 여부를 결정합니다. 자세히 알아보기
    고가용성 인스턴스를 고가용성으로 구성해야 하는 경우에는 고가용성(리전) 체크박스를 선택해야 합니다. 자세히 알아보기
    자동 백업 백업을 시작할 시간. 자세히 알아보기
    바이너리 로깅 바이너리 로깅은 복제 및 point-in-time recovery를 사용 설정합니다. 자세히 알아보기
    데이터베이스 플래그 추가
    데이터베이스 플래그 데이터베이스 플래그를 사용하여 인스턴스의 설정과 매개변수를 제어할 수 있습니다. 자세히 알아보기
    유지보수 일정
    유지보수 기간 Cloud SQL이 인스턴스에 서비스 중단 유지보수 작업을 수행할 시간(1시간)을 설정합니다. 이 시간을 설정하지 않으면 예상치 못한 때에 업무에 차질을 줄 수 있는 유지보수 작업이 발생할 수 있습니다. 자세히 알아보기
    유지보수 시점 동일한 프로젝트의 다른 인스턴스와 비교하여 선호하는 업데이트 시간을 설정합니다. 자세히 알아보기

    인스턴스 설정 자세히 알아보기

  8. 만들기를 클릭합니다.

gcloud

gcloud 명령줄 도구 설치 및 시작 방법에 대한 자세한 내용은 Cloud SDK 설치를 참조하세요. Cloud Shell 시작 방법에 대한 자세한 내용은 Cloud Shell 문서를 참조하세요.

  1. 사용 가능한 머신 유형 목록을 표시합니다.
    gcloud sql tiers list
    

    db-로 시작하는 값에 유의합니다. 2세대 인스턴스를 만들 때 이러한 값 중 하나를 선택해야 합니다.

    다양한 머신 유형과 성능, 이러한 요소가 인스턴스 가격에 미치는 영향에 대한 자세한 내용은 가격 책정 페이지를 참조하세요.

  2. 다음과 같이 인스턴스를 만듭니다.
    gcloud sql instances create INSTANCE_NAME --tier=MACHINE_TYPE --region=REGION
    

    인스턴스 이름은 외부에 공개되므로 민감한 정보나 개인 식별 정보를 포함하지 마세요.
    인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. 필요한 경우 자동으로 포함됩니다(예: 로그 파일에서).

    MACHINE_TYPEdb-로 시작하는 이전 단계의 값 중 하나입니다.

    예를 들어 다음 명령어는 London 리전에서 머신 유형이 db-n1-standard-2인 instance1이라는 2세대 인스턴스를 만듭니다.

    gcloud sql instances create instance1 --tier=db-n1-standard-2 --region=europe-west2
    

    매개변수를 추가하여 다른 인스턴스 설정을 결정할 수 있습니다.

    설정 매개변수 참고
    필수 매개변수
    데이터베이스 버전 --database-version MYSQL_8_0, MYSQL_5_7(기본값) 또는 MYSQL_5_6
    리전 --region 유효한 값 알아보기
    연결
    비공개 IP --network 이 인스턴스에 사용할 VPC 네트워크의 이름을 지정합니다. 비공개 서비스 액세스가 이미 네트워크에 구성되어 있어야 합니다. 베타 명령어(gcloud beta sql instances create)에서만 사용할 수 있습니다. 자세히 알아보기
    공개 IP --authorized-networks 공개 IP 연결의 경우 승인된 네트워크에서의 연결만 인스턴스에 연결됩니다. 자세히 알아보기
    머신 유형 및 스토리지
    머신 유형 --tier 인스턴스의 CPU 개수 및 메모리양은 머신 유형에 따라 다릅니다. 기본값 보기 커스텀 머신 유형을 만들 수도 있습니다. 자세히 알아보기
    스토리지 유형 --storage-type 인스턴스의 SSD 또는 HDD 스토리지 사용 여부를 결정합니다. 자세히 알아보기
    스토리지 용량 --storage-size 인스턴스에 제공된 스토리지 용량(GB)입니다. 자세히 알아보기
    스토리지 용량 자동 증가 --storage-auto-increase 인스턴스에 여유 공간이 부족할 때 Cloud SQL에서 자동으로 저장용량을 제공할지 여부를 결정합니다. 자세히 알아보기
    스토리지 용량 자동 증가 한도 --storage-auto-increase-limit Cloud SQL이 자동으로 스토리지를 늘릴 수 있는 정도를 결정합니다. 베타 명령어(gcloud beta sql instances create)에서만 사용할 수 있습니다. 자세히 알아보기
    자동 백업 및 고가용성
    고가용성 --availability-type 고가용성 인스턴스의 경우 REGIONAL로 설정합니다. 자세히 알아보기
    자동 백업 --backup-start-time 백업을 시작할 시간. 자세히 알아보기
    바이너리 로깅 --enable-bin-log 바이너리 로깅은 복제 및 point-in-time recovery를 사용 설정합니다. 자세히 알아보기
    데이터베이스 플래그 추가
    데이터베이스 플래그 --database-flags 데이터베이스 플래그를 사용하여 인스턴스의 설정과 매개변수를 제어할 수 있습니다. 데이터베이스 플래그 자세히 알아보기 매개변수의 형식 지정 방법 자세히 알아보기
    유지보수 일정
    유지보수 기간 --maintenance-window-day,
    --maintenance-window-hour
    Cloud SQL이 인스턴스에 서비스 중단 유지보수 작업을 수행할 시간(1시간)을 설정합니다. 이 기간을 설정하지 않으면 방해가 되는 유지관리 작업이 언제든지 발생할 수 있습니다. 자세히 알아보기
    유지보수 시점 --maintenance-release-channel 동일한 프로젝트의 다른 인스턴스와 비교하여 선호하는 업데이트 시간을 설정합니다. 이전 업데이트에는 preview를 사용하고 이후 업데이트에는 production을 사용합니다. 자세히 알아보기

  3. 자동 할당된 IP 주소를 기록합니다.

    Cloud SQL 프록시를 사용하지 않는 경우 이 주소를 호스트 주소로 사용하여 애플리케이션 또는 도구에서 인스턴스로 연결합니다.

  4. 'root@%' MySQL 사용자의 비밀번호를 설정합니다.
    gcloud sql users set-password root --host=% --instance INSTANCE_NAME --password PASSWORD
    

REST

인스턴스 만들기

이 예시에서는 백업 및 바이너리 로깅이 사용 설정된 인스턴스를 만듭니다. 이러한 설정은 선택 사항입니다. 이 호출에 대한 전체 매개변수 목록은 Instances:insert 페이지를 참조하세요. 리전 및 머신 유형에 따른 유효값을 포함한 인스턴스 설정에 대한 자세한 내용은 인스턴스 설정을 참조하세요.

인스턴스 ID는 외부에 공개되므로 민감한 정보나 개인 식별 정보를 포함하지 마세요.
인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. 필요한 경우 자동으로 포함됩니다(예: 로그 파일에서).

아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 원하는 인스턴스 ID
  • region: 원하는 리전
  • machine-type: 원하는 머신 유형

HTTP 메서드 및 URL:

POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances

JSON 요청 본문:

{
  "name": "instance-id",
  "region": "region",
  "settings": {
    "tier": "machine-type",
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "kind": "sql#operation",
  "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2019-09-25T22:19:33.735Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

응답은 장기 실행 작업이므로 완료하는 데 몇 분 정도 소요될 수 있습니다.

루트 비밀번호 업데이트

인스턴스 초기화가 완료되면 루트 비밀번호를 업데이트합니다.

아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 이전 단계에서 생성한 인스턴스 ID
  • root-password: 원하는 루트 비밀번호

HTTP 메서드 및 URL:

PUT https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=root

JSON 요청 본문:

{
  "name": "root",
  "host": "%",
  "password": "root-password"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "kind": "sql#operation",
  "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2019-09-26T14:32:30.592Z",
  "startTime": "2019-09-26T14:32:30.594Z",
  "endTime": "2019-09-26T14:32:33.518Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

응답은 장기 실행 작업이므로 완료하는 데 몇 분 정도 소요될 수 있습니다.

IPv4 주소 검색

새 인스턴스에 자동으로 할당된 IPv4 주소를 검색합니다.

아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 이전 단계에서 생성한 인스턴스 ID

HTTP 메서드 및 URL:

GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_5_7",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "us-west1-a",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "18:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
      "binaryLogEnabled": true
    },
    "settingsVersion": "1",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "--redacted--",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    ...
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "us-west1",
  "gceZone": "us-west1-a"
}

응답에서 ipAddress 필드를 찾습니다.

이 작업에 적합한 기본 REST API 요청을 구성하는 방법은 instances:insert 페이지의 API 탐색기를 참조하세요.

샘플 머신 유형

커스텀 머신 유형을 사용하면 필요한 메모리 양과 CPU 수로 인스턴스를 구성할 수 있습니다. 그렇지만 이러한 값에는 다음과 같은 제약조건이 있습니다.

  • vCPU는 1 또는 2~96 사이의 짝수여야 합니다.
  • 메모리는 다음과 같아야 합니다.
    • vCPU당 0.9~6.5GB
    • 256MB의 배수
    • 최소 3.75GB(3,840MB)

다음은 MySQL 인스턴스에 사용 가능한 미리 정의된 머신 유형을 기준으로 하는 몇 가지 샘플 머신 유형 값입니다.

사전 정의된 머신 유형 vCPU 메모리(MB) API 계층 문자열
db-n1-standard-1 1 3840 db-custom-1-3840
db-n1-standard-2 2 7680 db-custom-2-7680
db-n1-standard-4 4 15360 db-custom-4-15360
db-n1-standard-8 8 30720 db-custom-8-30720
db-n1-standard-16 16 61440 db-custom-16-61440
db-n1-standard-32 32 122880 db-custom-32-122880
db-n1-standard-64 64 245760 db-custom-64-245760
db-n1-standard-96 96 368640 db-custom-96-368640
db-n1-highmem-2 2 13312 db-custom-2-13312
db-n1-highmem-4 4 26624 db-custom-4-26624
db-n1-highmem-8 8 53248 db-custom-8-53248
db-n1-highmem-16 16 106496 db-custom-16-106496
db-n1-highmem-32 32 212992 db-custom-32-212992
db-n1-highmem-64 64 425984 db-custom-64-425984
db-n1-highmem-96 96 638976 db-custom-96-638976

문제 해결

자세한 내용을 보려면 표의 링크를 클릭하세요.

문제 설명 문제 원인 해결 방법
Internal error 서비스 네트워킹 서비스 계정이 없습니다. Service Networking API를 사용 중지했다가 다시 사용 설정합니다.
Terraform 인스턴스를 만들지 못했습니다. Terraform 구성 오류입니다. Terraform 구성 파일을 검사하고 복구합니다.
Terraform 스크립트에서 HTTP Error 409 발생 다른 작업이 이미 진행 중입니다. Terraform 스크립트를 수정하여 각 작업이 완료될 때까지 기다립니다.
Unknown error 최근 삭제된 인스턴스와 이름이 같은 인스턴스를 만들려고 합니다. 또는 사용 중인 새 비공개 IP 범위로 인스턴스 여러 개를 동시에 만들려고 합니다. 인스턴스에 다른 이름을 사용하거나 인스턴스가 삭제된 후 일주일이 될 때까지 기다립니다. 다른 이름을 사용하여 연속으로 실패한 인스턴스를 다시 만듭니다.

내부 오류

{"ResourceType":"sqladmin.v1beta4.instance", "ResourceErrorCode":"INTERNAL_ERROR","ResourceErrorMessage":null} 오류 메시지가 표시됩니다.

문제 원인

서비스 프로젝트에 이 기능에 필요한 서비스 네트워킹 서비스 계정이 없을 수 있습니다.

해결 방법

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


Terraform 인스턴스 만들기 실패

Terraform 인스턴스를 만들지 못했습니다.

문제 원인

일반적으로 Terraform 스크립트 자체 내의 문제입니다.

해결 방법

Terraform 구성 파일을 검사하고 복구합니다.


Terraform 스크립트에서 409 오류 발생

Terraform 스크립트에 HTTP Error 409 오류 메시지가 표시됩니다.

문제 원인

Operation failed because another operation was already in progress

해결 방법

스크립트를 수정하여 각 인스턴스 작업이 완료될 때까지 실행을 중지합니다. 스크립트를 폴링하고 이전 작업 ID로 200이 반환될 때까지 기다린 후에 다음 단계로 진행합니다.


알 수 없는 오류

인스턴스를 만들려고 할 때 Cloud SQL creation failed, error UNKNOWN과 같은 오류 메시지가 표시됩니다.

문제 원인

최근에 삭제한 인스턴스의 이름을 다시 사용하려는 경우일 수 있습니다. 삭제한 인스턴스 이름은 일주일 동안 다시 사용할 수 없습니다. 또는 첫 번째 인스턴스만 생성되고 다른 인스턴스는 Unknown error와 함께 실패한 경우 새 비공개 IP 범위를 사용하여 인스턴스 여러 개를 동시에 만들려고 합니다.

해결 방법

인스턴스에 다른 이름을 사용하거나 일주일 후에 원래 이름을 사용하여 새 인스턴스를 만듭니다. 동시에 여러 인스턴스를 연속으로 만듭니다.

다음 단계