Automatyczna kopia zapasowa maszyn wirtualnych z programem SQL Server 2014 (Resource Manager)

Dotyczy: program SQL Server na maszynie wirtualnej platformy Azure

Automatyczna kopia zapasowa automatycznie konfiguruje zarządzaną kopię zapasową na platformie Microsoft Azure dla wszystkich istniejących i nowych baz danych na maszynie wirtualnej platformy Azure z uruchomionym programem SQL Server 2014 Standard lub Enterprise. Umożliwia to skonfigurowanie regularnych kopii zapasowych bazy danych korzystających z trwałego magazynu obiektów blob platformy Azure. Automatyczne tworzenie kopii zapasowej zależy od rozszerzenia agenta infrastruktury programu SQL Server jako usługi (IaaS).

Wymagania wstępne

Aby używać automatycznych kopii zapasowych dla programu SQL Server na maszynie wirtualnej platformy Azure, potrzebne są następujące elementy:

  • Program SQL Server na maszynach wirtualnych platformy Azure zarejestrowany w rozszerzeniu agenta IaaS SQL.
  • Windows Server 2012 lub nowszy.
  • SQL Server 2014, Standard lub Enterprise. W przypadku nowszych wersji programu SQL Server zobacz Automated Backup for SQL Server 2016 and later (Automatyczne tworzenie kopii zapasowych dla programu SQL Server 2016 i nowszych).
  • Konfiguracja bazy danych:
    • Docelowe bazy danych użytkowników muszą używać pełnego modelu odzyskiwania. Systemowe bazy danych nie muszą używać pełnego modelu odzyskiwania. Jeśli jednak wymagane jest utworzenie kopii zapasowych dziennika dla model programu lub msdb, należy użyć pełnego modelu odzyskiwania. Aby uzyskać więcej informacji na temat wpływu pełnego modelu odzyskiwania na kopie zapasowe, zobacz Tworzenie kopii zapasowych w ramach pełnego modelu odzyskiwania.
    • Maszyna wirtualna z programem SQL Server została zarejestrowana w rozszerzeniu agenta IaaS SQL i włączono funkcję automatycznej kopii zapasowej . Ponieważ automatyczna kopia zapasowa opiera się na rozszerzeniu, automatyczna kopia zapasowa jest obsługiwana tylko w docelowych bazach danych z wystąpienia domyślnego lub pojedynczego nazwanego wystąpienia. Jeśli nie ma wystąpienia domyślnego, a wiele nazwanych wystąpień, rozszerzenie agenta IaaS sql zakończy się niepowodzeniem, a automatyczna kopia zapasowa nie będzie działać.

Ustawienia

W poniższej tabeli opisano opcje, które można skonfigurować na potrzeby automatycznej kopii zapasowej. Rzeczywiste kroki konfiguracji różnią się w zależności od tego, czy używasz witryny Azure Portal, czy poleceń programu Azure Windows PowerShell. Pamiętaj, że automatyczna kopia zapasowa domyślnie używa kompresji kopii zapasowej i nie można jej wyłączyć.

Ustawienie Zakres (wartość domyślna) opis
Automatyczne kopie zapasowe Włączanie/wyłączanie (wyłączone) Włącza lub wyłącza automatyczną kopię zapasową dla maszyny wirtualnej platformy Azure z uruchomionym programem SQL Server 2014 Standard lub Enterprise.
Okres przechowywania 1–90 dni (90 dni) Liczba dni przechowywania kopii zapasowej.
Konto magazynu Konto magazynu Azure Konto usługi Azure Storage do przechowywania plików automatycznej kopii zapasowej w magazynie obiektów blob. Kontener jest tworzony w tej lokalizacji do przechowywania wszystkich plików kopii zapasowych. Konwencja nazewnictwa plików kopii zapasowych obejmuje datę, godzinę i nazwę maszyny.
Szyfrowanie Włączanie/wyłączanie (wyłączone) Włącza lub wyłącza szyfrowanie kopii zapasowych. Po włączeniu szyfrowania kopii zapasowej certyfikaty używane do przywracania kopii zapasowej znajdują się na określonym koncie magazynu w tym samym automaticbackup kontenerze przy użyciu tej samej konwencji nazewnictwa. Jeśli hasło ulegnie zmianie, zostanie wygenerowany nowy certyfikat z tym hasłem, ale stary certyfikat pozostanie do przywrócenia poprzednich kopii zapasowych.
Hasło Tekst hasła Hasło dla kluczy szyfrowania. Jest to wymagane tylko w przypadku włączenia szyfrowania. Aby przywrócić zaszyfrowaną kopię zapasową, musisz mieć poprawne hasło i powiązany certyfikat, który był używany podczas tworzenia kopii zapasowej.

