SQL Server RDS 인스턴스의 백업 관리는 데이터 가용성과 재해 복구를 보장하는 데 중요합니다. AWS는 SQL Server RDS 데이터베이스를 직접 Amazon S3로 백업하는 명령을 포함하여 이 프로세스를 용이하게 하는 도구를 제공합니다. 이 문서에서는 백업 및 복원을 수행하는 데 필요한 명령 및 구성에 대해 안내합니다.
SQL Server RDS를 S3로 백업하기
백업 생성에 사용되는 주요 저장 프로시저는 msdb.dbo.rds_backup_database
입니다. 이 명령을 사용하면 백업할 데이터베이스와 백업이 저장될 S3 위치를 지정할 수 있습니다.
패키지 매개변수
이 저장 프로시저는 몇 가지 매개변수를 지원하며 필수 및 선택적으로 분류됩니다.
필수 매개변수
@source_db_name
: 백업할 데이터베이스의 이름입니다.@s3_arn_to_backup_to
: 백업에 사용할 Amazon S3 버킷을 나타내는 ARN으로서 백업 파일 이름도 포함됩니다.- 파일의 확장자는 어떤 것이든 될 수 있지만,
.bak
이 일반적으로 사용됩니다.
- 파일의 확장자는 어떤 것이든 될 수 있지만,
선택적 매개변수
-
@kms_master_key_arn
- 백업을 암호화하는 데 사용할 대칭 암호화 KMS 키의 ARN입니다.
- 기본 암호화 키를 사용할 수 없습니다. 기본 키를 사용하면 백업 실패가 발생합니다.
- KMS 키를 지정하지 않으면 백업 파일이 암호화되지 않습니다.
- 대칭 KMS 키만 지원됩니다.
-
@overwrite_s3_backup_file
- 기존 파일을 덮어쓸지 여부를 결정합니다.
0
(기본값): 기존 파일을 덮어쓰지 않습니다. 파일이 이미 있으면 오류가 발생합니다.1
: 기존 파일을 덮어쓰며, 백업 파일이 아니더라도 덮어씁니다.
-
@type
- 백업 유형을 지정합니다.
FULL
(기본값): 전체 백업을 수행합니다.DIFFERENTIAL
: 마지막 전체 백업을 기반으로 차등 백업을 생성합니다.- 중요: 차등 백업이 작동하려면 마지막 전체 백업과 차등 백업 사이에 스냅샷이 존재해서는 안 됩니다. 스냅샷이 존재하는 경우 차등 백업을 진행하기 전에 다른 전체 백업을 수행하십시오. 아래는 마지막 전체 백업을 확인하는 예시 쿼리입니다:
MS SQL
select top 1
database_name,
backup_start_date,
backup_finish_date
from msdb.dbo.backupset
where database_name = 'mydatabase'
and type = 'D'
order by backup_start_date desc;
-
@number_of_files
- 백업을 나눌 파일(청크)의 수를 지정합니다. 최대: 10.
- 1로 설정하거나 생략하면 단일 백업 파일이 생성됩니다.
- 다중 파일 백업은 파일 이름에
*
하나를 사용해야 하며, 생성 중에 알파벳 및 숫자 문자열로 대체됩니다. 예를 들어:- 입력:
backup*.bak
,@number_of_files = 4
- 출력:
backup1-of-4.bak
,backup2-of-4.bak
,backup3-of-4.bak
,backup4-of-4.bak
- 입력:
-
@block_size
- 백업 작업의 물리적 블록 크기(바이트)를 지정합니다.
- 유효한 값:
512
,1024
,2048
,4096
,8192
,16384
,32768
,65536
.
-
@max_transfer_size
- I/O 작업당 전송되는 데이터의 최대량(바이트)을 나타냅니다.
- 유효한 값:
65536
의 배수부터4194304
바이트(4 MB)까지.
-
@buffer_count
- 백업 프로세스 중 사용되는 총 I/O 버퍼 수입니다.
Command Syntax
exec msdb.dbo.rds_backup_database
@source_db_name = 'database_name',
@s3_arn_to_backup_to = 'arn:aws:s3:::bucket_name/file_name.extension',
[@kms_master_key_arn = 'arn:aws:kms:region:account-id:key/key-id'],
[@overwrite_s3_backup_file = 0|1],
[@block_size = 512|1024|2048|4096|8192|16384|32768|65536],
[@max_transfer_size = n],
[@buffer_count = n],
[@type = 'DIFFERENTIAL|FULL'],
[@number_of_files = n];
예: S3로 전체 백업
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
백업 압축 구성
공간을 절약하고 전송 시간을 줄이기 위해 SQL Server RDS 백업에 대해 압축을 활성화할 수 있습니다.
압축 활성화
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
압축 비활성화
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
참고: SQL Express는 백업 압축을 지원하지 않으며, 이를 활성화하면 백업 실패가 발생할 수 있습니다.
네이티브 SQL Server 백업 수행
Amazon RDS는 또한 네이티브 SQL Server 백업 기능을 지원합니다. 아래는 백업 및 복원 작업을 위한 명령어입니다.
백업 명령어
전체 백업 명령어
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_diff.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
차등 백업 명령어
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/differential_backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
복원 명령어
차등 복원 명령어
exec msdb.dbo.rds_restore_database
@restore_db_name = 'MyDatabase',
@s3_arn_to_restore_from = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@type = 'FULL';
차등 복원 명령어
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
백업 작업 모니터링 및 관리
작업 상태 확인:
exec msdb.dbo.rds_task_status @db_name = 'MyDatabase';
백업 작업 취소:
exec msdb.dbo.rds_cancel_task @task_id = 1234;
고려 사항
- 명령어에서 사용하는 S3 버킷이 RDS 인스턴스에서 액세스를 허용하는 데 필요한 권한을 가지고 있는지 확인하십시오.
- 민감한 데이터의 경우,
@kms_master_key_arn
을 지정하여 S3에 저장하기 전에 백업을 암호화하는 데 AWS KMS 마스터 키를 사용할 수 있습니다.
추가 자료
더 자세한 예제 및 정보는 공식 AWS SQL Server 백업 문서를 참조하십시오.
이 가이드는 SQL Server RDS 백업을 Amazon S3로 관리하는 견고한 기반을 제공합니다. 더 고급 구성을 위해서는 AWS 문서를 참조하거나 제공된 매개변수를 실험하여 환경에 맞게 백업 프로세스를 세밀하게 조정해보세요.
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket