데이터베이스 마이너 버전 업그레이드

이 페이지에서는 MySQL 인스턴스의 부 버전을 업그레이드하는 방법을 설명합니다. 지원되는 버전은 데이터베이스 버전 및 버전 정책을 참조하세요.

데이터베이스 제공업체에서는 새로운 부 버전을 출시할 때마다 새로운 기능, 보안 패치, 버그 수정, 성능 개선을 제공하고 있습니다. Cloud SQL에서도 유지보수 중에 부 버전을 정기적으로 업데이트합니다.

하지만 MySQL 8.0은 다운그레이드를 지원하지 않습니다. 따라서 부 버전 업그레이드는 정기 유지보수에 자동으로 포함되지 않습니다. 인스턴스를 만들 때 또는 나중에 업그레이드 프로세스를 수행할 때 MySQL용 Cloud SQL 8.0의 부 버전을 지정할 수 있습니다. 두 방법 모두 이 페이지에서 설명합니다.

새 MySQL 8.0 부 버전으로 업그레이드하기 전 변경사항을 숙지하세요. MySQL 8.0 출시 노트를 참조하세요. MySQL용 Cloud SQL 5.6 또는 5.7을 사용하는 경우 Cloud SQL이 인스턴스의 부 버전을 자동으로 관리합니다. 새 인스턴스를 프로비저닝할 때 Cloud SQL은 사용 가능한 최신 데이터베이스 버전으로 인스턴스를 자동으로 구성합니다. 정기 유지보수 중에는 Cloud SQL이 인스턴스를 지원되는 최신 버전으로 자동으로 업그레이드합니다.

MySQL 8.0 인스턴스의 데이터베이스 부 버전을 업그레이드하려면 인스턴스를 원하는 부 버전으로 업데이트해야 합니다. 원하는 부 버전이 설치된 부 버전보다 높아야 합니다. 인스턴스가 프로비저닝된 후에는 지정되지 않은 부 버전으로 되돌릴 수 없습니다.

Cloud SQL Enterprise Plus 버전의 인스턴스를 실행하는 경우 부 버전 업그레이드 중 다운타임이 거의 없이 마무리됩니다.

업그레이드하기 전에

Cloud SQL은 MySQL 8.0 인스턴스의 부 버전 업그레이드를 지원합니다. MySQL 8.0에서는 다운그레이드가 지원되지 않습니다. 따라서 기본 인스턴스를 업그레이드하기 전 데이터가 안전한지 확인하는 단계를 따라야 합니다.

  1. 데이터베이스의 대상 부 버전을 선택합니다.

    gcloud

    gcloud CLI 설치 및 시작에 대한 자세한 내용은 gcloud CLI 설치를 참조하세요. Cloud Shell 시작 방법에 대한 자세한 내용은 Cloud Shell 사용을 참조하세요.

    인플레이스 업그레이드에 사용할 수 있는 데이터베이스의 부 버전을 확인하려면 다음 단계를 따르세요.

    1. 다음 명령어를 실행합니다.
    2. gcloud sql instances describe INSTANCE_NAME
         

      INSTANCE_NAME을 인스턴스 이름으로 바꿉니다.

    3. 명령어의 출력에서 upgradableDatabaseVersions 라벨이 지정된 섹션을 찾습니다.
    4. 각 하위 섹션에서 업그레이드할 수 있는 데이터베이스 버전을 반환합니다. 각 하위 섹션에서 다음 필드를 검토합니다.
      • name: MySQL용 Cloud SQL 부 버전 인플레이스 업그레이드를 타겟팅할 수 있는 데이터베이스 주 버전 및 부 버전을 포함하는 데이터베이스 버전 문자열입니다.

    REST v1

    인플레이스 업그레이드에 사용할 수 있는 데이터베이스의 부 버전을 확인하려면 Cloud SQL Admin API의 instances.get 메서드를 사용합니다.

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

    • INSTANCE_NAME: 인스턴스 이름입니다.

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

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

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

    
    upgradableDatabaseVersions:
    
    {
      major_version: "MYSQL_8_0"
      name: "MYSQL_8_0_36"
      display_name: "MySQL 8.0.36"
    }
    
    

    REST v1beta4

    인플레이스 업그레이드에 사용할 수 있는 데이터베이스의 부 버전을 확인하려면 Cloud SQL Admin API의 instances.get 메서드를 사용합니다.

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

    • INSTANCE_NAME: 인스턴스 이름입니다.

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

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

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

    
    upgradableDatabaseVersions:
    
    {
      major_version: "MYSQL_8_0"
      name: "MYSQL_8_0_36"
      display_name: "MySQL 8.0.36"
    }
    
    

    Cloud SQL이 지원하는 데이터베이스 버전의 전체 목록은 데이터베이스 버전 및 버전 정책을 참조하세요.

  2. 스테이징 환경에서 업그레이드 테스트

    1. 스테이징 인스턴스로 제공할 프로덕션 인스턴스의 클론을 만듭니다. 그러면 동일한 주 버전 및 부 버전을 사용하는 새 데이터베이스 인스턴스가 생성됩니다.

    2. 스테이징 인스턴스에서 부 버전 업그레이드를 수행합니다.

    3. 워크로드 테스트를 실행하여 업그레이드가 성공했고 애플리케이션이 예상 대로 작동하는지 확인합니다. 테스트가 성공했으면 계속해서 읽기 복제본 인스턴스를 업그레이드합니다.

  3. 읽기 복제본 인스턴스를 업그레이드합니다.

    1. 데이터베이스에서 모든 읽기 복제본을 대상 부 버전으로 업그레이드합니다.

    2. 애플리케이션이 예상 대로 작동하는지 확인합니다.

  4. 기본 인스턴스 백업

    중요한 데이터베이스 업데이트에서와 같이 기본 인스턴스를 백업합니다.

