SQL Server 데이터베이스를 Cloud Storage 버킷에 백업


이 튜토리얼에서는 Microsoft SQL Server 2022 데이터베이스를 Cloud Storage 버킷에 직접 백업하고 나중에 복원하는 방법을 설명합니다. SQL Server 2022에서 도입된 SQL Server 백업 기본 기능은 클라우드 기반 재해 복구 및 데이터 마이그레이션을 위한 원활하고 비용 효율적인 전략을 제공합니다.

SQL Server 백업 네이티브 기능은 Cloud Storage를 비롯한 S3 호환 객체 스토리지를 지원하는 BACKUP TO URLRESTORE FROM URL 명령어를 활용합니다. 이렇게 하면 중간 로컬 스토리지가 필요하지 않아 백업 워크플로가 간소화되고 운영 오버헤드가 줄어듭니다.

이 튜토리얼은 데이터베이스 관리자 및 엔지니어를 대상으로 합니다.

목표

이 튜토리얼에서는 목표를 달성하기 위해 다음 작업을 완료하는 방법을 보여줍니다.

  • 새 Cloud Storage 버킷 만들기
  • SQL Server 커넥터 구성
  • 데이터베이스 백업
  • 백업에서 데이터베이스 복원

비용

이 문서에서는 비용이 청구될 수 있는 Google Cloud구성요소( )를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용합니다.

Google Cloud 신규 사용자는 무료 체험판을 사용할 수 있습니다.

이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.

