데이터 가져오기 및 내보내기 권장사항

이 페이지에서는 Cloud SQL에서 데이터를 가져오고 내보낼 때의 권장사항을 제공합니다. Cloud SQL로 데이터를 가져오는 방법에 대한 단계별 안내는 데이터 가져오기를 참조하세요. Cloud SQL에 있는 데이터나 관리하고 있는 인스턴스에 있는 데이터 등 데이터 내보내기에 관한 단계별 안내는 데이터 내보내기를 참조하세요.

가져오기 및 내보내기 권장사항

다음은 데이터를 가져오고 내보낼 때 고려해야 할 권장사항입니다.

Cloud Storage 요청자 지불 버킷 사용 금지

Cloud SQL에서 가져오기와 내보내기에 요청자 지불이 사용 설정된 Cloud Storage 버킷을 사용할 수 없습니다.

내보내기가 성능에 미치는 영향 최소화

Cloud SQL에서 표준 내보내기의 경우 내보내기는 데이터베이스가 온라인 상태일 때 실행됩니다. 내보내는 데이터 양이 적을수록 미치는 영향이 최소화될 가능성이 높습니다. 그러나 대규모 데이터베이스가 있거나 데이터베이스에 BLOB와 같은 대형 객체가 있으면 내보내기로 인해 데이터베이스 성능이 저하될 수 있습니다. 이로 인해 데이터베이스에 대한 데이터베이스 쿼리와 작업을 수행하는 데 걸리는 시간도 영향을 받을 수 있습니다. 내보내기를 시작한 후에는 데이터베이스가 느리게 응답하더라도 중지할 수 없습니다.

내보내기 중에 응답이 느려지지 않도록 하려면 다음을 수행하면 됩니다.

  1. 읽기 복제본에서 내보내기를 수행합니다. 자주(매일 또는 더 자주) 내보내기를 수행하지만 내보내는 데이터 양이 적은 경우 이 옵션이 적합할 수 있습니다. 읽기 복제본에서 내보내기를 수행하려면 읽기 복제본 인스턴스에서 Google Cloud 콘솔, gcloud, REST API 내보내기 기능을 사용합니다. 읽기 복제본을 만들고 관리하는 방법에 대한 자세한 내용은 읽기 복제본 만들기를 참조하세요.

  2. 서버리스 내보내기를 사용합니다. 서버리스 내보내기를 사용하면 Cloud SQL에서 내보내기 작업을 오프로드할 별도의 임시 인스턴스를 만듭니다. 내보내기 작업을 오프로드하면 기본 인스턴스의 데이터베이스가 계속 쿼리를 처리하고 일반 성능 속도로 작업을 수행할 수 있습니다. 데이터 내보내기가 완료되면 임시 인스턴스가 자동으로 삭제됩니다. 대규모 데이터베이스의 일회성 내보내기를 수행하는 경우 이 옵션이 적합할 수 있습니다. Google Cloud 콘솔, gcloud, REST API 내보내기 기능offload 플래그와 함께 사용하여 서버리스 내보내기 작업을 수행합니다.

    서버리스 내보내기 작업 중에 인스턴스 수정, 가져오기, 장애 조치와 같은 일부 다른 작업을 실행할 수 있습니다. 그러나 delete를 선택하면 인스턴스를 삭제한 후 내보내기 작업이 잠시 중지되고 데이터를 내보낼 수 없습니다.

    서버리스 내보내기 작업이 실행되는 동안 차단될 수 있는 작업은 다음 표를 참조하세요.
    현재 작업 새 작업 차단 여부
    모든 작업 서버리스 내보내기
    서버리스 내보내기 서버리스 내보내기를 제외한 모든 작업 아니요
    서버리스 내보내기를 제외한 모든 작업 서버리스 내보내기를 제외한 모든 작업

    서버리스 내보내기는 임시 인스턴스를 만드는 시간으로 인해 표준 내보내기보다 시간이 오래 걸립니다. 최소한 5분 이상 소요되지만 대규모 데이터베이스의 경우에는 더 오래 걸릴 수 있습니다. 사용할 내보내기 유형을 결정하기 전에 시간, 성능, 비용에 미치는 영향을 고려하세요.

SQL 덤프 파일을 만들 때 올바른 플래그 사용

SQL 덤프 파일로 데이터를 내보낼 때 올바른 절차를 사용하지 않으면 가져오기가 실패할 수 있습니다. Cloud SQL로 가져올 SQL 덤프 파일을 만드는 방법에 대한 자세한 내용은 데이터 내보내기를 참조하세요.

데이터를 압축하여 비용 절감

Cloud SQL에서는 압축된 파일과 압축되지 않은 파일을 모두 가져오고 내보낼 수 있습니다. 특히 대규모 인스턴스를 내보낼 때 파일을 압축하면 Cloud Storage에서 차지하는 저장공간 및 스토리지 비용을 상당 부분 절약할 수 있습니다.