부 버전 업그레이드

gcloud 또는 REST API를 사용하여 기존 인스턴스의 데이터베이스 부 버전을 지정할 수 있습니다. 데이터베이스가 사용 중이 아닐 때 부 버전 업그레이드를 수행합니다. 인스턴스를 다시 시작해야 하는 경우 인스턴스에 다운타임이 발생할 수 있습니다. Cloud SQL Enterprise Plus 버전 인스턴스의 다운타임은 거의 없습니다. 설치된 버전이 요청된 버전보다 높으면 요청이 거부됩니다.

gcloud

gcloud sql instances patch 명령어를 --database-version 플래그와 함께 사용합니다.

명령어를 실행하기 전에 다음 변수를 바꿉니다.

  • INSTANCE_NAME: 인스턴스 이름.
  • DATABASE_VERSION: 인스턴스의 데이터베이스 버전. 이 플래그를 지정하지 않으면 기본 주 버전이 사용됩니다.
gcloud sql instances patch INSTANCE_NAME \
   --database-version=DATABASE_VERSION

REST v1

PATCH 요청을 instances:patch 메서드 및 databaseVersion 플래그와 함께 사용합니다.

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

  • PROJECT_ID: 프로젝트 ID
  • INSTANCE_ID: 인스턴스 ID
  • DATABASE_VERSION: 업그레이드할 데이터베이스 버전

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

JSON 요청 본문:

{
  "databaseVersion": "DATABASE_VERSION"
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-07-17T20:23:15.540Z",
  "operationType": "UPDATE",
  "name": "fa3f7304-ccf6-4d2f-a6f5-24df00000032",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/fa3f7304-ccf6-4d2f-a6f5-24df00000032",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

PATCH 요청을 instances:patch 메서드 및 databaseVersion 플래그와 함께 사용합니다.

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

  • PROJECT_ID: 프로젝트 ID
  • INSTANCE_ID: 인스턴스 ID
  • DATABASE_VERSION: 업그레이드할 데이터베이스 버전

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID

JSON 요청 본문:

{
  "databaseVersion": "DATABASE_VERSION"
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-07-17T20:23:15.540Z",
  "operationType": "UPDATE",
  "name": "fa3f7304-ccf6-4d2f-a6f5-24df00000032",
  "targetId": "INSTANCE-ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/fa3f7304-ccf6-4d2f-a6f5-24df00000032",
  "targetProject": "PROJECT_ID"
}

설치된 데이터베이스의 부 버전 확인

인스턴스 요약 정보를 확인할 때, 설치된 데이터베이스 부 버전이 구성 섹션에 표시됩니다.

업그레이드 롤백

업그레이드를 테스트하는 동안 문제가 발생하면 데이터베이스를 롤백하여 이전 부 버전을 실행하는 데이터베이스 인스턴스를 복구할 수 있습니다.

업그레이드 전 백업을 복원하려면 다음 단계를 수행합니다.

  1. 이전 부 버전에서 복구 데이터베이스 인스턴스를 프로비저닝합니다.
  2. 복구 데이터베이스 인스턴스의 설정을 업그레이드 전 상태로 구성합니다.
  3. 업그레이드 전 백업을 복구 인스턴스로 복원합니다.

백업을 복원하는 대신 PITR(point-in-time recovery)을 수행하고 새 인스턴스를 만듭니다.