시작하기 전에

  1. 이 튜토리얼을 진행하려면 Google Cloud 프로젝트가 필요합니다. 새 프로젝트를 만들거나 기존에 만든 프로젝트를 선택할 수 있습니다.

    1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Go to project selector

    2. Verify that billing is enabled for your Google Cloud project.

    3. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

    4. Microsoft SQL Server 2022 이상이 설치되어 실행 중인지 확인합니다.

    5. Google Cloud 프로젝트와 SQL Server 모두에 백업 및 복원 작업을 실행하는 데 필요한 권한이 있는지 확인합니다.

    6. 액세스 키와 연결된 사용자 또는 서비스 계정에 Cloud Storage 버킷에서 객체를 만들고 볼 권한이 있는지 확인합니다.

    7. 백업을 실행하는 데 사용되는 SQL Server 사용자 계정에 데이터베이스 백업 및 로그 백업 권한이 있는지 확인합니다.

    8. Cloud Storage 버킷 만들기

      Google Cloud 콘솔을 사용하거나 gcloud storage 명령어를 사용하여 Cloud Storage 버킷을 만들 수 있습니다.

      gcloud storage 명령어를 사용하여 Cloud Storage 버킷을 만들려면 다음 단계를 따르세요.

      1. Google Cloud 프로젝트를 선택합니다.

        gcloud config set project PROJECT_ID
        
      2. 버킷을 만듭니다. 버킷을 만들려면 다음과 같이 gcloud storage buckets create 명령어를 실행합니다.

          gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
        

        다음을 바꿉니다.

      • BUCKET_NAME을 버킷의 고유한 이름으로 바꿉니다.
      • BUCKET_LOCATION을 버킷 위치로 바꿉니다.

      S3 상호 운용성 구성 및 액세스 키 만들기

      SQL Server가 S3 프로토콜을 사용하여 Cloud Storage와 통신하도록 허용하려면 다음 단계에 따라 상호 운용성을 사용 설정하고 액세스 키를 생성해야 합니다.

      1. Google Cloud 콘솔에서 Cloud Storage 설정으로 이동합니다.

        Cloud Storage 설정으로 이동

      2. 상호 운용성 탭을 선택합니다.

      3. 사용자 계정의 액세스 키에서 키 만들기를 클릭합니다.

        버킷 액세스 키

      4. 생성된 액세스 키보안 비밀을 안전하게 저장합니다. 다음 단계에서 필요합니다.

      프로덕션 환경에서는 보안 및 관리를 위해 서비스 계정 해시 기반 메시지 인증 코드 (HMAC) 키를 사용하는 것이 좋습니다.

      SQL Server에 사용자 인증 정보 추가

      SQL Server가 Cloud Storage 버킷으로 인증할 수 있도록 하려면 SQL Server 내에서 사용자 인증 정보 객체를 만들어 Cloud Storage 액세스 키와 보안 비밀을 저장해야 합니다. 이렇게 하려면 SQL Server Management Studio (SSMS)에서 다음 T-SQL 명령어를 실행하세요.

      CREATE CREDENTIAL CREDENTIAL_NAME
      WITH
          IDENTITY = 'S3 Access Key',
          SECRET = 'ACCESS_KEY:SECRET';
      

      다음을 바꿉니다.

      • CREDENTIAL_NAME: 사용자 인증 정보의 이름
      • ACCESS_KEY: 이전 섹션에서 만든 액세스 키를 사용합니다.
      • SECRET: 이전 섹션에서 만든 보안 비밀을 사용합니다.

      IDENTITY = 'S3 Access Key'는 SQL Server에 새 S3 커넥터를 사용하도록 지시하므로 중요합니다. 보안 비밀은 액세스 키, 콜론, 보안 비밀 키 순으로 형식이 지정되어야 합니다.

      예:

      CREATE CREDENTIAL sql_backup_credentials
      WITH
          IDENTITY = 'S3 Access Key',
          SECRET = 'GOOGGE3SVF7OQE5JRMLQ7KWB:b31Pl8Tx1ARJfdGOsbgMFQNbk3nPdlT2UCYzs1iC';
      

      Cloud Storage에 데이터 백업

      이제 사용자 인증 정보가 있으므로 TO URL 옵션과 함께 BACKUP DATABASE 명령어를 사용하여 데이터베이스를 Cloud Storage 버킷에 직접 백업할 수 있습니다. 다음과 같이 S3 커넥터를 사용하려면 URL에 s3://storage.googleapis.com을 접두사로 붙입니다.

      BACKUP DATABASE DATABASE_NAME
      TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
      WITH
          CREDENTIAL = 'CREDENTIAL_NAME',
          FORMAT,
          STATS = 10,
          MAXTRANSFERSIZE = 10485760,
          COMPRESSION;
      

      다음을 바꿉니다.

      • CREDENTIAL_NAME 3단계에서 만든 사용자 인증 정보의 이름입니다. 예: sql_backup_credentials
      • BUCKET_NAME 1단계에서 만든 버킷의 이름입니다.
      • FOLDER_NAME 백업 파일을 저장할 폴더의 이름입니다.
      • BACKUP_FILE_NAME 백업 파일의 이름입니다.

      명령어에 사용된 백업 매개변수에 대한 설명은 다음과 같습니다.

      • FORMAT: 기존 백업 파일을 덮어쓰고 새 미디어 세트를 만듭니다.
      • STATS: 백업 진행 상황을 보고합니다.
      • COMPRESSION: 백업을 압축하여 파일 크기와 업로드 시간을 줄일 수 있습니다.
      • MAXTRANSFERSIZE: 큰 백업 파일의 I/O 오류를 방지하는 것이 좋습니다.

      자세한 내용은 S3 호환 객체 스토리지를 위한 URL에 SQL Server 백업을 참고하세요.

      데이터베이스가 매우 큰 경우 다음과 같이 백업을 여러 파일로 분할할 수 있습니다.

      BACKUP DATABASE DATABASE_NAME
      TO
          URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_0.bak',
          URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_1.bak'
          -- ... more files
      WITH
          CREDENTIAL = 'CREDENTIAL_NAME',
          FORMAT,
          STATS = 10,
          MAXTRANSFERSIZE = 10485760,
          COMPRESSION;
      

      Cloud Storage에서 데이터 복원하기

      다음과 같이 RESTORE DATABASE 명령어를 사용하여 Cloud Storage에 저장된 백업 파일에서 데이터베이스를 직접 복원할 수 있습니다.

      RESTORE DATABASE DATABASE_NAME
      FROM URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
      WITH
          CREDENTIAL = 'CREDENTIAL_NAME';
      

      다음을 바꿉니다.

      • CREDENTIAL_NAME 3단계에서 만든 사용자 인증 정보의 이름입니다. 예: sql_backup_credentials
      • BUCKET_NAME 1단계에서 만든 버킷의 이름입니다.
      • FOLDER_NAME 백업 파일을 저장할 폴더의 이름입니다.
      • BACKUP_FILE_NAME 백업 파일의 이름입니다.

      삭제

      이 튜토리얼에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 안내를 따르세요.

      프로젝트 삭제

      1. In the Google Cloud console, go to the Manage resources page.

        Go to Manage resources

      2. In the project list, select the project that you want to delete, and then click Delete.
      3. In the dialog, type the project ID, and then click Shut down to delete the project.

      다음 단계

      • Google Cloud에 대한 참조 아키텍처, 다이어그램, 권장사항 살펴보기. Cloud 아키텍처 센터 살펴보기