Konfigurowanie nowych maszyn wirtualnych

Użyj witryny Azure Portal, aby skonfigurować automatyczną kopię zapasową podczas tworzenia nowej maszyny wirtualnej programu SQL Server 2014 w modelu wdrażania usługi Resource Manager.

Na karcie Ustawienia programu SQL Server przewiń w dół do pozycji Automatyczna kopia zapasowa i wybierz pozycję Włącz. Poniższy zrzut ekranu witryny Azure Portal przedstawia ustawienia automatycznej kopii zapasowej SQL.

Zrzut ekranu przedstawiający konfigurację zautomatyzowanej kopii zapasowej SQL w witrynie Azure Portal.

Konfigurowanie istniejących maszyn wirtualnych

W przypadku istniejących maszyn wirtualnych programu SQL Server można włączać i wyłączać automatyczne kopie zapasowe, zmieniać okres przechowywania, określać konto magazynu i włączać szyfrowanie w witrynie Azure Portal.

Przejdź do zasobu maszyn wirtualnych SQL dla maszyny wirtualnej z programem SQL Server 2014, a następnie wybierz pozycję Kopie zapasowe.

Zrzut ekranu przedstawiający automatyczną kopię zapasową SQL dla istniejących maszyn wirtualnych.

Po zakończeniu wybierz przycisk Zastosuj w dolnej części strony Kopie zapasowe , aby zapisać zmiany.

Jeśli po raz pierwszy włączasz automatyczną kopię zapasową, platforma Azure konfiguruje agenta IaaS programu SQL Server w tle. W tym czasie witryna Azure Portal może nie pokazywać, że skonfigurowano automatyczną kopię zapasową. Poczekaj kilka minut na zainstalowanie i skonfigurowanie agenta. Następnie witryna Azure Portal będzie odzwierciedlać nowe ustawienia.

Uwaga

Automatyczne tworzenie kopii zapasowych można również skonfigurować przy użyciu szablonu. Aby uzyskać więcej informacji, zobacz Szablon szybkiego startu platformy Azure dla zautomatyzowanej kopii zapasowej.

Konfigurowanie przy użyciu programu PowerShell

Program PowerShell umożliwia skonfigurowanie automatycznej kopii zapasowej. Przed rozpoczęciem należy wykonać następujące czynności:

Uwaga

W tym artykule użyto modułu Azure Az programu PowerShell, który jest zalecanym modułem programu PowerShell do interakcji z platformą Azure. Aby rozpocząć pracę z modułem Azure PowerShell, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Weryfikowanie bieżących ustawień

Jeśli podczas aprowizacji włączono automatyczną kopię zapasową, możesz użyć programu PowerShell do sprawdzenia bieżącej konfiguracji. Uruchom polecenie Get-AzVMSqlServerExtension i sprawdź właściwość AutoBackupSettings:

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"

(Get-AzVMSqlServerExtension -VMName $vmname -ResourceGroupName $resourcegroupname).AutoBackupSettings

Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

Enable                      : False
EnableEncryption            : False
RetentionPeriod             : -1
StorageUrl                  : NOTSET
StorageAccessKey            : 
Password                    : 
BackupSystemDbs             : False
BackupScheduleType          : 
FullBackupFrequency         : 
FullBackupStartTime         : 
FullBackupWindowHours       : 
LogBackupFrequency          : 

