Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Interfejs wiersza polecenia platformy Azure służy do tworzenia zasobów platformy Azure i zarządzania nimi z poziomu wiersza polecenia lub za pośrednictwem skryptów. W tym artykule opisano sposób tworzenia kopii zapasowej bazy danych SQL na maszynie wirtualnej platformy Azure i wyzwalania kopii zapasowych na żądanie przy użyciu interfejsu wiersza polecenia platformy Azure. Te akcje można również wykonać przy użyciu witryny Azure Portal.
W tym artykule założono, że na maszynie wirtualnej platformy Azure jest już zainstalowana baza danych SQL. (Możesz również utworzyć maszynę wirtualną przy użyciu interfejsu wiersza polecenia platformy Azure).
W tym artykule dowiesz się, jak:
- Utwórz skarbiec dla Recovery Services
- Rejestrowanie serwera SQL i odnajdywanie na nim baz danych
- Włączanie tworzenia kopii zapasowej w bazie danych SQL
- Wyzwalanie kopii zapasowej na żądanie
Aby wyświetlić scenariusze tworzenia kopii zapasowych i przywracania, które obecnie obsługujemy, zobacz macierz wsparcia. Często zadawane pytania można znaleźć w często zadawanych pytaniach.
Wymagania wstępne
W środowisku Azure Cloud Shell używaj powłoki Bash. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługą Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie Azure CLI w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli używasz instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu polecenia az login . Aby zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane na Twoim terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony/a, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom az upgrade.
Utwórz skarbiec dla Recovery Services
Magazyn usługi Recovery Services to logiczny kontener, który przechowuje dane kopii zapasowej dla każdego chronionego zasobu, takiego jak maszyny wirtualne platformy Azure lub obciążenia uruchomione na maszynach wirtualnych platformy Azure — na przykład bazy danych SQL lub HANA. Gdy zadanie tworzenia kopii zapasowej chronionego zasobu zostaje uruchomione, tworzony jest punkt odzyskiwania w magazynie usługi Recovery Services. Następnie można użyć jednego z tych punktów odzyskiwania w celu przywrócenia danych do danego punktu w czasie.
Utwórz magazyn usługi Recovery Services za pomocą polecenia az backup vault create . Użyj grupy zasobów i lokalizacji jako maszyny wirtualnej, którą chcesz chronić. Dowiedz się, jak utworzyć maszynę wirtualną z systemem Windows i maszynę wirtualną z systemem Linux przy użyciu interfejsu wiersza polecenia platformy Azure.
W tym artykule użyjemy:
- Grupa zasobów o nazwie SQLResourceGroup
- Maszyna wirtualna o nazwie testSQLVM
- Zasoby w lokalizacji westus2 .
Uruchom następujące polecenie, aby utworzyć magazyn o nazwie SQLVault.
az backup vault create --resource-group SQLResourceGroup \
--name SQLVault \
--location westus2
Domyślnie zapasowa kopuła usługi Recovery Services jest ustawiona na geograficznie redundacyjne przechowywanie. Geo-Redundant pamięć masowa gwarantuje, że dane kopii zapasowej są replikowane do pomocniczego regionu Azure, nawet jeśli znajduje się on setki kilometrów od regionu podstawowego. Jeśli należy zmodyfikować ustawienie nadmiarowości magazynu, użyj polecenia az backup vault backup-properties set.
az backup vault backup-properties set \
--name SQLVault \
--resource-group SQLResourceGroup \
--backup-storage-redundancy "LocallyRedundant/GeoRedundant"
Aby sprawdzić, czy magazyn został pomyślnie utworzony, użyj polecenia az backup vault list. Odpowiedź jest wyświetlana jako:
Location Name ResourceGroup
--------- --------------- -------------
westus2 SQLVault SQLResourceGroup
Rejestrowanie i ochrona programu SQL Server
Aby zarejestrować program SQL Server w usłudze magazynu Recovery Services, użyj polecenia az backup container register. VMResourceId to identyfikator zasobu maszyny wirtualnej utworzonej do zainstalowania programu SQL.
az backup container register --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--resource-id VMResourceId
Uwaga / Notatka
Jeśli maszyna wirtualna nie znajduje się w tej samej grupie zasobów co magazyn, sqlResourceGroup używa grupy zasobów, w której utworzono magazyn.
Zarejestrowanie serwera SQL automatycznie odnajduje wszystkie bieżące bazy danych. Aby jednak odnaleźć nowe bazy danych, które mogą zostać dodane w przyszłości, zobacz sekcję Odnajdywanie nowych baz danych dodanych do zarejestrowanego serwera SQL .
Użyj polecenia az backup container list, aby sprawdzić, czy wystąpienie SQL zostało pomyślnie zarejestrowane w magazynie. Odpowiedź jest wyświetlana jako:
Name Friendly Name Resource Group Type Registration Status
------------------------------------------------------ -------------- -------------------- --------- ----------------------
VMAppContainer;Compute;SQLResourceGroup;testSQLVM testSQLVM SQLResourceGroup AzureWorkload Registered
Uwaga / Notatka
Nazwa kolumny w powyższych danych wyjściowych odnosi się do nazwy kontenera. Ta nazwa kontenera jest używana w następnych sekcjach, aby umożliwić tworzenie kopii zapasowych i ich wyzwalanie. Na przykład VMAppContainer;Compute;SQLResourceGroup;testSQLVM.
Włączanie tworzenia kopii zapasowej w bazie danych SQL
Polecenie az backup protectable-item list zawiera listę wszystkich baz danych odnalezionych w wystąpieniu SQL zarejestrowanym w poprzednim kroku.
az backup protectable-item list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--backup-management-type AzureWorkload \
--protectable-item-type SQLDataBase \
--output table
Baza danych powinna znajdować się na tej liście, której kopię zapasową chcesz utworzyć, która jest wyświetlana jako:
Name Protectable Item Type ParentName ServerName IsProtected
----------------------------- ---------------------- ------------ ----------- ------------
sqldatabase;mssqlserver;master SQLDataBase MSSQLServer testSQLVM NotProtected
sqldatabase;mssqlserver;model SQLDataBase MSSQLServer testSQLVM NotProtected
sqldatabase;mssqlserver;msdb SQLDataBase MSSQLServer testSQLVM NotProtected
Teraz skonfiguruj kopię zapasową bazy danych sqldatabase; mssqlserver; baza danych master .
Aby skonfigurować i zabezpieczyć kopie zapasowe w bazie danych, użyj polecenia az backup protection enable-for-azurewl . Podaj nazwę zasad, których chcesz użyć. Aby utworzyć zasady przy użyciu interfejsu wiersza polecenia, użyj polecenia az backup policy create . W tym artykule korzystamy z polityki SQLPolicy .
az backup protection enable-for-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--policy-name SQLPolicy \
--protectable-item-name "sqldatabase;mssqlserver;master" \
--protectable-item-type SQLDataBase \
--server-name testSQLVM \
--workload-type SQLDataBase \
--output table
Możesz użyć tego samego polecenia, jeśli masz zawsze włączoną grupę dostępności SQL i chcesz zidentyfikować chronione źródło danych w grupie dostępności. W tym miejscu typ elementu, który można chronić, to SQLAG.
Aby sprawdzić, czy powyższa konfiguracja kopii zapasowej została ukończona, użyj polecenia az backup job list . Dane wyjściowe są wyświetlane jako:
Name Operation Status Item Name Start Time UTC
------------------------------------ --------------- --------- ---------- -------------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 ConfigureBackup Completed master 2019-12-03T03:09:210831+00:00
Polecenie az backup job list wyświetla wszystkie zadania tworzenia kopii zapasowej (zaplanowane lub na żądanie), które zostały uruchomione lub są obecnie uruchomione w chronionej bazie danych, oprócz innych operacji, takich jak rejestrowanie, konfigurowanie kopii zapasowej i usuwanie danych kopii zapasowej.
Uwaga / Notatka
Usługa Azure Backup nie dostosowuje się automatycznie do zmian czasu letniego podczas tworzenia kopii zapasowej bazy danych SQL działającej na maszynie wirtualnej platformy Azure.
Zmodyfikuj zasady ręcznie zgodnie z potrzebami.
Włączanie ochrony automatycznej
W przypadku bezproblemowej konfiguracji kopii zapasowej wszystkie bazy danych dodane w przyszłości mogą być automatycznie chronione przy użyciu określonych zasad. Żeby włączyć automatyczną ochronę, użyj polecenia az backup protection auto-enable-for-azurewl .
Ponieważ instrukcja polega na utworzeniu kopii zapasowej wszystkich przyszłych baz danych, operacja jest wykonywana na poziomie sqlInstance .
az backup protection auto-enable-for-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--policy-name SQLPolicy \
--protectable-item-name "sqlinstance;mssqlserver" \
--protectable-item-type SQLInstance \
--server-name testSQLVM \
--workload-type MSSQL\
--output table
Wyzwalanie kopii zapasowej na żądanie
Aby wyzwolić kopię zapasową na żądanie, użyj polecenia az backup protection backup-now .
Uwaga / Notatka
Okres przechowywania tej kopii zapasowej jest określany przez typ uruchomionej kopii zapasowej na żądanie.
- Pełne kopie zapasowe na żądanie są przechowywane przez co najmniej 45 dni i maksymalnie 99 lat.
- Pełne kopiowanie na żądanie akceptuje dowolną wartość przechowywania.
- Różnicowa kopia zapasowa na żądanie zachowuje kopię zapasową zgodnie z zasadami przechowywania zaplanowanych kopii różnicowych.
- Dziennik na żądanie zachowuje kopie zapasowe zgodnie z przechowywaniem zaplanowanych dzienników ustawionych w zasadach.
az backup protection backup-now --resource-group SQLResourceGroup \
--item-name "sqldatabase;mssqlserver;master" \
--vault-name SQLVault \
--container-name "VMAppContainer;Compute;SQLResourceGroup;testSQLVM" \
--backup-type Full \
--retain-until 01-01-2040 \
--output table
Dane wyjściowe są wyświetlane jako:
Name ResourceGroup
------------------------------------ -------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 sqlResourceGroup
Odpowiedź zawiera nazwę zadania. Tej nazwy zadania można użyć do śledzenia stanu zadania przy użyciu polecenia az backup job show .
Skonfiguruj kopię zapasową migawki instancji SQL
Poniższe przykłady snapshotów wykorzystują składnię PowerShell shell, w tym backticki dla kontynuacji linii oraz array splatting dla typowych argumentów CLI. To nie są skrypty Bash. Użyj wersji Azure CLI, która udostępnia dostępne opcje snapshotów pokazane tutaj, oraz przejrzyj macierz wsparcia snapshotów oraz wymagania wstępne snapshotów.
Wymień wszystkie symbole zastępcze przed uruchomieniem polecenia. Wykonaj tylko zamierzoną operację; przykłady to oddzielne workflowy, a nie jeden skrypt do pełnego wykonania.
Skonfiguruj zmienne tworzenia kopii zapasowej migawki
Korzystaj z subskrypcji i grupy zasobów skarbca, nawet jeśli maszyna wirtualna jest w innej subskrypcji:
$vaultSubscription = "<vault-subscription-id>"
$vaultRg = "<vault-rg>"
$vaultName = "<vault-name>"
$sourceVm = "<source-vm-name>"
$instanceName = "<instance-name>"
$snapshotRg = "<snapshot-resource-group-name>"
$uamiId = "/subscriptions/<subscription-id>/resourceGroups/<identity-rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>"
$vaultArgs = @("--subscription", $vaultSubscription, "--resource-group", $vaultRg, "--vault-name", $vaultName)
az backup vault show --subscription $vaultSubscription --resource-group $vaultRg --name $vaultName
Przygotuj pliki zasad migawek
Ustaw $snapshotRg na rzeczywistą nazwę grupy zasobów migawki. W tym przykładzie użyto siedmiodniowej codziennej retencji i przechowywania logów, z pięciodniowym natychmiastowym przechowywaniem migawek. Retencja dzienna i retencja logów musi wynosić co najmniej siedem dni; retencja natychmiastowych migawek jest konfigurowana osobno.
Przeczytaj zarządzaną tożsamość przypisaną przez użytkownika i stwórz obiekt polityki:
$identityJson = az identity show --ids $uamiId --output json
if ($LASTEXITCODE -ne 0) { throw "Could not read the managed identity." }
$identity = $identityJson | ConvertFrom-Json
$snapshotTime = "2026-10-15T02:00:00Z"
$policy = @{
properties = @{
backupManagementType = "AzureWorkload"
workLoadType = "SQLInstance"
vmWorkloadPolicyType = "SnapshotV2"
settings = @{ timeZone = "UTC"; issqlcompression = $false; isCompression = $false }
subProtectionPolicy = @(
@{
policyType = "SnapshotFull"
schedulePolicy = @{
schedulePolicyType = "SimpleSchedulePolicy"
scheduleRunFrequency = "Daily"
scheduleRunTimes = @($snapshotTime)
}
retentionPolicy = @{
retentionPolicyType = "LongTermRetentionPolicy"
dailySchedule = @{
retentionTimes = @($snapshotTime)
retentionDuration = @{ count = 7; durationType = "Days" }
}
}
snapshotBackupAdditionalDetails = @{
instantRpRetentionRangeInDays = 5
instantRPDetails = $snapshotRg
userAssignedManagedIdentityDetails = @{
identityArmId = $uamiId
identityName = $identity.name
userAssignedIdentityProperties = @{
clientId = $identity.clientId
principalId = $identity.principalId
}
}
}
},
@{
policyType = "Log"
schedulePolicy = @{
schedulePolicyType = "LogSchedulePolicy"
scheduleFrequencyInMins = 60
}
retentionPolicy = @{
retentionPolicyType = "SimpleRetentionPolicy"
retentionDuration = @{ count = 7; durationType = "Days" }
}
}
)
}
}
Zapisz politykę snapshot-and-log przed usunięciem podpolityki logów, aby utworzyć osobny plik tylko dla snapshotów:
$policy | ConvertTo-Json -Depth 100 |
Set-Content -Encoding utf8 ".\sqlinst-snaplog-policy.json"
$policy.properties.subProtectionPolicy = @(
$policy.properties.subProtectionPolicy | Where-Object policyType -eq "SnapshotFull"
)
$policy | ConvertTo-Json -Depth 100 |
Set-Content -Encoding utf8 ".\sqlinst-snapshot-policy.json"
Twórz polityki migawek
Utwórz obie zasady z odpowiednich plików. Wybierz politykę odpowiednią dla swoich wymagań ochronnych podczas włączania kopii zapasowej:
az backup policy create @vaultArgs --name "SqlInst-SnapLog" `
--backup-management-type AzureWorkload --workload-type SQLInstance `
--policy ".\sqlinst-snaplog-policy.json"
az backup policy create @vaultArgs --name "SqlInst-SnapOnly" `
--backup-management-type AzureWorkload --workload-type SQLInstance `
--policy ".\sqlinst-snapshot-policy.json"
az backup policy show @vaultArgs --name "SqlInst-SnapLog" --output json
Zarejestruj maszynę wirtualną do ochrony instancji
Dla maszyny wirtualnej w innej subskrypcji podaj jej identyfikator zasobu oraz subskrypcję kontenera. Opcjonalny --container-sub-id alias może zastąpić --container-subscription-id:
az backup container register @vaultArgs `
--resource-id "/subscriptions/<vm-subscription-id>/resourceGroups/<vm-rg>/providers/Microsoft.Compute/virtualMachines/<vm-name>" `
--backup-management-type AzureWorkload --workload-type SQLInstance `
--container-subscription-id "<vm-subscription-id>"
Odkryj przypadki podlegające ochronie
Discovery wykorzystuje MSSQL dla komponentów SQL. Wypisz komponenty, przefiltruj instancje według serwera, a następnie pobierz docelową instancję:
az backup protectable-item list @vaultArgs --workload-type MSSQL --output json
az backup protectable-item list @vaultArgs --workload-type MSSQL `
--protectable-item-type SQLInstance --server-name $sourceVm --output json
az backup protectable-item show @vaultArgs --workload-type MSSQL `
--protectable-item-type SQLInstance --name $instanceName --server-name $sourceVm --output json
Włącz ochronę migawek
Wybierz politykę snapshotów oraz bazy danych użytkowników, które chcesz chronić:
az backup protection enable-for-azurewl @vaultArgs `
--policy-name "SqlInst-SnapLog" --workload-type SQLInstance `
--protectable-item-type SQLInstance --protectable-item-name $instanceName `
--server-name $sourceVm --child-database-names "Testdb1" "Testdb2" "Testdb4"
Uruchom kopię zapasową migawki na żądanie
Wyświetl zarejestrowane pojemniki i chronione przedmioty. Skopiuj ich dokładne nazwy w języku ojczystym, zamiast je tworzyć:
az backup container list @vaultArgs --backup-management-type AzureWorkload `
--query "[].{Name:name,VM:properties.friendlyName}" --output table
$containerName = "<native-source-container-name>"
$sourceArgs = $vaultArgs + @("--container-name", $containerName, "--backup-management-type", "AzureWorkload")
az backup item list @sourceArgs --workload-type SQLInstance --output json
$instanceItemName = "<native-protected-instance-item-name>"
$instanceArgs = $sourceArgs + @("--item-name", $instanceItemName, "--workload-type", "SQLInstance")
$retainUntil = (Get-Date).ToUniversalTime().AddDays(45).ToString("dd-MM-yyyy-HH:mm:ss")
az backup protection backup-now @instanceArgs --backup-type SnapshotFull --retain-until $retainUntil
Użyj zwróconej nazwy zadania z az backup job show, aby monitorować postęp. Informacje o poleceniach punktów odzyskiwania i przywracania znajdziesz w artykule Przywracanie snapshotów instancji SQL.
Dalsze kroki
- Dowiedz się, jak przywrócić bazę danych SQL na maszynie wirtualnej platformy Azure przy użyciu interfejsu wiersza polecenia.
- Dowiedz się, jak utworzyć kopię zapasową bazy danych SQL uruchomionej na maszynie wirtualnej platformy Azure przy użyciu witryny Azure Portal.
Treści powiązane
- Tworzenie kopii zapasowych baz danych programu SQL Server na maszynach wirtualnych platformy Azure przy użyciu usługi Azure Backup za pośrednictwem interfejsu API REST.
- Przywracanie baz danych programu SQL Server na maszynach wirtualnych platformy Azure przy użyciu interfejsu API REST.
- Zarządzanie bazami danych programu SQL Server na maszynach wirtualnych platformy Azure przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure, interfejsu API REST.