이 페이지에서는 BAK 파일을 사용하여 Cloud SQL 인스턴스로 데이터를 내보내고 가져오는 방법과 트랜잭션 로그 파일을 사용하여 Cloud SQL 인스턴스로 데이터를 가져오는 방법을 설명합니다.
시작하기 전에
내보내기는 데이터베이스 리소스를 사용하지만 인스턴스가 과소 프로비저닝되지 않는 한 일반적인 데이터베이스 작업에 지장을 주지 않습니다.
권장사항은 데이터 가져오기 및 내보내기 권장사항을 참조하세요.
가져오기 작업을 완료한 후 결과를 확인합니다.
SQL Server용 Cloud SQL에서 데이터 내보내기
Cloud SQL은 기본 BAK 파일 내보내기를 지원합니다.
내보낸 파일에서 새 인스턴스를 만들려면 백업에서 다른 인스턴스로 복원하거나 인스턴스를 클론하는 것이 좋습니다.
Cloud SQL은 내보내기 작업 중에 선택한 데이터베이스의 전체 백업을 수행합니다.
SQL Server용 Cloud SQL에서 내보내는 데 필요한 역할과 권한
데이터를 Cloud SQL에서 Cloud Storage로 내보내려면 내보내기를 시작하는 사용자에게 다음 역할 중 하나가 있어야 합니다.
- Cloud SQL 편집자 역할
- 다음 권한이 포함된 맞춤 역할:
cloudsql.instances.get
cloudsql.instances.export
또한 Cloud SQL 인스턴스의 서비스 계정에는 다음 역할 중 하나가 있어야 합니다.
storage.objectAdmin
Identity and Access Management(IAM) 역할- 다음 권한이 포함된 커스텀 역할:
storage.objects.create
storage.objects.list
(스트라이핑된 내보내기만 해당)storage.objects.delete
(스트라이핑된 내보내기만 해당)
IAM 역할에 대한 도움말은 Identity and Access Management를 참조하세요.
SQL Server용 Cloud SQL에서 BAK 파일로 데이터 내보내기
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
- 내보내기를 클릭합니다.
- 파일 형식 섹션에서 BAK를 클릭합니다.
- 내보낼 데이터 섹션에서 드롭다운 메뉴를 사용하여 내보낼 데이터베이스를 선택합니다.
- 대상 섹션에서 찾아보기를 선택하여 내보낼 Cloud Storage 버킷 또는 폴더를 검색합니다.
- 내보내기를 클릭하여 시작합니다.
gcloud
- Cloud Storage 버킷을 만듭니다.
- 내보낼 Cloud SQL 인스턴스의 서비스 계정을 찾습니다.
gcloud sql instances describe
명령어를 실행하여 수행할 수 있습니다. 출력에서serviceAccountEmailAddress
필드를 찾습니다.gcloud sql instances describe INSTANCE_NAME
gsutil iam
을 사용하여 서비스 계정에storage.objectAdmin
IAM 역할을 부여합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요.- 데이터베이스를 내보냅니다.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \ --database=DATABASE_NAME
gcloud sql export bak
명령어 사용에 대한 자세한 내용은 명령어 참조 페이지를 확인하세요. - 이전에 설정한 IAM 역할을 유지할 필요가 없으면 지금 취소합니다.
REST v1
- 내보내기를 위한 Cloud Storage 버킷을 만듭니다.
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
이 단계는 필수 사항은 아니지만 다른 데이터에 대한 액세스를 열지 않아도 되기 때문에 적극 권장됩니다.
- 인스턴스에 버킷의
legacyBucketWriter
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 데이터베이스를 내보냅니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_DUMP_FILE: SQL 덤프 파일의 경로
- DATABASE_NAME_1: Cloud SQL 인스턴스 내 데이터베이스의 이름
- DATABASE_NAME_2: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
JSON 요청 본문:
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 역할을 유지할 필요가 없으면 지금 삭제합니다.
REST v1beta4
- 내보내기를 위한 Cloud Storage 버킷을 만듭니다.
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
이 단계는 필수 사항은 아니지만 다른 데이터에 대한 액세스를 열지 않아도 되기 때문에 적극 권장됩니다.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 데이터베이스를 내보냅니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_DUMP_FILE: SQL 덤프 파일의 경로
- DATABASE_NAME_1: Cloud SQL 인스턴스 내 데이터베이스의 이름
- DATABASE_NAME_2: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export
JSON 요청 본문:
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 역할을 유지할 필요가 없으면 지금 취소합니다.
차등 데이터베이스 백업 내보내기
차등 데이터베이스 백업을 내보내기 전 차등 기준을 내보내야 합니다.
PITR(point-in-time recovery) 및 읽기 복제본과 같은 다른 서비스 또는 기능이 전체 백업 내보내기와 차등 백업 내보내기 간에 전체 백업을 트리거하는 경우 전체 백업 내보내기를 다시 트리거해야 합니다.
자세한 내용을 이해하려면 다음 예시를 살펴보세요.
- 오전 7시에 전체 백업 요청을 제출합니다.
- 오전 9시에 PITR(point-in-time recovery)을 사용 설정합니다. 이렇게 하면 인스턴스에서 전체 백업이 트리거됩니다.
- 오후 5시에 차등 백업을 하려고 합니다. 마지막 전체 백업이 PITR(point-in-time recovery)에 의해 트리거되었기 때문에 내보내기 요청이 오류 메시지와 함께 실패합니다.
Cloud SQL은 복제본 인스턴스에서 --differential-base
또는 --bak-type=DIFF
가 있는 데이터베이스 내보내기 요청을 지원하지 않습니다.
gcloud
- Cloud Storage 버킷을 만듭니다.
- 내보낼 Cloud SQL 인스턴스의 서비스 계정을 찾습니다.
gcloud sql instances describe
명령어를 실행하여 수행할 수 있습니다. 출력에서serviceAccountEmailAddress
필드를 찾습니다.gcloud sql instances describe INSTANCE_NAME
gsutil iam
을 사용하여 서비스 계정에storage.objectAdmin
IAM 역할을 부여합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요.데이터베이스를 차등 기준으로 내보냅니다.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --differential-base
gcloud sql export bak
명령어 사용에 대한 자세한 내용은 명령어 참조 페이지를 확인하세요.차등 백업을 내보냅니다.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF
gcloud sql export bak
명령어 사용에 대한 자세한 내용은 명령어 참조 페이지를 확인하세요.- 이전에 설정한 IAM 역할을 유지할 필요가 없으면 지금 취소합니다.
REST v1
- 내보내기를 위한 Cloud Storage 버킷을 만듭니다.
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
이 단계는 필수 사항은 아니지만 다른 데이터에 대한 액세스를 열지 않아도 되기 때문에 적극 권장됩니다.
- 인스턴스에 버킷의
legacyBucketWriter
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 전체 데이터베이스 백업을 차등 기준으로 내보냅니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID입니다.
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_dump_file: SQL 덤프 파일의 경로입니다.
- database_name_1: Cloud SQL 인스턴스 내 데이터베이스의 이름
- database_name_2: Cloud SQL 인스턴스 내 데이터베이스의 이름
- offload: 서버리스 내보내기를 사용 설정하고 사용하려면 값을
true
로 설정합니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
JSON 요청 본문:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { "differentialBase":true } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 차등 백업을 내보냅니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_dump_file: SQL 덤프 파일의 경로
- database_name_1: Cloud SQL 인스턴스 내 데이터베이스의 이름
- database_name_2: Cloud SQL 인스턴스 내 데이터베이스의 이름
- offload: 서버리스 내보내기를 사용 설정합니다. 서버리스 내보내기를 사용하기 위해
true
로 설정합니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
JSON 요청 본문:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 역할을 유지할 필요가 없으면 지금 삭제합니다.
REST v1beta4
- 내보내기를 위한 Cloud Storage 버킷을 만듭니다.
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
이 단계는 필수 사항은 아니지만 다른 데이터에 대한 액세스를 열지 않아도 되기 때문에 적극 권장됩니다.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 전체 데이터베이스 백업을 차등 기준으로 내보냅니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID입니다.
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_dump_file: SQL 덤프 파일의 경로입니다.
- database_name_1: Cloud SQL 인스턴스 내 데이터베이스의 이름
- database_name_2: Cloud SQL 인스턴스 내 데이터베이스의 이름
- offload: 서버리스 내보내기를 사용 설정하고 사용하려면 값을
true
로 설정합니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
JSON 요청 본문:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { "differentialBase":true } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 차등 백업을 내보냅니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID입니다.
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_dump_file: SQL 덤프 파일의 경로입니다.
- database_name_1: Cloud SQL 인스턴스 내 데이터베이스의 이름
- database_name_2: Cloud SQL 인스턴스 내 데이터베이스의 이름
- offload: 서버리스 내보내기를 사용 설정하고 사용하려면 이 값을
true
로 설정합니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
JSON 요청 본문:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 역할을 유지할 필요가 없으면 지금 취소합니다.
스트라이핑된 내보내기 사용
스트라이핑된 내보내기의 장점은 다음과 같습니다.
- 작업 완료에 소요되는 시간이 단축됩니다.
- 5TB보다 큰 데이터베이스를 내보낼 수 있습니다.
스트라이핑된 내보내기를 사용할 때의 단점은 백업이 파일 하나로 구성되지 않고 파일 세트 간에 분할된다는 것입니다. 이 세트를 '스트라이프 세트'라고 합니다. 스트라이핑된 미디어 세트(스트라이프 세트)의 백업 기기를 참조하세요. Cloud SQL에서는 단일 파일을 생성하는 대신 Cloud Storage의 빈 폴더로 내보냅니다. 자세한 내용은 스트라이핑된 내보내기 사용 방법을 참조하세요.
운영 계획
스트라이핑된 내보내기는 내보내기 성능을 개선할 수 있습니다. 하지만 사용 사례에 단일 출력 파일이 필요하거나 데이터베이스 크기가 5TB 미만이고 빠른 성능이 중요하지 않은 경우에는 스트라이핑되지 않은 내보내기를 사용하는 것이 좋습니다.
스트라이핑된 내보내기를 사용하려면 스트라이프 수를 고려합니다. gcloud CLI 명령어 또는 REST API 호출에서 이 값을 지정할 수 있습니다. 하지만 성능을 위한 최적의 스트라이프 수를 원하거나 개수를 모르는 경우에는 이 값을 생략합니다. 최적의 스트라이프 수가 자동으로 설정됩니다.
현재 SQL Server용 Cloud SQL에서 지원하는 최대 스트라이프 수는 64개입니다.
스트라이핑된 내보내기 사용 방법
gcloud
- Cloud Storage 버킷을 만듭니다.
- 내보낼 Cloud SQL 인스턴스의 서비스 계정을 찾습니다.
gcloud sql instances describe
명령어를 실행하면 됩니다. 출력에서serviceAccountEmailAddress
필드를 찾습니다.gcloud sql instances describe INSTANCE_NAME
gsutil iam
을 사용하여 서비스 계정에storage.objectAdmin
IAM 역할을 부여합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요.- 데이터베이스를 내보내려면
--striped
매개변수를 지정하거나--stripe_count
값을 지정합니다.--stripe_count
값을 설정하면--striped
매개변수 사용을 의미합니다.--no-striped
를 지정했으나--stripe_count
값을 지정하면 오류가 발생합니다.gcloud beta sql export bak INSTANCE_NAME \ gs://BUCKET_NAME/STRIPED_EXPORT_FOLDER \ --database=DATABASE_NAME --striped --stripe_count=NUMBER
gcloud beta sql export bak
명령어 사용에 대한 자세한 내용은 명령어 참조 페이지를 확인하세요. - 이전에 설정한 IAM 역할을 유지할 필요가 없으면 지금 취소합니다.
REST v1
- 내보내기를 위한 Cloud Storage 버킷을 만듭니다.
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
이 단계는 필수 사항은 아니지만 다른 데이터에 대한 액세스를 열지 않아도 되기 때문에 적극 권장됩니다.
- 인스턴스에 버킷의
legacyBucketWriter
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 데이터베이스를 내보냅니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_folder: 스트라이핑된 세트를 내보낼 폴더(Cloud Storage 버킷 내)의 경로
- database_name: Cloud SQL 인스턴스의 데이터베이스 이름
- true | false: 스트라이핑된 내보내기를 사용하려면
true
로 설정합니다. 스트라이프 수를 지정하지 않고true
를 지정하면 최적의 스트라이프 수가 자동으로 설정됩니다. - number_of_stripes: 사용할 스트라이프 수입니다. 지정될 경우
striped
가true
로 암시됩니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
JSON 요청 본문:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 역할을 유지할 필요가 없으면 지금 삭제합니다.
REST v1beta4
- 내보내기를 위한 Cloud Storage 버킷을 만듭니다.
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
이 단계는 필수 사항은 아니지만 다른 데이터에 대한 액세스를 열지 않아도 되기 때문에 적극 권장됩니다.
- 인스턴스에 버킷의
legacyBucketWriter
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 데이터베이스를 내보냅니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_folder: 스트라이핑된 세트를 내보낼 폴더(Cloud Storage 버킷 내)의 경로
- database_name: Cloud SQL 인스턴스의 데이터베이스 이름
- true | false: 스트라이핑된 내보내기를 사용하려면
true
로 설정합니다. 스트라이프 수를 지정하지 않고true
를 지정하면 최적의 스트라이프 수가 자동으로 설정됩니다. - number_of_stripes: 사용할 스트라이프 수입니다. 지정될 경우
striped
가true
로 암시됩니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
JSON 요청 본문:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 역할을 유지할 필요가 없으면 지금 삭제합니다.
SQL Server용 Cloud SQL로 가져오기
SQL Server용 Cloud SQL로 가져오기에 필요한 역할 및 권한
데이터를 Cloud Storage에서 Cloud SQL로 가져오려면 가져오기를 시작하는 사용자에게 다음 역할 중 하나가 있어야 합니다.
- Cloud SQL 관리자 역할
- 다음 권한이 포함된 맞춤 역할:
cloudsql.instances.get
cloudsql.instances.import
또한 Cloud SQL 인스턴스의 서비스 계정에는 다음 역할 중 하나가 있어야 합니다.
storage.objectAdmin
IAM 역할- 다음 권한이 포함된 커스텀 역할:
storage.objects.get
storage.objects.list
(스트라이핑된 가져오기만 해당)
IAM 역할에 대한 도움말은 Identity and Access Management를 참조하세요.
BAK 파일에서 SQL Server용 Cloud SQL로 데이터 가져오기
스트라이핑된 가져오기를 사용하려면 스트라이핑된 가져오기 사용을 참조하세요.
다양한 가져오기 프레임워크를 사용할 수 있습니다. 예를 들어 SQL Server용 Cloud SQL은 다음 데이터베이스 버전에 변경 데이터 캡처(CDC)를 지원합니다.
- SQL Server 2017 Standard
- SQL Server 2017 Enterprise
- SQL Server 2019 Standard
- SQL Server 2019 Enterprise
CDC 지원 데이터베이스를 가져올 때는 KEEP_CDC 플래그가 보존됩니다.
인스턴스 버전이 Microsoft SQL Server Enterprise Edition인 경우 암호화된 BAK 파일을 가져올 수 있습니다.
Microsoft SQL Server Standard Edition 인스턴스도 암호화된 BAK 파일을 가져오지만 gcloud CLI를 통해서만 가져옵니다.
지원되는 유일한 BAK 확장은 .bak
및 .bak.gz
입니다. GPG 암호화된 백업은 현재 지원되지 않습니다.
아래의 안내에 따라 새 데이터베이스를 지정할 준비를 합니다. BAK 파일 가져오기를 시작하기 전에 데이터베이스를 만들지 마세요.
BAK 파일을 사용하여 Cloud SQL 인스턴스로 데이터를 가져오려면 다음 안내를 따르세요.
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
- 가져오기를 클릭합니다.
- 데이터를 가져오려는 파일 선택 필드에서 가져오기에 사용할 버킷과 BAK 파일의 경로를 입력합니다.
압축된 파일(
.gz
) 또는 압축되지 않은 파일을 가져올 수 있습니다. - 형식 섹션에서 BAK를 선택합니다.
- BAK 파일을 가져올 Cloud SQL 인스턴스의 데이터베이스를 지정합니다.
- 가져오기를 클릭하여 가져오기를 시작합니다.
gcloud
가져오기를 위한 Cloud Storage 버킷 만들기
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
이 단계는 필수 사항은 아니지만 다른 데이터에 대한 액세스를 열지 않아도 되기 때문에 적극 권장됩니다.
- 필요한 역할과 권한을 구성했는지 확인합니다.
- BAK 파일의 데이터를 버킷에 업로드합니다.
- 가져오기의 대상 인스턴스를 설명합니다.
gcloud sql instances describe INSTANCE_NAME
serviceAccountEmailAddress
필드를 복사합니다.gsutil iam
을 사용하여 버킷의 서비스 계정에storage.objectViewer
IAM 역할을 부여합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요.- 파일에서 데이터를 가져옵니다.
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME
암호화된 가져오기의 경우 다음 명령어를 사용합니다.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME --pvk-path=gs://BUCKET_NAME/KEY_NAME --prompt-for-pvk-password
- 이전에 설정한 IAM 권한을 유지할 필요가 없으면
gsutil iam
을 사용하여 삭제합니다.
REST v1
- Cloud Storage 버킷을 만듭니다.
파일을 버킷에 업로드합니다.
버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참조하세요.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 파일에서 데이터를 가져옵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_bak_file: BAK 파일의 경로입니다.
- database_name: Cloud SQL 인스턴스 내의 데이터베이스 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
가져오기에 다른 사용자를 사용하려면
이 요청을 위한 매개변수의 전체 목록은 instances:import 페이지를 참조하세요.importContext.importUser
속성을 지정합니다. - 이전에 설정한 IAM 권한을 유지할 필요가 없으면 삭제합니다.
REST v1beta4
- Cloud Storage 버킷을 만듭니다.
파일을 버킷에 업로드합니다.
버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참조하세요.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 파일에서 데이터를 가져옵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_bak_file: BAK 파일의 경로입니다.
- database_name: Cloud SQL 인스턴스 내의 데이터베이스 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
가져오기에 다른 사용자를 사용하려면
이 요청을 위한 매개변수의 전체 목록은 instances:import 페이지를 참조하세요.importContext.importUser
속성을 지정합니다. - 이전에 설정한 IAM 권한을 유지할 필요가 없으면 삭제합니다.
ERROR_RDBMS
와 같은 오류가 발생하면 BAK 파일이 버킷에 있고 버킷에 대한 올바른 권한이 있는지 확인합니다. Cloud Storage에서 액세스 제어를 구성하는 방법은 액세스제어 목록 만들기 및 관리를 참조하세요.
차등 데이터베이스 백업 가져오기
차등 데이터베이스 백업을 가져오려면 먼저 전체 백업 가져오기가 필요하며 전체 백업 가져오기 후 데이터베이스가 RESTORING
상태여야 합니다.
Cloud SQL은 PITR(point-in-time recovery)이 사용 설정된 인스턴스에서 차등 데이터베이스 백업 가져오기를 지원하지 않습니다. 이는 --no-recovery
로 데이터베이스 백업을 가져오는 것이 차등 데이터베이스 백업을 가져오기 위한 기본 요건이기 때문입니다. 또한 데이터베이스가 RESTORING
상태인 경우 인스턴스에서 PITR(point-in-time recovery)을 사용 설정할 수 없습니다.
가져오기에 실패하면 다음 중 하나를 수행하여 PITR(point-in-time recovery)을 사용 설정합니다.
--recovery-only
플래그를 사용하여RESTORING
상태의 데이터베이스를 온라인으로 전환합니다.데이터베이스를 삭제합니다.
차등 데이터베이스 백업을 사용하여 Cloud SQL 인스턴스로 데이터를 가져오려면 다음 단계를 수행합니다.
gcloud
가져오기를 위한 Cloud Storage 버킷 만들기
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
이 단계는 필수 사항은 아니지만 다른 데이터에 대한 액세스를 열지 않아도 되기 때문에 적극 권장됩니다.
- 필요한 역할과 권한을 구성했는지 확인합니다.
- BAK 파일의 데이터를 버킷에 업로드합니다.
- 가져오기의 대상 인스턴스를 설명합니다.
gcloud sql instances describe INSTANCE_NAME
serviceAccountEmailAddress
필드를 복사합니다.gsutil iam
을 사용하여 버킷의 서비스 계정에storage.objectViewer
IAM 역할을 부여합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요.--no-recovery
로 전체 백업을 가져옵니다.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
-
차등 데이터베이스 백업을 가져옵니다.
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF --no-recovery
-
가져온 데이터베이스를 온라인으로 설정하려면
--recovery-only
플래그를 사용합니다. 이 단계는 선택사항이며 데이터베이스가RESTORING
상태인 경우에만 수행해야 합니다.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- 이전에 설정한 IAM 권한을 유지할 필요가 없으면
gsutil iam
을 사용하여 삭제합니다.
REST v1
- Cloud Storage 버킷을 만듭니다.
파일을 버킷에 업로드합니다.
버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참조하세요.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. -
noRecovery
로 전체 백업을 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_BAK_FILE: BAK 파일의 경로
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 차등 데이터베이스 백업을 가져옵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID입니다.
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_bak_file: BAK 파일의 경로
- database_name: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
recoveryOnly
를 사용하여 가져온 데이터베이스를 온라인으로 설정합니다. 이 단계는 선택사항이며 데이터베이스가RESTORING
상태인 경우에만 수행해야 합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_BAK_FILE: BAK 파일의 경로
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 권한을 유지할 필요가 없으면 삭제합니다.
REST v1beta4
- Cloud Storage 버킷을 만듭니다.
파일을 버킷에 업로드합니다.
버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참조하세요.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. -
noRecovery
로 전체 백업을 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT-ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_BAK_FILE: BAK 파일의 경로
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 차등 데이터베이스 백업을 가져옵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID입니다.
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_bak_file: BAK 파일의 경로
- database_name: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
recoveryOnly
를 사용하여 가져온 데이터베이스를 온라인으로 설정합니다. 이 단계는 선택사항이며 데이터베이스가RESTORING
상태인 경우에만 수행해야 합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_BAK_FILE: BAK 파일의 경로
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 권한을 유지할 필요가 없으면 삭제합니다.
ERROR_RDBMS
와 같은 오류가 발생하면 BAK 파일이 버킷에 있고 버킷에 대한 올바른 권한이 있는지 확인합니다. Cloud Storage에서 액세스 제어를 구성하는 방법은 액세스제어 목록 만들기 및 관리를 참조하세요.
트랜잭션 로그 백업 가져오기
트랜잭션 로그는 데이터베이스의 트랜잭션과 각 트랜잭션의 수정사항에 대한 레코드입니다. 시스템 오류가 발생한 경우 이를 사용하여 데이터베이스 일관성을 다시 설정할 수 있습니다.
트랜잭션 로그 백업을 사용하여 Cloud SQL 인스턴스로 데이터를 가져오려면 다음 단계를 수행합니다.
gcloud
선택사항: 가져오기를 위한 Cloud Storage 버킷 만들기
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
- 백업 파일을 버킷에 업로드합니다.
- 가져오기의 대상 인스턴스를 설명합니다.
gcloud sql instances describe INSTANCE_NAME
serviceAccountEmailAddress
필드를 복사합니다.gsutil iam
을 사용하여 버킷의 서비스 계정에storage.objectViewer
IAM 역할을 부여합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요.--no-recovery
매개변수를 사용하여 전체 백업을 가져옵니다. 전체 백업 가져오기 후 데이터베이스가RESTORING
상태인지 확인합니다.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
- 선택사항: 차등 백업을 가져옵니다.
-
트랜잭션 로그 백업을 가져옵니다.
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=TLOG --stop-at=STOP_AT_TIMESTAMP --stop-at-mark=STOP_AT_MARK_NAME --no-recovery
다음을 바꿉니다.- INSTANCE_NAME: 인스턴스의 이름
- BUCKET_NAME: Cloud Storage 버킷 이름
- BACKUP_FILENAME: 백업 파일 이름
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
- STOP_AT_TIMESTAMP: 트랜잭션 로그 가져오기가 중지되어야 하는 타임스탬프입니다. 이는 선택적 필드이며 값은 RFC 3339 형식을 사용해야 합니다.
- STOP_AT_MARK_NAME: 트랜잭션 로그 가져오기가 중지되어야 하는
표시된 트랜잭션입니다. 이 필드는 선택적 필드이며 모든 문자열을 값으로 사용할 수 있습니다. 값이
lsn:log-sequence-number
형식이면 트랜잭션 로그 가져오기가 지정된 로그 시퀀스 넘버에서 중지됩니다.
-
선택사항: 가져온 데이터베이스를 온라인으로 설정하려면
--recovery-only
플래그를 사용합니다. 데이터베이스가RESTORING
상태인 경우에만 이 단계를 수행합니다.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- 이전에 설정한 IAM 권한을 유지할 필요가 없으면
gsutil iam
을 사용하여 삭제합니다.
REST v1
- Cloud Storage 버킷을 만듭니다.
파일을 버킷에 업로드합니다.
버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참조하세요.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요.
이 요청을 위한 매개변수의 전체 목록은 instances:import 페이지를 참조하세요.
-
noRecovery
로 전체 백업을 가져옵니다. 전체 백업 가져오기 후 데이터베이스가RESTORING
상태인지 확인합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_BAK_FILE: BAK 파일의 경로
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 선택사항: 차등 백업을 가져옵니다.
- 트랜잭션 로그 백업을 가져옵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_TLOG_FILE: 트랜잭션 로그 파일의 경로입니다.
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
- STOP_AT_TIMESTAMP: 트랜잭션 로그 가져오기가 중지되어야 하는 타임스탬프입니다. 이는 선택적 필드이며 값은 RFC 3339 형식을 사용해야 합니다.
- STOP_AT_MARK_NAME: 트랜잭션 로그 가져오기가 중지되어야 하는
표시된 트랜잭션입니다. 이 필드는 선택적 필드이며 모든 문자열을 값으로 사용할 수 있습니다. 값이
lsn:log-sequence-number
형식이면 트랜잭션 로그 가져오기가 지정된 로그 시퀀스 넘버에서 중지됩니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_TLOG_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark": STOP_AT_MARK_NAME, "noRecovery": true, } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
모든 트랜잭션 로그 백업을 가져올 때까지 이 단계를 반복합니다. 선택사항:
recoveryOnly
를 사용하여 가져온 데이터베이스를 온라인으로 설정합니다. 데이터베이스가RESTORING
상태인 경우에만 이 단계를 수행합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_BAK_FILE: BAK 파일의 경로
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 권한을 유지할 필요가 없으면 삭제합니다.
REST v1beta4
- Cloud Storage 버킷을 만듭니다.
파일을 버킷에 업로드합니다.
버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참조하세요.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. -
noRecovery
로 전체 백업을 가져옵니다. 전체 백업 가져오기 후 데이터베이스가RESTORING
상태인지 확인합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT-ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_BAK_FILE: BAK 파일의 경로
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 선택사항: 차등 백업을 가져옵니다.
- 트랜잭션 로그 백업을 가져옵니다. 여기서
stopAt
과stopAtMark
는 선택사항입니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_BAK_FILE: BAK 파일의 경로
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
- STOP_AT_TIMESTAMP: 트랜잭션 로그 가져오기가 중지되어야 하는 타임스탬프입니다. 이는 선택적 필드이며 값은 RFC 3339 형식을 사용해야 합니다.
- STOP_AT_MARK_NAME: 트랜잭션 로그 가져오기가 중지되어야 하는
표시된 트랜잭션입니다. 이 필드는 선택적 필드이며 모든 문자열을 값으로 사용할 수 있습니다. 값이
lsn:log-sequence-number
형식이면 트랜잭션 로그 가져오기가 지정된 로그 시퀀스 넘버에서 중지됩니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark":STOP_AT_MARK_NAME, "noRecovery": true, } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
모든 트랜잭션 로그 백업을 가져올 때까지 이 단계를 반복합니다. 선택사항:
recoveryOnly
를 사용하여 가져온 데이터베이스를 온라인으로 설정합니다. 데이터베이스가RESTORING
상태인 경우에만 이 단계를 수행합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- INSTANCE_ID: 인스턴스 ID
- BUCKET_NAME: Cloud Storage 버킷 이름
- PATH_TO_BAK_FILE: BAK 파일의 경로
- DATABASE_NAME: Cloud SQL 인스턴스 내 데이터베이스의 이름
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
- 이전에 설정한 IAM 권한을 유지할 필요가 없으면 삭제합니다.
스트라이핑된 가져오기 사용
스트라이핑된 가져오기의 장점은 다음과 같습니다.
- 작업 완료에 소요되는 시간이 단축됩니다.
- 5TB보다 큰 데이터베이스를 가져올 수 있습니다.
스트라이핑된 가져오기를 사용할 경우의 단점은 가져오기를 수행하기에 앞서 단일 파일 대신 스트라이핑된 세트의 모든 파일을 Cloud Storage 버킷의 동일한 폴더에 업로드해야 한다는 점입니다.
운영 계획
대부분의 사용 사례에서는 스트라이핑된 가져오기를 사용하면 단점 없이 성능을 개선할 수 있습니다. 하지만 특정 인스턴스에서 스트라이핑된 세트로 백업할 수 없거나 데이터베이스가 5TB 미만이고 빠른 성능이 중요하지 않은 경우에는 스트라이핑되지 않은 가져오기를 사용하는 것이 좋습니다.
스트라이핑된 가져오기 사용 방법
gcloud
가져오기를 위한 Cloud Storage 버킷 만들기
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
이 단계는 필수 사항은 아니지만 다른 데이터에 대한 액세스를 열지 않아도 되기 때문에 적극 권장됩니다.
- 필요한 IAM 역할과 권한을 구성했는지 확인합니다.
- 버킷에 새 폴더를 만듭니다.
- 데이터베이스를 가져오려면 (데이터베이스의) 스트라이핑된 세트의 파일을 새 폴더에 업로드합니다. 모든 파일이 폴더에 업로드되었고 폴더에 추가 파일이 없는지 확인합니다.
- 어떤 인스턴스에서 내보낼지 설명합니다.
gcloud sql instances describe INSTANCE_NAME
serviceAccountEmailAddress
필드를 복사합니다.gsutil iam
을 사용하여 버킷의 서비스 계정에storage.objectViewer
IAM 역할을 부여합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요.- 폴더에서 데이터를 가져옵니다. 스트라이핑되지 않은 가져오기와의 차이점은 다음과 같습니다. URI가 단일 파일이 아닌 스트라이프 세트가 업로드된 폴더의 이름에 연결되며
--striped
매개변수를 지정합니다.gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \ --database=DATABASE_NAME --striped
- 이전에 설정한 IAM 권한을 유지할 필요가 없으면
gsutil iam
을 사용하여 삭제합니다.
REST v1
- Cloud Storage 버킷을 만듭니다.
파일을 버킷에 업로드합니다.
버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참조하세요.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 파일에서 데이터를 가져옵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_folder: 스트라이프 세트가 있는 폴더 경로(Cloud Storage 버킷)
- database_name: Cloud SQL 인스턴스에 만들 데이터베이스의 이름
- true | false: 스트라이핑된 가져오기를 사용하려면
true
로 설정합니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
가져오기에 다른 사용자를 사용하려면
이 요청을 위한 매개변수의 전체 목록은 instances:import 페이지를 참조하세요.importContext.importUser
속성을 지정합니다. - 이전에 설정한 IAM 권한을 유지할 필요가 없으면 삭제합니다.
REST v1beta4
- Cloud Storage 버킷을 만듭니다.
파일을 버킷에 업로드합니다.
버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참조하세요.
- 인스턴스에 버킷의
storage.objectAdmin
IAM 역할을 제공합니다. IAM 권한 설정에 대한 자세한 내용은 IAM 권한 사용을 참조하세요. - 파일에서 데이터를 가져옵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- project-id: 프로젝트 ID
- instance-id: 인스턴스 ID
- bucket_name: Cloud Storage 버킷 이름
- path_to_folder: 스트라이프 세트가 있는 폴더 경로(Cloud Storage 버킷)
- database_name: Cloud SQL 인스턴스에 만들 데이터베이스의 이름
- true | false: 스트라이핑된 가져오기를 사용하려면
true
로 설정합니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
JSON 요청 본문:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
가져오기에 다른 사용자를 사용하려면
이 요청을 위한 매개변수의 전체 목록은 instances:import 페이지를 참조하세요.importContext.importUser
속성을 지정합니다. - 이전에 설정한 IAM 권한을 유지할 필요가 없으면 삭제합니다.
ERROR_RDBMS
와 같은 오류가 나타나면 테이블이 있는지 확인합니다. 테이블이 있으면 버킷에 대한 올바른 권한이 있는지 확인합니다. Cloud Storage에서 액세스 제어를 구성하는 방법은 액세스제어 목록 만들기 및 관리를 참조하세요.
다음 단계
- 가져오기 및 내보내기 작업 상태 확인 방법 알아보기
- 데이터 가져오기 및 내보내기 권장사항 자세히 알아보기
- 가져오기 및 내보내기에 대해 알려진 문제