Jeśli dane wyjściowe pokazują, że ustawienie Włącz ma wartość Fałsz, musisz włączyć automatyczną kopię zapasową. Dobrą wiadomością jest włączenie i skonfigurowanie automatycznej kopii zapasowej w taki sam sposób. Aby uzyskać te informacje, zobacz następną sekcję.

Uwaga

Jeśli ustawienia są sprawdzane natychmiast po wprowadzeniu zmiany, możliwe, że odzyskasz stare wartości konfiguracji. Poczekaj kilka minut i ponownie sprawdź ustawienia, aby upewnić się, że zmiany zostały zastosowane.

Konfigurowanie automatycznej kopii zapasowej

Program PowerShell umożliwia włączanie automatycznej kopii zapasowej oraz modyfikowanie jej konfiguracji i zachowania w dowolnym momencie.

Najpierw wybierz lub utwórz konto magazynu dla plików kopii zapasowej. Poniższy skrypt wybiera konto magazynu lub tworzy je, jeśli nie istnieje.

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

Uwaga

Automatyczna kopia zapasowa nie obsługuje przechowywania kopii zapasowych w magazynie w warstwie Premium, ale może wykonywać kopie zapasowe z dysków maszyn wirtualnych korzystających z usługi Premium Storage.

Jeśli chcesz użyć niestandardowego kontenera na koncie magazynu dla kopii zapasowych, użyj następującego skryptu, aby sprawdzić kontener lub utworzyć go, jeśli nie istnieje.

$storage_container = "backupcontainer"

New-AzStorageContainer -Name $storage_container -Context $storage.Context

if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
	New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
 else `
{ `
	Write-Warning "Container $storage_container already exists." `
}

Następnie użyj następującego skryptu, aby uzyskać klucz dostępu dla konta magazynu:

$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname  -Name $storage_accountname)[0].value

Następnie użyj polecenia Update-AzSqlVM , aby włączyć i skonfigurować ustawienia automatycznej kopii zapasowej do przechowywania kopii zapasowych na koncie usługi Azure Storage. W tym przykładzie kopie zapasowe są przechowywane przez 10 dni.

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingStorageContainerName $storage_container 

Zainstalowanie i skonfigurowanie agenta IaaS programu SQL Server może potrwać kilka minut.

Uwaga

Istnieją inne ustawienia dla polecenia Update-AzSqlVM*, które mają zastosowanie tylko do programu SQL Server 2016 i zautomatyzowanej kopii zapasowej. Program SQL Server 2014 nie obsługuje następujących ustawień: -AutoBackupSettingBackupSystemDb, -AutoBackupSettingBackupScheduleType, -AutoBackupSettingFullBackupFrequency, -AutoBackupSettingFullBackupStartTime, -AutoBackupSettingFullBackupWindowHour i -AutoBackupSettingLogBackupFrequency. Jeśli spróbujesz skonfigurować te ustawienia na maszynie wirtualnej z programem SQL Server 2014, nie wystąpi błąd, ale ustawienia nie zostaną zastosowane. Jeśli chcesz użyć tych ustawień na maszynie wirtualnej z programem SQL Server 2016, zobacz Automated Backup for SQL Server 2016 Azure virtual machines (Automatyczna kopia zapasowa dla maszyn wirtualnych platformy Azure z programem SQL Server 2016).

Aby włączyć szyfrowanie, zmodyfikuj poprzedni skrypt, aby przekazać parametr -AutoBackupSettingEnableEncryption wraz z hasłem (ciąg bezpieczny) dla parametru -AutoBackupSettingPassword . Poniższy skrypt włącza ustawienia automatycznej kopii zapasowej w poprzednim przykładzie i dodaje szyfrowanie.

$password = "r@ndom Va1ue"
$encryptionpassword = $password | ConvertTo-SecureString -AsPlainText -Force  

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingEnableEncryption `
-AutoBackupSettingPassword $encryptionpassword `
-AutoBackupSettingStorageContainerName $storage_container 

Aby potwierdzić zastosowanie ustawień, sprawdź konfigurację automatycznej kopii zapasowej.

Wyłączanie automatycznej kopii zapasowej

Aby wyłączyć automatyczną kopię zapasową, uruchom ten sam skrypt z parametrem -AutoBackupSettingEnable ustawionym na $false w poleceniu Update-AzSqlVM . Ustawiając wartość na $false funkcja jest wyłączona. Podobnie jak w przypadku instalacji, wyłączenie automatycznej kopii zapasowej może potrwać kilka minut.

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable:$false

Przykładowy skrypt

Poniższy skrypt zawiera zestaw zmiennych, które można dostosować, aby włączyć i skonfigurować automatyczną kopię zapasową dla maszyny wirtualnej. W twoim przypadku może być konieczne dostosowanie skryptu na podstawie wymagań. Na przykład należy wprowadzić zmiany, jeśli chcesz wyłączyć tworzenie kopii zapasowych systemowych baz danych lub włączyć szyfrowanie.

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$region = "Azure region name such as EASTUS2"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"
$retentionperiod = 10

# ResourceGroupName is the resource group which is hosting the VM where you are deploying the SQL Server IaaS Extension

Set-AzVMSqlServerExtension -VMName $vmname `
    -ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
    -Version "2.0" -Location $region

