백업 파일을 사용하여 SQL Server 2008과 SQL Server용 Cloud SQL 간 데이터 마이그레이션


이 튜토리얼에서는 SQL Server 2008에서 SQL Server 2017 Enterprise용 Cloud SQL로 데이터를 마이그레이션합니다. 이 가이드에서는 SQL Server 2008에서 데이터를 내보내고, 데이터를 SQL Server 2017용 Cloud SQL로 가져오고, 데이터 가져오기가 성공했는지 검증하는 방법을 보여줍니다.

SQL Server 2017에서 데이터를 마이그레이션하려면 백업 파일을 사용하여 SQL Server 2017과 SQL Server용 Cloud SQL 간 데이터 마이그레이션을 참조하세요.

이 가이드는 SQL Server 2008에서 SQL Server 2017용 Cloud SQL로 데이터를 마이그레이션하거나 SQL Server 2008에서 SQL Server 2017로 업그레이드하려는 시스템 관리자, 개발자, 엔지니어, 데이터베이스 관리자, DevOps 엔지니어에게 유용합니다.

이 가이드에서는 사용자가 SQL Server 2008 라이선스를 갖고 있고 다음 항목에 익숙하다고 가정합니다.

목표

  • SQL Server용 Cloud SQL 인스턴스를 만듭니다.
  • Cloud Storage 버킷을 만듭니다.
  • 데이터베이스를 백업합니다.
  • SQL Server용 Cloud SQL로 데이터베이스를 가져옵니다.
  • 가져온 데이터를 검증합니다.

비용

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

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

시작하기 전에

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  2. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  3. Cloud Storage 및 Cloud SQL API를 사용 설정합니다.

    API 사용 설정

  4. SQL Server 2008을 실행하는 서버에서 Google Cloud CLI를 설치하고 초기화합니다.

  5. Google Cloud 콘솔에서 Cloud Shell로 이동합니다.

    Cloud Shell로 이동

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 열리고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셀 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

Cloud SQL 인스턴스 및 Cloud Storage 버킷 만들기

  1. Cloud Shell에서 나중에 데이터베이스를 마이그레이션할 SQL Server 2017 Enterprise용 Cloud SQL 인스턴스를 만듭니다.

    gcloud beta sql instances create target  \
        --database-version=SQLSERVER_2017_ENTERPRISE \
        --cpu=2 \
        --memory=5GB \
        --root-password=sqlserver12@ \
        --zone=us-central1-f
    

    인스턴스를 만드는 데 몇 분 정도 걸릴 수 있습니다. 기본 루트 사용자 이름은 sqlserver이고 기본 비밀번호는 sqlserver12@입니다. 이 가이드에서는 us-central1-f 영역에 인스턴스를 만듭니다. 영역에 대한 자세한 내용은 Cloud 위치를 참조하세요.

  2. 데이터를 Cloud SQL로 가져오기 전에 백업 파일을 저장할 Cloud Storage 버킷을 만듭니다.

    gsutil mb -b off -l US "gs://bucket-name"
    

    bucket-name을 Cloud Storage 버킷의 고유 이름으로 바꿉니다.

데이터베이스 백업

이 섹션에서는 SQL Server 2008을 실행하는 Windows 서버에 연결하고, 데이터베이스 백업을 만들고, 백업 데이터베이스를 Cloud Storage에 업로드합니다.

  1. RDP를 사용하여 SQL Server 2008을 실행하는 Windows 서버에 연결합니다. 기본 서버 또는 복제본 서버 모두 가능합니다.

  2. PowerShell 명령줄 도구를 실행합니다.

  3. gcloud CLI를 설치한 터미널에서 백업 폴더를 만듭니다.

    mkdir c:\backup
    
  4. 백업 폴더에 데이터베이스 백업을 만듭니다.

    osql -E -Q "BACKUP DATABASE db-name TO DISK='c:\backup\db-name.bak'"
    

    db-name을 Cloud SQL로 마이그레이션하려는 데이터베이스 이름으로 바꿉니다.

  5. 백업 파일을 Cloud Storage 버킷에 복사합니다.

    $PROJECT_ID = (gcloud sql instances describe target --format='value(project)' )
    gsutil cp -n c:\backup\db-name.bak gs://bucket-name
    

Cloud SQL로 백업 파일 가져오기

  1. Cloud Shell에서 Cloud SQL 인스턴스와 연결된 서비스 계정을 검색하고 이를 변수에 저장합니다.

    SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \
        --format='value(serviceAccountEmailAddress)')
    echo $SVC_EMAIL_ADDRESS
    

    Cloud SQL 인스턴스를 만들 때 Google Cloud에서 서비스 계정이 생성됩니다. 서비스 계정을 사용하여 Cloud SQL 인스턴스에 필요한 리소스에 액세스하기 위한 권한을 제공합니다.

  2. 쓰기 권한을 사용해서 Cloud Storage 버킷의 액세스 제어 목록(ACL)에 서비스 계정을 추가합니다.

    gsutil acl ch -u ${SVC_EMAIL_ADDRESS}:W gs://bucket-name
    
  3. 읽기 권한을 사용해서 가져오기 파일에 서비스 계정을 추가합니다.

    gsutil acl ch -u $SVC_EMAIL_ADDRESS:R gs://bucket-name/db-name.bak
    
  4. 백업 파일을 Cloud SQL 데이터베이스로 가져옵니다.

    gcloud beta sql import bak target \
        gs://bucket-namedb-name.bak \
        --database db-name
    

데이터 가져오기 검증

이 섹션에서는 데이터를 성공적으로 가져왔는지 확인합니다.

  1. Cloud Shell에서 SQL Server 툴킷을 설치합니다.

    sudo apt-get install -y mssql-tools
    

    라이선스 조건에 동의하면 메시지가 표시되었을 때 yes를 입력합니다.

  2. Cloud SQL 인스턴스에 안전하게 액세스하려면 Cloud SQL 프록시를 다운로드합니다.

    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  3. Cloud SQL 프록시를 시작합니다.

    CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)')
    ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
    
  4. 하나 이상의 테이블에서 데이터를 검증하기 위해 쿼리를 실행합니다.

    /opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "query-string"
    

    query-string은 실행하려는 SQL 쿼리로 바꿉니다.

    메시지가 표시되면 sqlserver12@ 비밀번호를 입력합니다.

삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 가이드에서 만든 Google Cloud 프로젝트를 삭제하는 것입니다.

프로젝트 삭제

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계