SQL 덤프 파일 또는 CSV 파일을 내보낼 때 .gz 파일 확장자를 사용하여 데이터를 압축하세요. 파일 확장자가 .gz인 파일을 가져오면 자동으로 압축이 풀립니다.

장기 실행 가져오기 및 내보내기 프로세스 줄이기

Cloud SQL로 가져오고 Cloud SQL에서 내보내는 작업은 처리 중인 데이터의 크기에 따라 완료하는 데 많은 시간이 걸릴 수 있습니다. 이에 따른 영향은 다음과 같습니다.

  • 장기 실행 Cloud SQL 인스턴스 작업을 중지할 수 없습니다.
  • 각 인스턴스에 대해 한 번에 하나씩만 가져오기 또는 내보내기 작업을 수행할 수 있고 가져오기 또는 내보내기를 장기간 실행하면 일일 자동 백업과 같은 다른 작업이 차단됩니다. 서버리스 내보내기를 사용하면 인스턴스 수정, 가져오기, 장애 조치, 일일 자동 백업 차단 해제를 비롯한 다른 작업을 실행할 수 있습니다.

더 작은 데이터 배치로 Cloud SQL 가져오기 또는 내보내기 기능을 사용하여 각 작업을 완료하는 데 걸리는 시간을 단축시킬 수 있습니다.

내보내기의 경우 읽기 복제본에서 내보내기를 수행하거나 서버리스 내보내기를 사용하여 내보내기가 실행되는 동안 데이터베이스 성능에 미치는 영향을 최소화하고 인스턴스에서 다른 작업이 실행되도록 허용할 수 있습니다.

자세한 팁은 Cloud SQL 인스턴스 문제 진단을 참조하세요.

가져온 데이터베이스 확인

가져오기 작업이 완료된 후 데이터베이스에 연결하고 적절한 데이터베이스 명령어를 실행하여 콘텐츠가 올바른지 확인합니다. 예를 들어 데이터베이스, 테이블, 특정 항목을 연결하고 나열합니다.

제한 사항

알려진 제한사항 목록은 데이터 가져오기 및 내보내기 문제를 참조하세요.

내보내기 작업 자동화

Cloud SQL은 데이터베이스 내보내기를 자동화하는 기본 제공 방법을 제공하지 않지만 여러 Google Cloud 구성요소를 사용하여 자체 자동화 도구를 빌드할 수 있습니다. 자세한 내용은 이 튜토리얼을 참조하세요.

문제 해결

가져오기 작업 문제 해결

문제 문제 해결
오류 메시지: permission denied for schema public PostgreSQL 버전 15 이상에서는 대상 데이터베이스가 template0에서 생성되는 경우 데이터 가져오기가 실패할 수 있습니다. 이 문제를 해결하려면 GRANT ALL ON SCHEMA public TO cloudsqlsuperuser SQL 명령어를 실행하여 cloudsqlsuperuser 사용자에게 공개 스키마 권한을 제공합니다.
HTTP Error 409: Operation failed because another operation was already in progress. 인스턴스에 대기 중인 작업이 이미 있습니다. 한 번에 하나의 작업만 허용됩니다. 현재 작업이 완료된 후 요청을 시도하세요.
가져오기 작업이 너무 오래 걸립니다. 활성 연결이 너무 많으면 가져오기 작업을 방해할 수 있습니다.

사용하지 않는 작업을 종료합니다. Cloud SQL 인스턴스의 CPU 및 메모리 사용량을 확인하여 사용 가능한 리소스가 충분한지 확인합니다. 가져오기에 최대 리소스를 보장하는 가장 좋은 방법은 작업을 시작하기 전에 인스턴스를 다시 시작하는 것입니다.

다시 시작하면 다음과 같은 결과가 발생합니다.

  • 모든 연결이 끊깁니다.
  • 리소스를 소비할 수 있는 모든 태스크가 종료됩니다.
덤프 파일에 참조된 하나 이상의 사용자가 없으면 가져오기 작업이 실패할 수 있습니다. 덤프 파일을 가져오기 전에 객체를 소유하거나 덤프된 데이터베이스의 객체에 대한 권한이 부여된 모든 데이터베이스 사용자가 대상 데이터베이스에 있어야 합니다. 그렇지 않으면 가져오기 작업이 원래 소유권이나 권한으로 객체를 다시 만들지 못합니다.

가져오기 전에 데이터베이스 사용자를 만듭니다.

데이터를 가져온 후 데이터 디스크 사용량의 크기가 훨씬 커집니다.

데이터를 가져오면 예기치 않은 디스크 사용량이 생길 수 있습니다. 이 사용량은 point-in-time recovery를 사용하기 때문일 수 있습니다.

이 문제를 해결하려면 데이터를 가져온 후 로그를 삭제하고 저장용량을 복구하려면 point-in-time recovery를 사용 중지합니다. 사용되는 저장용량을 줄여도 인스턴스에 프로비저닝된 저장용량의 크기가 축소되는 것은 아닙니다.