# Creates/use a storage account to store the backups

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

# Creates/uses a custom storage account container

$storage_container = "yourbackupcontainer"

if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
	New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
 else `
{ `
	Write-Warning "Container $storage_container already exists." `
}

# Get storage account access key
$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname  -Name $storage_accountname)[0].value

# Configure Automated Backup settings

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod $retentionperiod `
-AutoBackupSettingStorageContainerName $storage_container 

Tworzenie kopii zapasowej przy użyciu certyfikatów szyfrowania

Jeśli zdecydujesz się zaszyfrować kopie zapasowe, certyfikat szyfrowania zostanie wygenerowany i zapisany na tym samym koncie magazynu co kopie zapasowe. W tym scenariuszu należy również wprowadzić hasło, które będzie używane do ochrony certyfikatów szyfrowania używanych do szyfrowania i odszyfrowywania kopii zapasowych. Pozwala to nie martwić się o kopie zapasowe poza konfiguracją tej funkcji, a także gwarantuje, że kopie zapasowe są bezpieczne.

Po włączeniu szyfrowania kopii zapasowych zdecydowanie zalecamy sprawdzenie, czy certyfikat szyfrowania został pomyślnie utworzony i przekazany w celu zapewnienia możliwości przywracania baz danych. Możesz to zrobić, tworząc bazę danych od razu i sprawdzając, czy certyfikaty i dane szyfrowania zostały prawidłowo utworzone do nowo utworzonego kontenera. Pokazuje to, że wszystko jest poprawnie skonfigurowane i nie ma żadnych anomalii.

Jeśli nie można przekazać certyfikatu z jakiegoś powodu, możesz użyć menedżera certyfikatów do wyeksportowania certyfikatu i zapisania go. Nie chcesz jednak zapisywać go na tej samej maszynie wirtualnej, ponieważ nie zapewnia to dostępu do certyfikatu, gdy maszyna wirtualna nie działa. Aby dowiedzieć się, czy kopia zapasowa certyfikatu została prawidłowo utworzona po zmianie lub utworzeniu konfiguracji automatycznej kopii zapasowej, możesz sprawdzić dzienniki zdarzeń na maszynie wirtualnej i jeśli ten komunikat o błędzie zakończył się niepowodzeniem:

Zrzut ekranu przedstawiający komunikat o błędzie wyświetlany w dzienniku zdarzeń na maszynie wirtualnej.

Jeśli kopia zapasowa certyfikatów została utworzona poprawnie, ten komunikat zostanie wyświetlony w dziennikach zdarzeń:

Zrzut ekranu przedstawiający pomyślną kopię zapasową certyfikatu szyfrowania w dziennikach zdarzeń.

