Automatyczna kopia zapasowa dla programu SQL Server na maszynach wirtualnych platformy Azure
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 maszynach wirtualnych platformy Azure, począwszy od programu SQL Server 2016 lub nowszej wersji Standard, Enterprise lub Developer. Dzięki temu można skonfigurować regularne kopie zapasowe bazy danych korzystające z trwałej usługi Azure Blob Storage.
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 R2 lub nowszy.
- PROGRAM SQL Server 2016 lub nowszy. W przypadku programu SQL Server 2014 zobacz Automated Backup for SQL Server 2014 (Automatyczne tworzenie kopii zapasowych dla programu SQL Server 2014).
- 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 lubmsdb
, 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ę zautomatyzowanej 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 w jednym nazwanym wystąpieniu. 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ć.
- Jeśli używasz automatycznych kopii zapasowych w pomocniczej replice zawsze włączonej grupy dostępności, replika musi być czytelna , aby kopie zapasowe zakończyły się pomyślnie.
- 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
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. Automatyczna kopia zapasowa domyślnie używa kompresji kopii zapasowej i nie można jej wyłączyć.
Ustawienia podstawowe
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 2016 lub nowszym deweloperem, standardem lub przedsiębiorstwem. |
Okres przechowywania | 1–90 dni (90 dni) | Liczba dni, przez które usługa zachowuje metadane kopii zapasowej w programie msdb . Po wygaśnięciu okresu przechowywania kopii zapasowej metadane zostaną usunięte z msdb programu , ale pliki nie zostaną usunięte z kontenera magazynu. Możesz użyć zasad zarządzania cyklem życia dla konta magazynu, aby zrównoważyć przechowywanie kopii zapasowych przy użyciu zarządzania kosztami zgodnie z potrzebami biznesowymi. |
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 identyfikator GUID daty, godziny i bazy danych. |
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. To hasło jest 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. |
Ustawienia zaawansowane
Ustawienie | Zakres (wartość domyślna) | opis |
---|---|---|
Kopie zapasowe bazy danych systemu | Włączanie/wyłączanie (wyłączone) | Po włączeniu ta funkcja wykonuje również kopię zapasową systemowych baz danych: master , msdb i model . msdb W przypadku baz danych i model sprawdź, czy znajdują się one w modelu pełnego odzyskiwania, jeśli chcesz utworzyć kopie zapasowe dzienników. Kopie zapasowe dzienników nigdy nie są tworzone dla master programu , a żadne kopie zapasowe nie są tworzone dla programu tempdb . |
Harmonogram tworzenia kopii zapasowych | Ręczne/zautomatyzowane (zautomatyzowane) | Domyślnie harmonogram tworzenia kopii zapasowych jest automatycznie określany na podstawie wzrostu dziennika. Harmonogram ręcznej kopii zapasowej umożliwia użytkownikowi określenie przedziału czasu dla kopii zapasowych. W takim przypadku kopie zapasowe są wykonywane tylko z określoną częstotliwością i w określonym przedziale czasu danego dnia. |
Częstotliwość tworzenia pełnej kopii zapasowej | Codziennie/co tydzień | Częstotliwość tworzenia pełnych kopii zapasowych. W obu przypadkach pełne kopie zapasowe rozpoczynają się w następnym zaplanowanym przedziale czasu. Po wybraniu cotygodniowych kopii zapasowych kopie zapasowe mogą trwać wiele dni, dopóki wszystkie bazy danych nie zostaną pomyślnie utworzone. |
Godzina rozpoczęcia pełnej kopii zapasowej | 00:00 – 23:00 (01:00) | Godzina rozpoczęcia danego dnia, w którym mogą być wykonywane pełne kopie zapasowe. |
Okno pełnej kopii zapasowej | 1 – 23 godziny (1 godzina) | Czas trwania przedziału czasu danego dnia, w którym mogą być wykonywane pełne kopie zapasowe. |
Częstotliwość tworzenia kopii zapasowych dzienników | 5 – 60 minut (60 minut) | Częstotliwość tworzenia kopii zapasowych dzienników. |
Uwaga
Harmonogram automatycznej kopii zapasowej wykonuje kopie zapasowe na podstawie wzrostu dziennika. Używanie automatycznych kopii zapasowych, gdy bazy danych są w trybie odzyskiwania prostego, nie jest zalecane.
Opis pełnej częstotliwości tworzenia kopii zapasowych
Ważne jest, aby zrozumieć różnicę między codziennymi i cotygodniowymi pełnymi kopiami zapasowymi. Rozważmy następujące dwa przykładowe scenariusze.
Scenariusz 1. Cotygodniowe kopie zapasowe
Masz maszynę wirtualną z programem SQL Server, która zawiera wiele dużych baz danych.
W poniedziałek włączysz automatyczną kopię zapasową z następującymi ustawieniami:
- Harmonogram tworzenia kopii zapasowych: ręczne
- Częstotliwość tworzenia pełnej kopii zapasowej: Co tydzień
- Godzina rozpoczęcia pełnej kopii zapasowej: 01:00
- Okno czasu tworzenia pełnej kopii zapasowej: 1 godzina
Oznacza to, że następne dostępne okno kopii zapasowej jest wtorek o godzinie 1:00 przez 1 godzinę. W tym czasie automatyczna kopia zapasowa rozpoczyna tworzenie kopii zapasowych baz danych pojedynczo. W tym scenariuszu bazy danych są wystarczająco duże, aby pełne kopie zapasowe zostały ukończone dla pierwszych kilku baz danych. Jednak po godzinie nie wszystkie bazy danych zostały utworzone.
W takim przypadku automatyczna kopia zapasowa rozpoczyna tworzenie kopii zapasowych pozostałych baz danych następnego dnia, środa o godzinie 1:00 przez jedną godzinę. Jeśli nie wszystkie bazy danych zostały utworzone w tym czasie, zostanie podjęta próba ponownego następnego dnia w tym samym czasie. Trwa to do momentu pomyślnego utworzenia kopii zapasowej wszystkich baz danych.
Po ponownym osiągnięciu wtorku automatyczne tworzenie kopii zapasowej rozpoczyna tworzenie kopii zapasowych wszystkich baz danych.
W tym scenariuszu pokazano, że automatyczna kopia zapasowa działa tylko w określonym przedziale czasu, a każda baza danych jest wykonywana co tydzień. Pokazuje to również, że kopie zapasowe mogą obejmować wiele dni w przypadku, gdy nie można ukończyć wszystkich kopii zapasowych w ciągu jednego dnia.
Scenariusz 2. Codzienne kopie zapasowe
Masz maszynę wirtualną z programem SQL Server, która zawiera wiele dużych baz danych.
W poniedziałek włączysz automatyczną kopię zapasową z następującymi ustawieniami:
- Harmonogram tworzenia kopii zapasowych: ręczne
- Częstotliwość tworzenia pełnej kopii zapasowej: codziennie
- Godzina rozpoczęcia pełnej kopii zapasowej: 22:00
- Przedział czasu tworzenia pełnej kopii zapasowej: 6 godzin
Oznacza to, że następne dostępne okno kopii zapasowej jest w poniedziałek o godzinie 10:00 przez 6 godzin. W tym czasie automatyczna kopia zapasowa rozpoczyna tworzenie kopii zapasowych baz danych pojedynczo.
Następnie we wtorek o godzinie 10 przez 6 godzin pełne kopie zapasowe wszystkich baz danych zaczynają się ponownie.
Ważne
Kopie zapasowe są wykonywane sekwencyjnie w każdym interwale. W przypadku wystąpień z dużą liczbą baz danych zaplanuj interwał tworzenia kopii zapasowej z wystarczającą ilością czasu, aby uwzględnić wszystkie kopie zapasowe. Jeśli kopie zapasowe nie mogą zostać ukończone w danym interwale, niektóre kopie zapasowe mogą zostać pominięte, a czas między kopiami zapasowymi pojedynczej bazy danych może być wyższy niż skonfigurowany czas interwału kopii zapasowej, co może negatywnie wpłynąć na cel punktu przywracania (RPO).
Konfigurowanie nowych maszyn wirtualnych
Użyj witryny Azure Portal, aby skonfigurować automatyczną kopię zapasową podczas tworzenia nowej maszyny z programem SQL Server 2016 lub nowszym w modelu wdrażania usługi Resource Manager.
Na karcie Ustawienia programu SQL Server wybierz pozycję Włącz w obszarze Automatyczna kopia zapasowa. Po włączeniu automatycznej kopii zapasowej można skonfigurować następujące ustawienia:
- Okres przechowywania kopii zapasowych (do 90 dni)
- Konto magazynu i kontener magazynu do użycia na potrzeby kopii zapasowych
- Opcja szyfrowania i hasło dla kopii zapasowych
- Bazy danych systemu tworzenia kopii zapasowych
- Konfigurowanie harmonogramu tworzenia kopii zapasowych
Aby zaszyfrować kopię zapasową, wybierz pozycję Włącz. Następnie określ ustawienie Hasło. Platforma Azure tworzy certyfikat do szyfrowania kopii zapasowych i używa określonego hasła do ochrony tego certyfikatu.
Wybierz pozycję Wybierz kontener magazynu, aby określić kontener, w którym chcesz przechowywać kopie zapasowe.
Domyślnie harmonogram jest ustawiany automatycznie, ale możesz utworzyć własny harmonogram, wybierając pozycję Ręcznie, co umożliwia skonfigurowanie częstotliwości tworzenia kopii zapasowych, przedziału czasu tworzenia kopii zapasowej i częstotliwości tworzenia kopii zapasowej dziennika w minutach.
Poniższy zrzut ekranu witryny Azure Portal przedstawia ustawienia automatycznej kopii zapasowej podczas tworzenia nowej maszyny wirtualnej z programem SQL Server:
Konfigurowanie istniejących maszyn wirtualnych
W przypadku istniejących maszyn wirtualnych programu SQL Server przejdź do zasobu maszyn wirtualnych SQL, a następnie wybierz pozycję Kopie zapasowe, aby skonfigurować automatyczne kopie zapasowe.
Wybierz pozycję Włącz , aby skonfigurować ustawienia automatycznej kopii zapasowej.
Możesz skonfigurować okres przechowywania (do 90 dni), kontener dla konta magazynu, w którym chcesz przechowywać kopie zapasowe, a także szyfrowanie i harmonogram tworzenia kopii zapasowych. Domyślnie harmonogram jest zautomatyzowany.
Jeśli chcesz ustawić własny harmonogram tworzenia kopii zapasowych, wybierz pozycję Ręczne i skonfiguruj częstotliwość tworzenia kopii zapasowych, niezależnie od tego, czy chcesz utworzyć kopię zapasową systemowych baz danych, oraz interwał tworzenia kopii zapasowej dziennika transakcji w minutach.
Po zakończeniu wybierz przycisk Zastosuj w dolnej części strony Ustawienia kopii zapasowych , 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, aż agent zostanie zainstalowany, skonfigurowany. Następnie witryna Azure Portal będzie odzwierciedlać nowe ustawienia.
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:
- Pobierz i zainstaluj najnowszą wersję programu Azure PowerShell.
- Otwórz program Windows PowerShell i skojarz go z kontem za pomocą polecenia Connect-AzAccount .
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.
Instalowanie rozszerzenia IaaS programu SQL Server
Jeśli aprowizowana maszyna wirtualna programu SQL Server z witryny Azure Portal, rozszerzenie IaaS programu SQL Server powinno być już zainstalowane. Możesz określić, czy maszyna wirtualna jest zainstalowana, wywołując polecenie Get-AzVM i sprawdzając właściwość Extensions .
$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
(Get-AzVM -Name $vmname -ResourceGroupName $resourcegroupname).Extensions
Jeśli zainstalowano rozszerzenie agenta IaaS programu SQL Server, powinno zostać wyświetlone jako "SqlIaaSAgent" lub "SQLIaaSExtension". Wartość ProvisioningState dla rozszerzenia powinna również zawierać wartość "Powodzenie".
Jeśli nie został zainstalowany lub nie można go aprowizować, możesz zainstalować go za pomocą następującego polecenia. Oprócz nazwy maszyny wirtualnej i grupy zasobów należy również określić region ($region), w którym znajduje się maszyna wirtualna.
$region = "EASTUS2"
Set-AzVMSqlServerExtension -VMName $vmname `
-ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
-Version "2.0" -Location $region
Weryfikowanie bieżących ustawień
Jeśli podczas aprowizacji włączono automatyczną kopię zapasową, możesz użyć programu PowerShell, aby sprawdzić bieżącą konfigurację. Uruchom polecenie Get-AzVMSqlServerExtension i sprawdź właściwość AutoBackupSettings:
(Get-AzVMSqlServerExtension -VMName $vmname -ResourceGroupName $resourcegroupname).AutoBackupSettings
Powinny zostać wyświetlone dane wyjściowe podobne do następujących:
Enable : True
EnableEncryption : False
RetentionPeriod : 30
StorageUrl : https://test.blob.core.windows.net/
StorageAccessKey :
Password :
BackupSystemDbs : False
BackupScheduleType : Manual
FullBackupFrequency : WEEKLY
FullBackupStartTime : 2
FullBackupWindowHours : 2
LogBackupFrequency : 60
Jeśli dane wyjściowe pokazują, że ustawienie Włącz ma wartość False, 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. Kopie zapasowe bazy danych systemu są włączone. Pełne kopie zapasowe są zaplanowane w każdą sobotę (co tydzień) z oknem czasu rozpoczynającym się o godzinie 20:00 przez dwie godziny. Kopie zapasowe dzienników są zaplanowane co 30 minut.
Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingBackupScheduleType Manual `
-AutoBackupSettingFullBackupFrequency Weekly
-AutoBackupSettingDaysOfWeek Saturday `
-AutoBackupSettingFullBackupStartTime 20 `
-AutoBackupSettingFullBackupWindowHour 2 `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingLogBackupFrequency 30 `
-AutoBackupSettingStorageContainerName $storage_container `
-AutoBackupSettingBackupSystemDb
Zainstalowanie i skonfigurowanie agenta IaaS programu SQL Server może potrwać kilka minut.
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 `
-AutoBackupSettingBackupScheduleType Manual `
-AutoBackupSettingFullBackupFrequency Weekly `
-AutoBackupSettingDaysOfWeek Saturday `
-AutoBackupSettingFullBackupStartTime 20 `
-AutoBackupSettingFullBackupWindowHour 2 `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingLogBackupFrequency 30 `
-AutoBackupSettingEnableEncryption `
-AutoBackupSettingPassword $encryptionpassword `
-AutoBackupSettingStorageContainerName $storage_container `
-AutoBackupSettingBackupSystemDb
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
$backupscheduletype = "Manual"
$fullbackupfrequency = "Weekly"
$fullbackupdayofweek = "Saturday"
$fullbackupstarthour = "20"
$fullbackupwindow = "2"
$logbackupfrequency = "30"
# 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 `
-AutoBackupSettingBackupScheduleType $backupscheduletype `
-AutoBackupSettingFullBackupFrequency $fullbackupfrequency `
-AutoBackupSettingDaysOfWeek $fullbackupdayofweek `
-AutoBackupSettingFullBackupStartTime $fullbackupstarthour `
-AutoBackupSettingFullBackupWindowHour $fullbackupwindow `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod $retentionperiod `
-AutoBackupSettingLogBackupFrequency $logbackupfrequency `
-AutoBackupSettingStorageContainerName $storage_container `
-AutoBackupSettingBackupSystemDb
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. Spowoduje to wyświetlenie, że wszystko zostało poprawnie skonfigurowane i nie wystąpiły żadne anomalie.
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 nie powiodło się, zostanie wyświetlony następujący komunikat o błędzie:
Jeśli kopia zapasowa certyfikatów została utworzona poprawnie, ten komunikat zostanie wyświetlony 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:
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>)
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 2016 lub nowszym, 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.managed_backup.sp_get_backup_diagnostics. Możesz też wysłać zapytanie do funkcji msdb.managed_backup.fn_get_health_status table-valued.
Inną opcją jest skorzystanie z wbudowanej funkcji Poczta bazy danych dla powiadomień.
- Wywołaj procedurę składowaną msdb.managed_backup.sp_set_parameter , aby przypisać adres e-mail do parametru SSMBackup2WANotificationEmailIds .
- Włącz usługę SendGrid, aby wysyłać wiadomości e-mail z maszyny wirtualnej platformy Azure.
- 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.
- Skonfiguruj program SQL Server Agent do używania Poczta bazy danych.
- Sprawdź, czy port SMTP jest dozwolony zarówno za pośrednictwem lokalnej zapory maszyny wirtualnej, jak i sieciowej grupy zabezpieczeń maszyny wirtualnej.
Znane problemy
Podczas pracy z funkcją zautomatyzowanej kopii zapasowej należy wziąć pod uwagę te znane problemy.
Nie można włączyć automatycznej kopii zapasowej w witrynie Azure Portal
W poniższej tabeli wymieniono możliwe rozwiązania, jeśli masz problemy z włączaniem automatycznej kopii zapasowej w witrynie Azure Portal:
Objaw | Rozwiązanie |
---|---|
Włączenie automatycznych kopii zapasowych zakończy się niepowodzeniem, jeśli rozszerzenie IaaS jest w stanie niepowodzenia | Napraw rozszerzenie agenta IaaS SQL, jeśli jest w stanie niepowodzenia. |
Włączanie automatycznej kopii zapasowej kończy się niepowodzeniem, jeśli masz setki baz danych | Jest to znane ograniczenie rozszerzenia agenta IaaS SQL. Aby obejść ten problem, możesz włączyć zarządzaną kopię zapasową bezpośrednio zamiast używać rozszerzenia agenta IaaS SQL do konfigurowania automatycznej kopii zapasowej. |
Włączanie automatycznej kopii zapasowej kończy się niepowodzeniem z powodu problemów z metadanymi | Zatrzymaj usługę agenta IaaS SQL. Uruchom polecenie T-SQL: use msdb exec autoadmin_metadata_delete . Uruchom usługę agenta IaaS SQL i spróbuj ponownie włączyć automatyczną kopię zapasową w witrynie Azure Portal. |
Włączanie automatycznych kopii zapasowych dla wystąpienia klastra trybu failover | Tworzenie kopii zapasowych przy użyciu prywatnych punktów końcowych nie jest obsługiwane. Użyj pełnego identyfikatora URI konta magazynu dla kopii zapasowej. |
Tworzenie kopii zapasowych wielu wystąpień SQL przy użyciu zautomatyzowanej kopii zapasowej | Automatyczna kopia zapasowa obsługuje obecnie tylko jedno wystąpienie programu SQL Server. Jeśli masz wiele nazwanych wystąpień i wystąpienie domyślne, automatyczna kopia zapasowa działa z wystąpieniem domyślnym. Jeśli masz wiele nazwanych wystąpień i nie masz wystąpienia domyślnego, włączenie automatycznej kopii zapasowej zakończy się niepowodzeniem. |
Nie można włączyć automatycznej kopii zapasowej z powodu konta i uprawnień | Sprawdź następujące kwestie: — Agent programu SQL Server jest uruchomiony. — Konto NT Service\SqlIaaSExtensionQuery ma odpowiednie uprawnienia do funkcji automatycznej kopii zapasowej zarówno w programie SQL Server, jak i dla zasobu maszyn wirtualnych SQL w witrynie Azure Portal. — Nazwa konta sa nie została zmieniona, chociaż wyłączenie go jest dopuszczalne. |
Automatyczne tworzenie kopii zapasowej kończy się niepowodzeniem dla programu SQL 2016 + | Opcja Zezwalaj na publiczny dostęp do obiektów blob jest włączona na koncie magazynu. Zapewnia to tymczasowe obejście znanego problemu. |
Typowe problemy dotyczące automatycznej lub zarządzanej kopii zapasowej
W poniższej tabeli wymieniono możliwe błędy i rozwiązania podczas pracy z automatycznymi kopiami zapasowymi:
Objaw | Rozwiązanie |
---|---|
Automatyczne/zarządzane tworzenie kopii zapasowej kończy się niepowodzeniem z powodu łączności z kontem magazynu/błędami przekroczenia limitu czasu | Sprawdź, czy sieciowa grupa zabezpieczeń dla sieci wirtualnej, a Zapora systemu Windows nie blokuje połączeń wychodzących z maszyny wirtualnej do konta magazynu na porcie 443. |
Automatyczne/zarządzane tworzenie kopii zapasowej kończy się niepowodzeniem z powodu użycia pamięci/operacji we/wy | Sprawdź, czy możesz zwiększyć maksymalną pamięć serwera i/lub zmienić rozmiar dysku/maszyny wirtualnej, jeśli zabraknie limitów operacji we/wy/maszyny wirtualnej. Jeśli używasz grupy dostępności, rozważ odciążenie kopii zapasowych do repliki pomocniczej. |
Automatyczne tworzenie kopii zapasowej kończy się niepowodzeniem po zmianie nazwy serwera | Jeśli nazwa hosta maszyny została zmieniona, należy również zmienić nazwę hosta w programie SQL Server. |
Błąd: Operacja nie powiodła się z powodu błędu wewnętrznego. Argument nie może być pustym ciągiem.\r\nParameter name: sas Token Ponów próbę później | Jest to prawdopodobnie spowodowane tym, że usługa SQL Server Agent nie ma poprawnych uprawnień personifikacji. Zmień usługę SQL Server Agent, aby użyć innego konta, aby rozwiązać ten problem. |
Błąd: Zarządzana kopia zapasowa serwera SQL Server na platformie Microsoft Azure nie może konfigurować domyślnych ustawień kopii zapasowej dla wystąpienia programu SQLServer, ponieważ adres URL kontenera był nieprawidłowy. Istnieje również możliwość, że poświadczenia sygnatury dostępu współdzielonego są nieprawidłowe | Ten błąd może wystąpić, jeśli masz dużą liczbę baz danych. Użyj zarządzanej kopii zapasowej zamiast zautomatyzowanej kopii zapasowej. |
Zadanie automatycznej kopii zapasowej nie powiodło się po ponownym uruchomieniu maszyny wirtualnej | Sprawdź, czy usługa SQL Agent jest uruchomiona. |
Tworzenie zarządzanej kopii zapasowej sporadycznie kończy się niepowodzeniem/Błąd:Upłynął limit czasu wykonywania | Jest to znany problem rozwiązany w aktualizacji CU18 dla programu SQL Server 2019 i [KB4040376] dla programu SQL Server 2014-2017. |
Błąd: Serwer zdalny zwrócił błąd: (403) Zabronione | Napraw rozszerzenie agenta IaaS sql. |
Błąd 3202: Zapisywanie na koncie magazynu nie powiodło się 13 (dane są nieprawidłowe) | Usuń niezmienne zasady obiektów blob w kontenerze magazynu i upewnij się, że konto magazynu używa co najmniej protokołu TLS 1.0. |
Błąd 3063: Zapisywanie na urządzeniu blokowym obiektów blob kopii zapasowej. Urządzenie osiągnęło limit dozwolonych bloków. | Może się tak zdarzyć, jeśli uruchamiasz automatyczne kopie zapasowe z pomocniczej repliki zawsze włączonej grupy dostępności, która ma konfigurację ustawioną Readable na NO wartość . Aby automatyczne kopie zapasowe działały w repliki pomocniczej, replika musi być czytelna. |
Nie można zaplanować tworzenia kopii zapasowej dla określonego dnia | Jeśli używasz automatycznych kopii zapasowych dla programu SQL Server 2014, jest to oczekiwane. Możesz skonfigurować harmonogram tworzenia kopii zapasowych, począwszy od programu SQL Server 2016. |
Wyłączanie automatycznej kopii zapasowej lub zarządzanej kopii zapasowej kończy się niepowodzeniem
W poniższej tabeli wymieniono możliwe rozwiązania, jeśli masz problemy z wyłączaniem automatycznej kopii zapasowej w witrynie Azure Portal:
Objaw | Rozwiązanie |
---|---|
Wyłączenie automatycznych kopii zapasowych zakończy się niepowodzeniem, jeśli rozszerzenie IaaS jest w stanie niepowodzenia | Napraw rozszerzenie agenta IaaS SQL, jeśli jest w stanie niepowodzenia. |
Wyłączanie automatycznej kopii zapasowej kończy się niepowodzeniem z powodu problemów z metadanymi | Zatrzymaj usługę agenta IaaS SQL. Uruchom polecenie T-SQL: use msdb exec autoadmin_metadata_delete . Uruchom usługę agenta Iaas SQL i spróbuj wyłączyć automatyczną kopię zapasową w witrynie Azure Portal. |
Nie można wyłączyć automatycznej kopii zapasowej z powodu konta i uprawnień | Sprawdź następujące kwestie: — Agent programu SQL Server jest uruchomiony. — Konto NT Service\SqlIaaSExtensionQuery ma odpowiednie uprawnienia do funkcji automatycznej kopii zapasowej zarówno w programie SQL Server, jak i dla zasobu maszyn wirtualnych SQL w witrynie Azure Portal. — Nazwa konta sa nie została zmieniona, chociaż wyłączenie go jest dopuszczalne. |
Chcę dowiedzieć się, jaka usługa/aplikacja wykonuje kopie zapasowe programu SQL Server
- W programie SQL Server Management Studio (SSMS) Eksplorator obiektów kliknij prawym przyciskiem myszy bazę danych > Select Reports Standard Reports>Backup and Restore Events (Wybieranie raportów standardowych raportów>tworzenia kopii zapasowych i przywracania zdarzeń). W raporcie możesz rozwinąć sekcję Pomyślne operacje tworzenia kopii zapasowej, aby wyświetlić historię kopii zapasowych.
- Jeśli widzisz wiele kopii zapasowych na platformie Azure lub na urządzeniu wirtualnym, sprawdź, czy używasz usługi Azure Backup do tworzenia kopii zapasowych poszczególnych baz danych SQL lub tworzenia migawki maszyny wirtualnej na urządzeniu wirtualnym, które używa
NT Authority/SYSTEM
konta. Jeśli tak nie jest, sprawdź konsolę usług systemu Windows (services.msc), aby zidentyfikować wszystkie aplikacje innych firm, które mogą tworzyć kopie zapasowe.
Następne kroki
Automatyczna kopia zapasowa konfiguruje zarządzaną kopię zapasową na maszynach wirtualnych platformy Azure. Dlatego ważne jest zapoznanie się z dokumentacją dotyczącą zarządzanej kopii zapasowej , aby zrozumieć zachowanie i implikacje.
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.