이 튜토리얼에서는 Microsoft SQL Server 2022 데이터베이스를 Cloud Storage 버킷에 직접 백업하고 나중에 복원하는 방법을 설명합니다. SQL Server 2022에서 도입된 SQL Server 백업 기본 기능은 클라우드 기반 재해 복구 및 데이터 마이그레이션을 위한 원활하고 비용 효율적인 전략을 제공합니다.
SQL Server 백업 기본 기능은 Cloud Storage를 비롯한 S3 호환 객체 스토리지를 지원하는 BACKUP TO URL
및 RESTORE FROM URL
명령어를 활용합니다. 이렇게 하면 중간 로컬 스토리지가 필요 없어 백업 워크플로가 간소화되고 운영 오버헤드가 줄어듭니다.
이 튜토리얼은 데이터베이스 관리자와 엔지니어를 대상으로 합니다.
Cloud Storage 버킷 만들기
Google Cloud 콘솔을 사용하거나 gcloud storage
명령어를 사용하여 Cloud Storage 버킷을 만들 수 있습니다.
gcloud storage
명령어를 사용하여 Cloud Storage 버킷을 만들려면 다음 단계를 따르세요.
Google Cloud 프로젝트를 선택합니다.
gcloud config set project PROJECT_ID
버킷을 만듭니다. 버킷을 만들려면 다음과 같이
gcloud storage buckets create
명령어를 실행합니다.gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
다음을 바꿉니다.
BUCKET_NAME
: 버킷의 고유한 이름BUCKET_LOCATION
: 버킷의 위치
S3 상호 운용성 구성 및 액세스 키 만들기
SQL Server가 S3 프로토콜을 사용하여 Cloud Storage와 통신하도록 허용하려면 다음 단계에 따라 상호 운용성을 사용 설정하고 액세스 키를 생성해야 합니다.
Google Cloud 콘솔에서 Cloud Storage 설정으로 이동합니다.
상호 운용성 탭을 선택합니다.
사용자 계정의 액세스 키에서 키 만들기를 클릭합니다.
생성된 액세스 키와 보안 비밀을 안전하게 저장합니다. 다음 단계에서 이 항목을 사용합니다.
프로덕션 환경에서는 보안 및 관리를 강화하기 위해 서비스 계정 해시 기반 메시지 인증 코드(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 버킷에 직접 백업할 수 있습니다. 다음과 같이 URL에 프리픽스로 s3://storage.googleapis.com
을 추가하여 S3 커넥터를 사용합니다.
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';
다음을 바꿉니다.