Ogólnie rzecz biorąc, zaleca się sprawdzenie kondycji kopii zapasowych od czasu do czasu. Aby można było przywrócić kopie zapasowe, należy wykonać następujące czynności:

  1. Upewnij się, że utworzono kopię zapasową certyfikatów szyfrowania i pamiętasz hasło. Jeśli tego nie zrobisz, nie będzie można odszyfrować i przywrócić kopii zapasowych. Jeśli z jakiegoś powodu certyfikaty nie zostały prawidłowo utworzone, możesz to zrobić ręcznie, wykonując następujące zapytanie T-SQL:

    BACKUP MASTER KEY TO FILE = <file_path> ENCRYPTION BY PASSWORD = <password>
    BACKUP CERTIFICATE [AutoBackup_Certificate] TO FILE = <file_path> WITH PRIVATE KEY (FILE = <file_path>, ENCRYPTION BY PASSWORD = <password>)
    
  2. Upewnij się, że pliki kopii zapasowej są przekazywane z co najmniej 1 pełną kopią zapasową. Ze względu na to, że wystąpiły błędy, należy mieć pewność, że przed usunięciem maszyny wirtualnej zawsze masz co najmniej jedną pełną kopię zapasową lub jeśli maszyna wirtualna zostanie uszkodzona, więc wiesz, że nadal możesz uzyskać dostęp do danych. Przed usunięciem dysków danych maszyny wirtualnej upewnij się, że tworzenie kopii zapasowej w magazynie jest bezpieczne i możliwe do odzyskania.

Monitorowanie

Aby monitorować automatyczną kopię zapasową w programie SQL Server 2014, dostępne są dwie główne opcje. Ponieważ automatyczna kopia zapasowa korzysta z funkcji zarządzanej kopii zapasowej programu SQL Server, te same techniki monitorowania mają zastosowanie do obu tych metod.

Najpierw możesz sondować stan, wywołując metodę msdb.smart_admin.sp_get_backup_diagnostics. Możesz też wysłać zapytanie do funkcji msdb.smart_admin.fn_get_health_status .

Uwaga

Schemat zarządzanej kopii zapasowej w programie SQL Server 2014 jest msdb.smart_admin. W programie SQL Server 2016 ta zmiana została zmieniona na msdb.managed_backup, a tematy referencyjne używają tego nowszego schematu. Jednak w przypadku programu SQL Server 2014 należy nadal używać schematu smart_admin dla wszystkich obiektów zarządzanej kopii zapasowej.

Inną opcją jest skorzystanie z wbudowanej funkcji Poczta bazy danych dla powiadomień.

  1. Wywołaj procedurę składowaną msdb.smart_admin.sp_set_parameter , aby przypisać adres e-mail do parametru SSMBackup2WANotificationEmailIds .
  2. Włącz usługę SendGrid, aby wysyłać wiadomości e-mail z maszyny wirtualnej platformy Azure.
  3. Użyj serwera SMTP i nazwy użytkownika, aby skonfigurować Poczta bazy danych. Możesz skonfigurować Pocztę bazy danych w programie SQL Server Management Studio lub za pomocą poleceń języka Transact-SQL. Aby uzyskać więcej informacji, zobacz Poczta bazy danych.
  4. Skonfiguruj program SQL Server Agent do używania Poczta bazy danych.
  5. Sprawdź, czy port SMTP jest dozwolony zarówno za pośrednictwem lokalnej zapory maszyny wirtualnej, jak i sieciowej grupy zabezpieczeń maszyny wirtualnej.

Następne kroki

Automatyczna kopia zapasowa konfiguruje zarządzaną kopię zapasową na maszynach wirtualnych platformy Azure. Dlatego należy zapoznać się z dokumentacją dotyczącą zarządzanej kopii zapasowej w programie SQL Server 2014.

Dodatkowe wskazówki dotyczące tworzenia i przywracania kopii zapasowych programu SQL Server na maszynach wirtualnych platformy Azure można znaleźć w następującym artykule: Tworzenie kopii zapasowej i przywracanie dla programu SQL Server na maszynach wirtualnych platformy Azure.

Aby uzyskać informacje o innych dostępnych zadaniach automatyzacji, zobacz Rozszerzenie agenta IaaS programu SQL Server.

Aby uzyskać więcej informacji na temat uruchamiania programu SQL Server na maszynach wirtualnych platformy Azure, zobacz Omówienie programu SQL Server na maszynach wirtualnych platformy Azure.