Azure VM의 SQL Server 백업 정보
Azure Backup은 Azure VM에서 실행되는 SQL Server를 백업하는 스트림 기반 특수 솔루션을 제공합니다. 이 솔루션은 인프라 없는 백업, 장기 보존 및 중앙 관리라는 Azure Backup의 이점에 부합합니다. 또한 SQL Server를 위해 특별히 다음과 같은 추가 이점을 제공합니다.
- 모든 백업 유형을 지원하는 워크로드 인식 백업 - 전체, 차등 및 로그
- 로그 백업이 빈번한 15분 RPO(복구 지점 목표)
- 지정 시간 복구 최대 1초
- 개별 데이터베이스 수준 백업 및 복원
현재 지원되는 백업 및 복원 시나리오를 보려면 지원 매트릭스를 참조하세요.
백업 프로세스
이 솔루션은 SQL 네이티브 API를 활용하여 SQL 데이터베이스를 백업합니다.
보호하려는 SQL Server VM을 지정하고 그 안에 있는 데이터베이스를 쿼리하면 Azure Backup 서비스가
AzureBackupWindowsWorkload
확장이라는 이름으로 VM에 워크로드 백업 확장을 설치합니다.이 확장은 코디네이터 및 SQL 플러그 인으로 구성됩니다. 코디네이터는 백업 구성, 백업 및 복원 같은 다양한 워크플로를 트리거하는 역할을 담당하고, 플러그 인은 실제 데이터 흐름을 담당합니다.
이 VM에서 데이터베이스를 검색할 수 있도록 Azure Backup은
NT SERVICE\AzureWLBackupPluginSvc
계정을 만듭니다. 이 계정은 백업 및 복원에 사용되며 SQL sysadmin 권한이 필요합니다.NT SERVICE\AzureWLBackupPluginSvc
계정은 Virtual Service Account이므로 암호 관리가 필요하지 않습니다. Azure Backup은 데이터베이스 검색/조회에NT AUTHORITY\SYSTEM
계정을 활용하므로, 이 계정은 SQL에서 공용 로그인이어야 합니다. Azure Marketplace에서 SQL Server VM을 만들지 않은 경우 UserErrorSQLNoSysadminMembership 오류가 발생할 수 있습니다. 이 경우 다음 지침을 따르세요.선택한 데이터베이스에서 구성 보호를 트리거하면 백업 서비스가 백업 일정과 기타 정책 세부 정보를 사용하여 코디네이터를 설정하며, 이 경우 확장이 VM에 로컬로 캐시합니다.
예약된 시간에 코디네이터가 플러그 인과 통신하고 VDI를 사용하여 SQL 서버의 백업 데이터를 스트리밍하기 시작합니다.
플러그 인은 Recovery Services 자격 증명 모음에 직접 데이터를 보내기 때문에 준비 위치가 필요 없습니다. 데이터는 Azure Backup 서비스를 통해 암호화되어 스토리지 계정에 저장됩니다.
데이터 전송이 완료되면 코디네이터가 백업 서비스를 사용하여 커밋을 확인합니다.
시작하기 전에
시작하기 전에 다음 요구 사항을 확인합니다.
- Azure에서 실행되는 SQL Server 인스턴스가 있는지 확인합니다. SQL Server 인스턴스를 마켓플레이스에 빠르게 만들 수 있습니다.
- 기능 고려 사항 및 시나리오 지원을 검토합니다.
- 이 시나리오에 대한 일반적인 질문을 검토합니다.
VM 권한 설정
SQL Server에서 검색을 실행하면 Azure Backup은 다음을 수행합니다.
- AzureBackupWindowsWorkload 확장을 추가합니다.
- 가상 머신에서 에서 데이터베이스를 검색하기 위해 NT SERVICE\AzureWLBackupPluginSvc 계정을 만듭니다. 이 계정은 백업 및 복원에 사용되며 SQL sysadmin 권한이 필요합니다.
- VM에서 실행 중인 데이터베이스를 검색하고 Azure Backup은 NT AUTHORITY\SYSTEM 계정을 사용합니다. 이 계정은 SQL에서 공용 로그인이어야 합니다.
Azure Marketplace에서 SQL Server VM을 만들지 않았거나 SQL 2008 또는 2008 R2를 사용 중인 경우, UserErrorSQLNoSysadminMembership 오류가 발생할 수 있습니다.
Windows 2008 R2에서 실행되는 SQL 2008 및 208 R2의 경우 권한을 부여하려면 여기를 참조하세요.
다른 모든 버전의 경우 다음 단계에 따라 권한을 수정합니다.
SQL Server sysadmin 권한이 있는 계정을 사용하여 SSMS(SQL Server Management Studio)에 로그인합니다. 특별한 사용 권한이 필요하지 않으면 Windows 인증이 작동해야 합니다.
SQL Server에서 Security/Logins 폴더를 엽니다.
Logins 폴더를 마우스 오른쪽 단추로 클릭하고 새 로그인을 선택합니다. 로그인 - 새로 만들기에서 검색을 선택합니다.
Windows 가상 서비스 계정 NT SERVICE\AzureWLBackupPluginSvc는 가상 머신 등록 및 SQL 검색 단계 중에 만들어졌습니다. 선택할 개체 이름 입력에 표시된 대로 계정 이름을 입력합니다. 이름 확인을 선택하여 이름을 확인합니다. 확인을 선택합니다.
서버 역할에서 sysadmin 역할이 선택되었는지 확인합니다. 확인을 선택합니다. 이제 필요한 권한이 있어야 합니다.
이제 데이터베이스를 Recovery Services 자격 증명 모음에 연결합니다. Azure Portal의 보호된 서버 목록에서 오류 상태인 서버를 마우스 오른쪽 단추로 클릭하고 >DB 다시 검색을 클릭합니다.
알림 영역에서 진행률을 확인합니다. 선택한 데이터베이스가 발견되면 성공 메시지가 표시됩니다.
참고 항목
SQL Server에 여러 개의 SQL Server 인스턴스가 설치되어 있는 경우 NT Service\AzureWLBackupPluginSvc 계정에 대한 sysadmin 권한을 모든 SQL 인스턴스에 추가해야 합니다.
SQL 2008 및 SQL 2008 R2에 대한 SQL sysadmin 권한 부여
SQL Server 인스턴스에 NT AUTHORITY\SYSTEM 및 NT Service\AzureWLBackupPluginSvc 로그인을 추가합니다.
개체 탐색기에서 SQL Server 인스턴스로 이동합니다.
보안 -> 로그인으로 이동
로그인을 마우스 오른쪽 단추를 클릭하여 새 로그인을 선택합니다.
일반 탭으로 이동하여 로그인 이름에 NT AUTHORITY\SYSTEM을 입력합니다.
서버 역할로 이동하여 public 및 sysadmin 역할을 선택합니다.
상태로 이동합니다. 데이터베이스 엔진 연결 권한을 허용(Grant)하고 로그인을 사용(Enabled)으로 설정합니다.
확인을 선택합니다.
동일한 일련의 단계(위의 1~7)를 반복하여 SQL Server 인스턴스에 NT Service\AzureWLBackupPluginSvc 로그인을 추가합니다. 로그인이 이미 있으면 sysadmin 서버 역할이 있는지 확인하고 상태에서 데이터베이스 엔진 연결 권한이 허용되고 로그인이 사용되는지 확인합니다.
권한을 부여하고 나면 포털에서 DB를 다시 검색합니다(Azure VM의 Vault -> Manage -> Backup Infrastructure -> Workload).
또는 관리 모드에서 다음 PowerShell 명령을 실행하여 권한 부여를 자동화할 수 있습니다. 인스턴스 이름은 MSSQLSERVER로 기본 설정됩니다. 필요한 경우 스크립트에서 인스턴스 이름 인수를 변경합니다.
param(
[Parameter(Mandatory=$false)]
[string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
$fullInstance = $env:COMPUTERNAME # In case it is the default SQL Server Instance
}
else
{
$fullInstance = $env:COMPUTERNAME + "\" + $InstanceName # In case of named instance
}
try
{
sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
Write-Host "An error occurred:"
Write-Host $_.Exception|format-list -force
}
try
{
sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
Write-Host "An error occurred:"
Write-Host $_.Exception|format-list -force
}
동시 백업 구성
이제 SQL Server 복구 지점 및 로그를 로컬 스토리지 및 Recovery Services 자격 증명 모음에 동시에 저장하도록 백업을 구성할 수 있습니다.
동시 백업을 구성하려면 다음 단계를 수행합니다.
C:\Program Files\Azure Workload Backup\bin\plugins
위치로 이동한 후 PluginConfigSettings.json 파일이 없으면 만듭니다.EnableLocalDiskBackupForBackupTypes
및LocalDiskBackupFolderPath
키를 사용하여 쉼표로 구분된 키 값 엔터티를 JSON 파일에 추가합니다.EnableLocalDiskBackupForBackupTypes
아래에 로컬로 저장할 백업 유형을 나열합니다.예를 들어, Full 및 Log 백업을 저장하려면
["Full", "Log"]
를 언급합니다. 로그 백업만 저장하려면["Log"]
를 언급합니다.LocalDiskBackupFolderPath
아래에 로컬 폴더 경로를 언급합니다. JSON 파일에서 경로를 언급할 때 이중 슬래시를 사용해야 합니다.예를 들어 로컬 백업의 기본 경로가
E:\LocalBackup
인 경우 JSON에서 경로를E:\\LocalBackup
으로 언급합니다.최종 JSON은 다음과 같이 표시되어야 합니다.
{ "EnableLocalDiskBackupForBackupTypes": ["Log"], "LocalDiskBackupFolderPath": "E:\\LocalBackup", }
JSON 파일에 미리 채워진 다른 항목이 있는 경우 위의 두 항목을 JSON 파일 맨 아래 닫는 중괄호 바로 앞에 추가합니다.
변경 내용이 일반적인 1시간이 아닌 즉시 적용되도록 하려면 TaskManager>서비스로 이동하여 AzureWLbackupPluginSvc를 마우스 오른쪽 단추로 클릭하고 중지를 선택합니다.
주의
이 작업을 수행하면 진행 중인 모든 백업 작업이 취소됩니다.
저장된 백업 파일의 명명 규칙과 폴더 구조는
{LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}
입니다.예를 들어, SQL 인스턴스
MSSQLSERVER
아래에 데이터베이스Contoso
가 있는 경우 파일은E:\LocalBackup\MSSQLSERVER\Contoso
에 위치합니다.파일 이름은
VDI device set guid
이며 백업 작업에 사용됩니다.LocalDiskBackupFolderPath
아래의 대상 위치에NT Service\AzureWLBackupPluginSvc
에 대한 읽기 및 쓰기 권한이 있는지 확인합니다.참고 항목
로컬 VM 디스크에 있는 폴더의 경우 폴더를 마우스 오른쪽 단추로 클릭하고 보안 탭에서
NT Service\AzureWLBackupPluginSvc
에 필요한 권한을 구성합니다.네트워크 또는 SMB 공유를 사용하는 경우 공유에 액세스할 수 있는 권한이 이미 있는 사용자 콘솔에서 아래 PowerShell cmdlet을 실행하여 권한을 구성합니다.
$cred = Get-Credential New-SmbGlobalMapping -RemotePath <FileSharePath> -Credential $cred -LocalPath <LocalDrive>: -FullAccess @("<Comma Separated list of accounts>") -Persistent $true
예제:
$cred = Get-Credential New-SmbGlobalMapping -RemotePath \\i00601p1imsa01.file.core.windows.net\rsvshare -Credential $cred -LocalPath Y: -FullAccess @("NT AUTHORITY\SYSTEM","NT Service\AzureWLBackupPluginSvc") -Persistent $true