오류 메시지: GRANT stderr: ERROR: must be member of role ROLE_NAME

이 오류 메시지는 Cloud Storage에 업로드된 SQL 덤프 파일을 Cloud SQL 데이터베이스로 가져오려고 하고 가져오기 작업이 약 4일 동안 실행된 경우 표시됩니다.

ROLE_NAME은 소스 PostgreSQL 데이터베이스에 정의된 커스텀 데이터베이스 역할입니다. 기본 cloudsqlsuperuser 사용자는 SQL 덤프 파일을 가져옵니다. 그러나 이 사용자는 ROLE_NAME 역할에 속하지 않을 수 있습니다.

이 문제를 해결하려면 다음 단계를 완료하시기 바랍니다.

  1. SQL 덤프 파일을 가져올 대상 데이터베이스에서 ROLE_NAME 역할을 만듭니다.
  2. cloudsqlsuperuser 사용자를 사용하여 파일을 가져오지 마세요. 대신 대상 데이터베이스에서 ROLE_NAME 역할의 구성원인 사용자를 지정합니다. 사용자를 지정하려면 다음 명령어를 실행합니다.

    gcloud sql import sql INSTANCE URI [--async]
    [--database=DATABASE, -d DATABASE] [--user=USER] [GCLOUD_WIDE_FLAG …]

내보내기 작업 문제 해결

문제 문제 해결
HTTP Error 409: Operation failed because another operation was already in progress. 인스턴스에 대기 중인 작업이 이미 있습니다. 한 번에 하나의 작업만 허용됩니다. 현재 작업이 완료된 후 요청을 시도하세요.
HTTP Error 403: The service account does not have the required permissions for the bucket. 버킷이 있고 내보내기를 수행하는 Cloud SQL 인스턴스의 서비스 계정에 버킷으로 내보낼 수 있는 Storage Object Creator 역할(roles/storage.objectCreator)이 있는지 확인합니다. Cloud Storage에 대한 IAM 역할을 참조하세요.
CSV 내보내기에 성공했지만 SQL 내보내기에 실패했습니다. CSV 형식과 SQL 형식은 내보내기 방식이 서로 다릅니다. SQL 형식은 전체 데이터베이스를 내보내며 완료하는 데 더 오래 걸릴 수 있습니다. CSV 형식은 내보내기에 포함할 데이터베이스 요소를 정의할 수 있습니다.

CSV 내보내기를 사용하여 필요한 항목만 내보냅니다.

내보내기가 너무 오래 걸림 Cloud SQL은 동시 동기 작업을 지원하지 않습니다.

내보내기 오프로딩을 사용합니다. 상위 수준의 내보내기 오프로드에서 Cloud SQL은 소스 인스턴스에서 내보내기를 실행하는 대신 오프로드 인스턴스를 가동하여 내보내기를 수행합니다. 내보내기 오프로드를 사용하면 소스 인스턴스의 성능을 향상하고 내보내기를 실행하는 중에 관리 작업 차단을 해제할 수 있는 등 여러 가지 이점이 있습니다. 내보내기 오프로드를 사용하면 오프로드 인스턴스를 불러오는 데 걸리는 시간에 따라 총 지연 시간이 늘어날 수 있습니다. 일반적으로 적절한 크기의 내보내기에서는 지연 시간이 중요하지 않습니다. 그러나 내보내기가 충분히 작으면 지연 시간이 증가될 수 있습니다.

확장 프로그램 생성 오류 덤프 파일에 지원되지 않는 확장 프로그램에 대한 참조가 있습니다.

덤프 파일을 수정하여 참조를 삭제합니다.

pg_dumpall 사용 오류 pg_dumpall 유틸리티를 --global 플래그와 함께 사용하려면 수퍼유저 역할이 필요하지만 이 역할은 PostgreSQL용 Cloud SQL에서 지원되지 않습니다. 사용자 이름이 포함된 내보내기 작업을 수행하는 동안 오류가 발생하지 않도록 하려면 --no-role-passwords 플래그도 사용합니다.
내보내기 전에 내보내기 작업이 타임아웃되면 Could not receive data from client: Connection reset by peer. 오류 메시지가 표시됩니다. Cloud Storage가 특정 기간(일반적으로 약 7분) 내에 데이터를 수신하지 않으면 연결이 재설정됩니다. 초기 내보내기 쿼리를 실행하는 데 시간이 너무 오래 걸릴 수 있습니다.

pg_dump 도구를 사용하여 직접 내보냅니다.

내보내기를 자동화하려고 합니다. Cloud SQL은 내보내기를 자동화하는 방법을 제공하지 않습니다.

백업 자동화에 대한 이 문서와 마찬가지로 Cloud Scheduler, Pub/Sub, Cloud Functions와 같은 Google Cloud 제품을 사용하여 자체 자동 내보내기 시스템을 빌드할 수 있습니다.

다음 단계