이 페이지에서는 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은 MySQL 8.0 인스턴스의 부 버전 업그레이드를 지원합니다. MySQL 8.0에서는 다운그레이드가 지원되지 않습니다. 따라서 기본 인스턴스를 업그레이드하기 전 데이터가 안전한지 확인하는 단계를 따라야 합니다.
데이터베이스의 대상 부 버전을 선택합니다.
gcloud
gcloud CLI 설치 및 시작에 대한 자세한 내용은 gcloud CLI 설치를 참조하세요. Cloud Shell 시작 방법에 대한 자세한 내용은 Cloud Shell 사용을 참조하세요.
인플레이스 업그레이드에 사용할 수 있는 데이터베이스의 부 버전을 확인하려면 다음 단계를 따르세요.
- 다음 명령어를 실행합니다.
- 명령어의 출력에서
upgradableDatabaseVersions
라벨이 지정된 섹션을 찾습니다. - 각 하위 섹션에서 업그레이드할 수 있는 데이터베이스 버전을 반환합니다. 각 하위 섹션에서 다음 필드를 검토합니다.
name
: MySQL용 Cloud SQL 부 버전 인플레이스 업그레이드를 타겟팅할 수 있는 데이터베이스 주 버전 및 부 버전을 포함하는 데이터베이스 버전 문자열입니다.
gcloud sql instances describe INSTANCE_NAME
INSTANCE_NAME을 인스턴스 이름으로 바꿉니다.
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이 지원하는 데이터베이스 버전의 전체 목록은 데이터베이스 버전 및 버전 정책을 참조하세요.
스테이징 환경에서 업그레이드 테스트
스테이징 인스턴스로 제공할 프로덕션 인스턴스의 클론을 만듭니다. 그러면 동일한 주 버전 및 부 버전을 사용하는 새 데이터베이스 인스턴스가 생성됩니다.
스테이징 인스턴스에서 부 버전 업그레이드를 수행합니다.
워크로드 테스트를 실행하여 업그레이드가 성공했고 애플리케이션이 예상 대로 작동하는지 확인합니다. 테스트가 성공했으면 계속해서 읽기 복제본 인스턴스를 업그레이드합니다.
읽기 복제본 인스턴스를 업그레이드합니다.
데이터베이스에서 모든 읽기 복제본을 대상 부 버전으로 업그레이드합니다.
애플리케이션이 예상 대로 작동하는지 확인합니다.
기본 인스턴스 백업
중요한 데이터베이스 업데이트에서와 같이 기본 인스턴스를 백업합니다.
부 버전 업그레이드
gcloud
또는 REST API를 사용하여 기존 인스턴스의 데이터베이스 부 버전을 지정할 수 있습니다. 데이터베이스가 사용 중이 아닐 때 부 버전 업그레이드를 수행합니다. 작업 중 인스턴스가 다시 시작되어 다운타임이 발생합니다. 현재 설치된 버전이 요청된 버전보다 높으면 요청이 거부됩니다.
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" }
설치된 데이터베이스의 부 버전 확인
인스턴스 요약 정보를 확인할 때, 설치된 데이터베이스 부 버전이 구성 섹션에 표시됩니다.
업그레이드 롤백
업그레이드를 테스트하는 동안 문제가 발생하면 데이터베이스를 롤백하여 이전 부 버전을 실행하는 데이터베이스 인스턴스를 복구할 수 있습니다.
업그레이드 전 백업을 복원하려면 다음 단계를 수행합니다.
- 이전 부 버전에서 복구 데이터베이스 인스턴스를 프로비저닝합니다.
- 복구 데이터베이스 인스턴스의 설정을 업그레이드 전 상태로 구성합니다.
- 업그레이드 전 백업을 복구 인스턴스로 복원합니다.
백업을 복원하는 대신 PITR(point-in-time recovery)을 수행하고 새 인스턴스를 만듭니다.