Aracılığıyla paylaş


PowerShell ile Azure VM'lerinde SQL veritabanlarını yedekleme ve geri yükleme

Bu makalede, Azure Backup Kurtarma Hizmetleri kasasını kullanarak Azure VM içindeki sql veritabanını yedeklemek ve kurtarmak için Azure PowerShell'in nasıl kullanılacağı açıklanmaktadır.

Bu makalede aşağıdakilerin nasıl yapılacağı açıklanmaktadır:

  • PowerShell'i ayarlayın ve Azure Kurtarma Hizmetleri Sağlayıcısı'nı kaydedin.
  • Kurtarma Hizmetleri kasası oluşturun.
  • Azure VM'sinde SQL DB için yedeklemeyi yapılandırın.
  • Bir yedekleme işi çalıştırın.
  • Yedeklenmiş sql veritabanını geri yükleyin.
  • Yedekleme ve geri yükleme işlerini izleyin.

Başlamadan önce

Kurtarma Hizmetleri nesne hiyerarşisi

Nesne hiyerarşisi aşağıdaki diyagramda özetlenmiş.

Kurtarma Hizmetleri nesne hiyerarşisi

Azure kitaplığında Az.RecoveryServices cmdlet başvurusu başvuruyu gözden geçirin.

Ayarlama ve yükleme

PowerShell'i aşağıdaki gibi ayarlayın:

  1. Az PowerShell'in en son sürümünü indirin. Gereken en düşük sürüm 1.5.0'dır.

  2. Şu komutla Azure Backup PowerShell cmdlet'lerini bulun:

    Get-Command *azrecoveryservices*
    
  3. Azure Backup ve Kurtarma Hizmetleri kasası için diğer adları ve cmdlet'leri gözden geçirin. Aşağıda neler görebileceğinize bir örnek verilmiş. Cmdlet'lerin tam listesi değildir.

    Kurtarma Hizmetleri cmdlet'lerinin listesi

  4. Connect-AzAccount ile Azure hesabınızda oturum açın.

  5. Görüntülenen web sayfasında, hesap kimlik bilgilerinizi girmeniz istenir.

    • Alternatif olarak, -Credential ile Connect-AzAccount cmdlet'ine parametre olarak hesap kimlik bilgilerinizi ekleyebilirsiniz.
    • Kiracı için çalışan bir CSP iş ortağıysanız, kiracı kimliğini veya kiracı birincil etki alanı adını kullanarak müşteriyi kiracı olarak belirtin. Connect-AzAccount -Tenant fabrikam.com örnektir.
  6. Bir hesabın birkaç aboneliği olabileceğinden, kullanmak istediğiniz aboneliği hesapla ilişkilendirin.

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  7. Azure Backup'ı ilk kez kullanıyorsanız, Azure Kurtarma Hizmetleri sağlayıcısını aboneliğinize kaydetmek için Register-AzResourceProvider cmdlet'ini kullanın.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  8. Sağlayıcıların başarıyla kaydedildiğini doğrulayın:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  9. Komut çıktısında, RegistrationState değerinin Kayıtlı olarak değiştiğini doğrulayın. Aksi takdirde Register-AzResourceProvider cmdlet'ini yeniden çalıştırın.

Kurtarma Hizmetleri kasası oluşturma

Kurtarma Hizmetleri kasası oluşturmak için bu adımları izleyin.

Kurtarma Hizmetleri kasası bir Resource Manager kaynağıdır, bu nedenle bunu bir kaynak grubuna yerleştirmeniz gerekir. Mevcut bir kaynak grubunu kullanabilir veya New-AzResourceGroup cmdlet'iyle bir kaynak grubu oluşturabilirsiniz. Bir kaynak grubu oluşturduğunuzda, kaynak grubunun adını ve konumunu belirtin.

  1. Kasa bir kaynak grubuna yerleştirilir. Mevcut bir kaynak grubunuz yoksa New-AzResourceGroup ile yeni bir grup oluşturun. Bu örnekte Batı ABD bölgesinde yeni bir kaynak grubu oluşturacağız.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. Kasayı oluşturmak için New-AzRecoveryServicesVault cmdlet'ini kullanın. Kasa için kaynak grubu için kullanılan konumu belirtin.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Kasa depolaması için kullanılacak yedeklilik türünü belirtin.

    $vault1 = Get-AzRecoveryServicesVault -Name "testvault"
    Set-AzRecoveryServicesBackupProperties  -Vault $vault1 -BackupStorageRedundancy GeoRedundant
    

Abonelikteki kasaları görüntüleme

Abonelikteki tüm kasaları görüntülemek için Get-AzRecoveryServicesVault komutunu kullanın.

Get-AzRecoveryServicesVault

Çıkış aşağıdakine benzer. İlişkili kaynak grubu ve konumu sağlanır.

Name              : Contoso-vault
ID                : /subscriptions/1234
Type              : Microsoft.RecoveryServices/vaults
Location          : WestUS
ResourceGroupName : Contoso-docs-rg
SubscriptionId    : 1234-567f-8910-abc
Properties        : Microsoft.Azure.Commands.RecoveryServices.ARSVaultProperties

Kasa bağlamını ayarlama

Kasa nesnesini bir değişkende depolayın ve kasa bağlamını ayarlayın.

  • Birçok Azure Backup cmdlet'i giriş olarak Kurtarma Hizmetleri kasa nesnesini gerektirir, bu nedenle kasa nesnesini bir değişkende depolamak uygundur.
  • Kasa bağlamı, kasada korunan veri türüdür. Set-AzRecoveryServicesVaultContext ile ayarlayın. Bağlam ayarlandıktan sonra, sonraki tüm cmdlet'ler için geçerlidir.

Aşağıdaki örnek için kasa bağlamını ayarlar testvault

Get-AzRecoveryServicesVault -Name "testvault" | Set-AzRecoveryServicesVaultContext

Kasa kimliğini getirme

Kasa bağlam ayarını Azure PowerShell yönergelerine uygun olarak kullanımdan kaldırmayı planlıyoruz. Bunun yerine kasa kimliğini depolayabilir veya getirebilir ve aşağıdaki gibi ilgili komutlara geçirebilirsiniz:

$testVault = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault"
$testVault.ID

Yedekleme ilkesi yapılandırma

Yedekleme ilkesi, yedeklemeler için zamanlamayı ve yedekleme kurtarma noktalarının ne kadar süreyle tutulacağı belirtir:

  • Yedekleme ilkesi en az bir bekletme ilkesiyle ilişkilendirilir. Bekletme ilkesi, bir kurtarma noktasının silinmeden önce ne kadar süre tutulduğunu tanımlar.
  • Get-AzRecoveryServicesBackupRetentionPolicyObject komutunu kullanarak varsayılan yedekleme ilkesi saklamayı görüntüleyin.
  • Get-AzRecoveryServicesBackupSchedulePolicyObject komutunu kullanarak varsayılan yedekleme ilkesi zamanlamasını görüntüleyin.
  • Yeni bir yedekleme ilkesi oluşturmak için New-AzRecoveryServicesBackupProtectionPolicy cmdlet'ini kullanırsınız. Zamanlama ve bekletme ilkesi nesnelerini girdiniz.

Varsayılan olarak, zamanlama ilkesi nesnesinde bir başlangıç zamanı tanımlanır. Başlangıç saatini istenen başlangıç saatiyle değiştirmek için aşağıdaki örneği kullanın. İstenen başlangıç saati de UTC olarak olmalıdır. Aşağıdaki örnekte, günlük yedeklemeler için istenen başlangıç saatinin 01:00 UTC olduğu varsayılır.

$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "MSSQL"
$UtcTime = (Get-Date -Date "2019-03-20 01:30:00Z").ToUniversalTime()
$schPol.FullBackupSchedulePolicy.ScheduleRunTimes[0] = $UtcTime

Önemli

Başlangıç zamanını yalnızca 30 dakikalık katlar halinde sağlamanız gerekir. Yukarıdaki örnekte yalnızca "01:00:00" veya "02:30:00" olabilir. Başlangıç saati "01:15:00" olamaz.

Aşağıdaki örnek zamanlama ilkesini ve bekletme ilkesini değişkenlerde depolar. Ardından bu değişkenleri yeni bir ilke (NewSQLPolicy) için parametre olarak kullanır. NewSQLPolicy günlük "Tam" yedekleme alır, 180 gün boyunca saklar ve 2 saatte bir günlük yedeklemesi alır

$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "MSSQL"
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "MSSQL"
$NewSQLPolicy = New-AzRecoveryServicesBackupProtectionPolicy -Name "NewSQLPolicy" -WorkloadType "MSSQL" -RetentionPolicy $retPol -SchedulePolicy $schPol

Çıkış aşağıdakine benzer.

Name                 WorkloadType       BackupManagementType BackupTime                Frequency                                IsDifferentialBackup IsLogBackupEnabled
                                                                                                                                Enabled
----                 ------------       -------------------- ----------                ---------                                -------------------- ------------------
NewSQLPolicy         MSSQL              AzureWorkload        3/15/2019 01:30:00 AM      Daily                                    False                True

Yedeklemeyi Etkinleştir

SQL VM'sini kaydetme

Azure VM yedeklemeleri ve Azure Dosya paylaşımları için Yedekleme hizmeti bu Azure Resource Manager kaynaklarına bağlanabilir ve ilgili ayrıntıları getirebilir. SQL bir Azure VM içindeki bir uygulama olduğundan Backup hizmetinin uygulamaya erişmesi ve gerekli ayrıntıları getirmesi için izin gerekir. Bunu yapmak için, SQL uygulamasını içeren Azure VM'yi bir Kurtarma Hizmetleri kasasıyla 'kaydetmeniz' gerekir. Bir SQL VM'yi bir kasaya kaydettikten sonra, SQL DB'lerini yalnızca bu kasaya koruyabilirsiniz. VM'yi kaydetmek için Register-AzRecoveryServicesBackupContainer PowerShell cmdlet'ini kullanın.

 $myVM = Get-AzVM -ResourceGroupName <VMRG Name> -Name <VMName>
Register-AzRecoveryServicesBackupContainer -ResourceId $myVM.ID -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $testVault.ID -Force

Komut bu kaynağın 'yedekleme kapsayıcısını' döndürür ve durumu 'kayıtlı' olur

Not

Zorlama parametresi verilmemişse, 'Bu kapsayıcı için korumayı devre dışı bırakmak istiyor musunuz' metniyle onaylamanız istenir. Lütfen bu metni yoksayın ve onaylamak için "Y" deyin. Bu bilinen bir sorundur ve metni ve force parametresi gereksinimini kaldırmak için çalışıyoruz.

SQL DB'leri getiriliyor

Kayıt tamamlandıktan sonra Yedekleme hizmeti VM içindeki tüm kullanılabilir SQL bileşenlerini listeleyebilecektir. Henüz bu kasaya yedeklenemeyen tüm SQL bileşenlerini görüntülemek için Get-AzRecoveryServicesBackupProtectableItem PowerShell cmdlet'ini kullanın

Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -VaultId $testVault.ID

Çıkışta, Öğe Türü ve ServerName ile bu kasaya kayıtlı tüm SQL VM'lerinde korumasız tüm SQL bileşenleri gösterilir. '-Container' parametresini geçirerek belirli bir SQL VM'sine daha fazla filtre ekleyebilir veya benzersiz bir SQL öğesine ulaşmak için ItemType bayrağıyla birlikte 'Name' ve 'ServerName' birleşimini kullanabilirsiniz.

$SQLDB = Get-AzRecoveryServicesBackupProtectableItem -workloadType MSSQL -ItemType SQLDataBase -VaultId $testVault.ID -Name "<Item Name>" -ServerName "<Server Name>"

Yedeklemeyi yapılandırma

Artık gerekli SQL VERITABANı'na ve yedeklenmesi gereken ilkeye sahip olduğumuza göre, bu SQL VERITABANı için yedeklemeyi yapılandırmak için Enable-AzRecoveryServicesBackupProtection cmdlet'ini kullanabiliriz.

Enable-AzRecoveryServicesBackupProtection -ProtectableItem $SQLDB -Policy $NewSQLPolicy

Komut, yedekleme yapılandırması tamamlanana kadar bekler ve aşağıdaki çıkışı döndürür.

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
master           ConfigureBackup      Completed            3/18/2019 6:00:21 PM      3/18/2019 6:01:35 PM      654e8aa2-4096-402b-b5a9-e5e71a496c4e

Yeni SQL DB'leri getiriliyor

Makine kaydedildikten sonra Yedekleme hizmeti kullanılabilir DB'lerin ayrıntılarını getirir. Kayıtlı makineye daha sonra SQL DB'leri veya SQL örnekleri eklenirse, tüm korumasız DB'leri (yeni eklenenler dahil) yeniden almak üzere yeni bir 'sorgulama' gerçekleştirmek için yedekleme hizmetini el ile tetiklemeniz gerekir. Yeni bir sorgu gerçekleştirmek için SQL VM'sinde Initialize-AzRecoveryServicesBackupItem PowerShell cmdlet'ini kullanın. komut, işlem tamamlanana kadar bekler. Daha sonra en son korumasız SQL bileşenlerinin listesini almak için Get-AzRecoveryServicesBackupProtectableItem PowerShell cmdlet'ini kullanın.

$SQLContainer = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName <VM name> -VaultId $testVault.ID
Initialize-AzRecoveryServicesBackupProtectableItem -Container $SQLContainer -WorkloadType MSSQL -VaultId $testVault.ID
Get-AzRecoveryServicesBackupProtectableItem -workloadType MSSQL -ItemType SQLDataBase -VaultId $testVault.ID

İlgili korunabilir öğeler getirildikten sonra, yukarıdaki bölümde açıklandığı gibi yedeklemeleri etkinleştirin. Yeni DB'leri el ile algılamak istemezse, aşağıda açıklandığı gibi otomatik korumayı tercih edebilir.

Otomatik korumayı etkinleştirme

Gelecekte eklenen tüm DB'lerin belirli bir ilkeyle otomatik olarak korunması için yedeklemeyi yapılandırabilirsiniz. Otomatik korumayı etkinleştirmek için Enable-AzRecoveryServicesBackupAutoProtection PowerShell cmdlet'ini kullanın.

Yönerge gelecekteki tüm DB'leri yedeklemek olduğundan, işlem SQLInstance düzeyinde yapılır.

$SQLInstance = Get-AzRecoveryServicesBackupProtectableItem -workloadType MSSQL -ItemType SQLInstance -VaultId $testVault.ID -Name "<Protectable Item name>" -ServerName "<Server Name>"
Enable-AzRecoveryServicesBackupAutoProtection -InputItem $SQLInstance -BackupManagementType AzureWorkload -WorkloadType MSSQL -Policy $NewSQLPolicy -VaultId $testVault.ID

Otomatik koruma amacı verildikten sonra, yeni eklenen DB'leri getirmek için makineye yapılan sorgu her 8 saatte bir zamanlanmış bir arka plan görevi olarak gerçekleşir.

SQL DB'lerini geri yükleme

Azure Backup, Azure VM'lerinde çalışan SQL Server veritabanlarını aşağıdaki gibi geri yükleyebilir:

  • İşlem günlüğü yedeklemelerini kullanarak belirli bir tarih veya saate (ikinciye) geri yükleyin. Azure Backup, seçilen zamana göre geri yüklemek için gereken uygun tam değişiklik yedeklemesini ve günlük yedekleme zincirini otomatik olarak belirler.
  • Belirli bir kurtarma noktasına geri yüklemek için belirli bir tam veya değişiklik yedeğini geri yükleyin.

SQL DB'lerini geri yüklemeden önce burada belirtilen önkoşulları denetleyin.

Uyarı

RBAC ile ilgili bir güvenlik sorunu nedeniyle, PowerShell aracılığıyla SQL DB için geri yükleme komutlarında hataya neden olan bir değişiklik yapmamız gerekiyordu. Uygun geri yükleme komutlarının PowerShell aracılığıyla gönderilmesi için lütfen Az 6.0.0 veya üzeri bir sürüme yükseltin. En son PS komutları aşağıda verilmiştır.

İlk olarak Get-AzRecoveryServicesBackupItem PowerShell cmdlet'ini kullanarak ilgili yedeklenmiş SQL DB'yi getirin.

$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -Name "<backup item name>" -VaultId $testVault.ID

İlgili geri yükleme zamanını getirme

Yukarıda açıklandığı gibi, yedeklenen SQL VERITABANıNı tam/farklı bir kopyaya veya belirli bir noktaya günlük kaydına geri yükleyebilirsiniz.

Farklı kurtarma noktaları getirme

Yedeklenen sql veritabanı için ayrı (Tam/fark) kurtarma noktaları getirmek için Get-AzRecoveryServicesBackupRecoveryPoint kullanın.

$startDate = (Get-Date).AddDays(-7).ToUniversalTime()
$endDate = (Get-Date).ToUniversalTime()
Get-AzRecoveryServicesBackupRecoveryPoint -Item $bkpItem -VaultId $testVault.ID -StartDate $startdate -EndDate $endDate

Çıkış aşağıdaki örneğe benzer

RecoveryPointId    RecoveryPointType  RecoveryPointTime      ItemName                             BackupManagemen
                                                                                                  tType
---------------    -----------------  -----------------      --------                             ---------------
6660368097802      Full               3/18/2019 8:09:35 PM   MSSQLSERVER;model             AzureWorkload

İlgili kurtarma noktasını getirmek için 'RecoveryPointId' filtresini veya dizi filtresini kullanın.

$FullRP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $bkpItem -VaultId $testVault.ID -RecoveryPointId "6660368097802"

Belirli bir noktaya kurtarma noktası getirme

Db'yi belirli bir noktaya geri yüklemek istiyorsanız Get-AzRecoveryServicesBackupRecoveryLogChain PowerShell cmdlet'ini kullanın. Cmdlet, bu SQL yedekleme öğesi için kesintisiz, sürekli günlük zincirinin başlangıç ve bitiş saatlerini temsil eden tarihlerin listesini döndürür. İstenen belirli bir nokta bu aralık içinde olmalıdır.

Get-AzRecoveryServicesBackupRecoveryLogChain -Item $bkpItem -VaultId $testVault.ID

Çıkış aşağıdaki örneğe benzer olacaktır.

ItemName                       StartTime                      EndTime
--------                       ---------                      -------
SQLDataBase;MSSQLSERVER;azu... 3/18/2019 8:09:35 PM           3/19/2019 12:08:32 PM

Yukarıdaki çıkış, görüntülenen başlangıç saati ile bitiş saati arasında belirli bir noktaya geri yükleyebileceğiniz anlamına gelir. Saatler UTC olarak belirtilir. PowerShell'de yukarıda gösterilen aralıkta yer alan herhangi bir belirli noktayı oluşturma.

Not

Geri yükleme için bir günlük noktası seçildiğinde, başlangıç noktasını, yani veritabanının geri yükleneceği tam yedeklemeyi belirtmeniz gerekmez. Azure Backup hizmeti kurtarma planının tamamını, yani hangi tam yedeklemenin seçileceğini, hangi günlük yedeklemelerinin uygulanacağını vb. üstlenir.

Kurtarma yapılandırmasını belirleme

SQL DB geri yüklemesi için aşağıdaki geri yükleme senaryoları desteklenir.

  • Yedeklenen SQL VERITABANıNı başka bir kurtarma noktasından alınan verilerle geçersiz kılma - OriginalWorkloadRestore
  • SQL veritabanını aynı SQL örneğinde yeni bir veritabanı olarak geri yükleme - AlternateWorkloadRestore
  • SQL VERITABANıNı başka bir SQL VM'sindeki başka bir SQL örneğinde yeni bir VERITABANı olarak geri yükleme - AlternateWorkloadRestore
  • SQL DB'yi .bak dosyaları olarak geri yükleme -RestoreAsFiles

İlgili kurtarma noktasını (ayrı veya belirli bir noktaya günlük) getirdikten sonra, kurtarma yapılandırması nesnesini istenen kurtarma planına göre getirmek için Get-AzRecoveryServicesBackupWorkloadRecoveryConfig PowerShell cmdlet'ini kullanın.

Özgün iş yükü geri yükleme

Yedeklenen DB'yi kurtarma noktasındaki verilerle geçersiz kılmak için aşağıdaki örneklerde gösterildiği gibi doğru bayrağı ve ilgili kurtarma noktasını belirtmeniz gerekir.

Farklı Kurtarma noktasıyla özgün geri yükleme
$OverwriteWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -OriginalWorkloadRestore -VaultId $testVault.ID
Günlük noktasıyla özgün geri yükleme
$OverwriteWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem  -OriginalWorkloadRestore -VaultId $testVault.ID

Alternatif iş yükü geri yükleme

Önemli

Yedeklenen sql veritabanı, bu kasaya 'kayıtlı' bir Azure VM'sinde yalnızca başka bir SQLInstance'a yeni veritabanı olarak geri yüklenebilir.

Yukarıda açıklandığı gibi, hedef SQLInstance başka bir Azure VM'sindeyse, bu kasaya kayıtlı olduğundan ve ilgili SQLInstance'ın korunabilir bir öğe olarak göründüğünden emin olun. Bu belgede hedef SQLInstance adının başka bir "Contoso2" sanal makinesinde MSSQLSERVER olduğunu varsayalım.

$TargetContainer =  Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -Status Registered  -VaultId $testVault.ID -FriendlyName "Contoso2"
$TargetInstance = Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -ItemType SQLInstance -Name "MSSQLSERVER" -ServerName "Contoso2" -VaultId $testVault.ID

Ardından aşağıda gösterildiği gibi doğru bayrakla ilgili kurtarma noktasını, hedef SQL örneğini ve hedef SQL örneğinin bulunduğu hedef kapsayıcıyı geçirmesi gerekir.

Farklı Kurtarma noktasıyla alternatif geri yükleme
$AnotherInstanceWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Günlük noktasıyla alternatif geri yükleme
$AnotherInstanceWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Dosya Olarak Geri Yükle

Yedekleme verilerini veritabanı yerine .bak dosyaları olarak geri yüklemek için Dosya Olarak Geri Yükle seçeneğini belirleyin. Yedeklenen SQL VERITABANı, bu kasaya kayıtlı herhangi bir hedef VM'ye geri yüklenebilir.

$TargetContainer= Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName "VM name" -VaultId $vaultID
Ayrı Kurtarma noktası olan dosyalar olarak geri yükleme
$FileRestoreWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
En son tam sürümden belirli bir noktaya günlük kaydıyla dosya olarak geri yükleme
$FileRestoreWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Belirli bir tam noktadan günlük noktasıyla dosya olarak geri yükleme

Geri yükleme için kullanılması gereken belirli bir tam vermek istiyorsanız, aşağıdaki komutu kullanın:

$FileRestoreWithLogAndSpecificFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -FromFull $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID

Get-AzRecoveryServicesBackupWorkloadRecoveryConfig PowerShell cmdlet'inden alınan son kurtarma noktası yapılandırma nesnesi, geri yüklemeyle ilgili tüm bilgilere sahiptir ve aşağıda gösterildiği gibi.

TargetServer         : <SQL server name>
TargetInstance       : <Target Instance name>
RestoredDBName       : <Target Instance name>/azurebackup1_restored_3_19_2019_1850
OverwriteWLIfpresent : No
NoRecoveryMode       : Disabled
targetPhysicalPath   : {azurebackup1, azurebackup1_log}
ContainerId          : /Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;computeRG;SQLVMName
SourceResourceId     : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/computeRG/VMAppContainer/SQLVMName
RestoreRequestType   : Alternate WL Restore
RecoveryPoint        : Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models.AzureWorkloadRecoveryPoint
PointInTime          : 1/1/0001 12:00:00 AM

Geri yüklenen veritabanı adını, OverwriteWLIfpresent, NoRecoveryMode ve targetPhysicalPath alanlarını düzenleyebilirsiniz. Aşağıda gösterildiği gibi hedef dosya yolları hakkında daha fazla bilgi edinin.

$AnotherInstanceWithFullConfig.targetPhysicalPath
MappingType SourceLogicalName SourcePath                  TargetPath
----------- ----------------- ----------                  ----------
Data        azurebackup1      F:\Data\azurebackup1.mdf    F:\Data\azurebackup1_1553001753.mdf
Log         azurebackup1_log  F:\Log\azurebackup1_log.ldf F:\Log\azurebackup1_log_1553001753.ldf

aşağıda gösterildiği gibi ilgili PowerShell özelliklerini dize değerleri olarak ayarlayın.

$AnotherInstanceWithFullConfig.OverwriteWLIfpresent = "Yes"
$AnotherInstanceWithFullConfig | fl
TargetServer         : <SQL server name>
TargetInstance       : <Target Instance name>
RestoredDBName       : <Target Instance name>/azurebackup1_restored_3_19_2019_1850
OverwriteWLIfpresent : Yes
NoRecoveryMode       : Disabled
targetPhysicalPath   : {azurebackup1, azurebackup1_log}
ContainerId          : /Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;computeRG;SQLVMName
SourceResourceId     : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/computeRG/VMAppContainer/SQLVMName
RestoreRequestType   : Alternate WL Restore
RecoveryPoint        : Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models.AzureWorkloadRecoveryPoint
PointInTime          : 1/1/0001 12:00:00 AM

Önemli

Geri yükleme işlemi yapılandırma nesnesine dayalı olacağından, son kurtarma yapılandırma nesnesinin tüm gerekli ve uygun değerlere sahip olduğundan emin olun.

Not

Zincirin tamamını geri yüklemek istemiyorsanız ancak dosyaların yalnızca bir alt kümesini geri yüklemek istiyorsanız, burada belgelendiği gibi adımları izleyin.

İkincil bölgedeki bir kasaya alternatif iş yükü geri yükleme

Önemli

PowerShell'den SQL için ikincil bölge geri yükleme desteği Az 6.0.0'dan edinilebilir

Bölgeler arası geri yüklemeyi etkinleştirdiyseniz kurtarma noktaları ikincil, eşleştirilmiş bölgeye de çoğaltılır. Ardından, bu kurtarma noktalarını getirebilir ve bu eşleştirilmiş bölgede bulunan bir makineye geri yükleme tetikleyebilirsiniz. Normal geri yüklemede olduğu gibi, hedef makinenin ikincil bölgedeki hedef kasaya kaydedilmesi gerekir. Aşağıdaki adım dizisi uçtan uca işlemi netleştirmelidir.

  • İkincil bölgeye çoğaltılan yedekleme öğelerini getirme
  • Böyle bir öğe için, ikincil bölgeye çoğaltılan kurtarma noktalarını (ayrı ve/veya günlükler) getirin
  • Ardından, ikincil eşleştirilmiş bölge içindeki bir kasaya kayıtlı bir hedef sunucu seçin
  • Bu sunucuya geri yüklemeyi tetikleyin ve JobId kullanarak izleyin.

İkincil bölgeden yedekleme öğelerini getirme

İkincil bölgeden tüm SQL yedekleme öğelerini her zamanki komutuyla ancak bu öğelerin ikincil bölgeden getirilmelerini belirtmek için ek bir parametreyle getirin.

$secondaryBkpItems = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload  -WorkloadType MSSQL  -VaultId $testVault.ID -UseSecondaryRegion
İkincil bölgeden ayrı kurtarma noktaları getirme

Yedeklenen sql veritabanı için ayrı (Tam/fark) kurtarma noktalarını getirmek ve bunların ikincil bölgeden getirilen kurtarma noktaları olduğunu belirtmek üzere bir parametre eklemek için Get-AzRecoveryServicesBackupRecoveryPoint kullanın

$startDate = (Get-Date).AddDays(-7).ToUniversalTime()
$endDate = (Get-Date).ToUniversalTime()
Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -StartDate $startdate -EndDate $endDate -UseSecondaryRegion

Çıkış aşağıdaki örneğe benzer

RecoveryPointId    RecoveryPointType  RecoveryPointTime      ItemName                             BackupManagemen
                                                                                                  tType
---------------    -----------------  -----------------      --------                             ---------------
6660368097802      Full               3/18/2019 8:09:35 PM   MSSQLSERVER;model             AzureWorkload

İlgili kurtarma noktasını getirmek için 'RecoveryPointId' filtresini veya dizi filtresini kullanın.

$FullRPFromSec = Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -RecoveryPointId "6660368097802" -UseSecondaryRegion
İkincil bölgeden günlük kurtarma noktalarını getirme

get-AzRecoveryServicesBackupRecoveryLogChain PowerShell cmdlet'ini' '-UseSecondaryRegion' parametresiyle kullanın. Bu cmdlet, ikincil bölgeden bu SQL yedekleme öğesi için kesintisiz, sürekli bir günlük zincirinin başlangıç ve bitiş saatlerini döndürür. İstenen belirli bir nokta bu aralık içinde olmalıdır.

Get-AzRecoveryServicesBackupRecoveryLogChain -Item $secondaryBkpItems[0] -VaultId $testVault.ID -UseSecondaryRegion

Çıkış aşağıdaki örneğe benzer olacaktır.

ItemName                       StartTime                      EndTime
--------                       ---------                      -------
SQLDataBase;MSSQLSERVER;azu... 3/18/2019 8:09:35 PM           3/19/2019 12:08:32 PM

Yukarıdaki çıkış, görüntülenen başlangıç saati ile bitiş saati arasında belirli bir noktaya geri yükleyebileceğiniz anlamına gelir. Saatler UTC olarak belirtilir. PowerShell'de yukarıda gösterilen aralıkta yer alan herhangi bir belirli noktayı oluşturma.

İkincil bölgeden hedef sunucuyu getirme

İkincil bölgeden bir kasaya ve bu kasaya kayıtlı bir hedef sunucuya ihtiyacımız vardır. İkincil bölge hedef kapsayıcısına ve SQL örneğine sahip olduktan sonra, bir geri yükleme iş yükü yapılandırması oluşturmak için mevcut cmdlet'leri yeniden kullanabiliriz. Bu belgede, VM adının "secondaryVM" ve bu VM içindeki Örnek adının "MSSQLInstance" olduğunu varsayalım

İlk olarak, ikincil bölgede mevcut olan ilgili kasayı getirir ve ardından bu kasanın içindeki kayıtlı kapsayıcıları alırız.

$PairedRegionVault = Get-AzRecoveryServicesVault -ResourceGroupName SecondaryRG -Name PairedVault
$secContainer =  Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -Status Registered  -VaultId $PairedRegionVault.ID -FriendlyName "secondaryVM"

Kayıtlı kapsayıcı seçildikten sonra veritabanının geri yüklenmesi gereken kapsayıcı içindeki SQL örneklerini getiririz. Burada "secondaryVM" içinde 1 SQL örneği olduğunu varsayar ve bu örneği getiririz.

$secSQLInstance = Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -ItemType SQLInstance -VaultId $PairedRegionVault.ID -Container $secContainer

Kurtarma yapılandırmasını hazırlama

Normal SQL geri yüklemesinde yukarıda belirtildiği gibi, ilgili kurtarma yapılandırmasını oluşturmak için aynı komut yeniden kullanılabilir.

İkincil bölgeden tam geri yüklemeler için
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRPFromSec[0] -TargetItem $secSQLInstance -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer
İkincil bölgeden günlük noktası zaman geri yüklemeleri için
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $secondaryBkpItems[0] -TargetItem $secSQLInstance  -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer

Birincil bölge geri yükleme veya ikincil bölge geri yükleme için ilgili yapılandırma elde edildikten sonra, aynı geri yükleme komutu geri yüklemeleri tetikler ve daha sonra iş kimlikleri kullanılarak izlenir.

İlgili yapılandırmayla geri yükleme

İlgili kurtarma Yapılandırması nesnesi alınıp doğrulandıktan sonra geri yükleme işlemini başlatmak için Restore-AzRecoveryServicesBackupItem PowerShell cmdlet'ini kullanın.

Restore-AzRecoveryServicesBackupItem -WLRecoveryConfig $AnotherInstanceWithLogConfig -VaultId $testVault.ID -RestoreToSecondaryRegion

Geri yükleme işlemi izlenecek bir iş döndürür.

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
MSSQLSERVER/m... Restore              InProgress           3/17/2019 10:02:45 AM                                3274xg2b-e4fg-5952-89b4-8cb566gc1748

SQL yedeklemelerini yönetme

İsteğe bağlı yedekleme

Bir veritabanı için yedekleme etkinleştirildikten sonra Backup-AzRecoveryServicesBackupItem PowerShell cmdlet'ini kullanarak veritabanı için isteğe bağlı yedekleme de tetikleyebilirsiniz. Aşağıdaki örnek, sıkıştırma etkinleştirilmiş bir SQL VERITABANıNDA yalnızca kopya tam yedeklemeyi tetikler ve yalnızca kopyalama tam yedeklemesi 60 gün boyunca saklanmalıdır.

Not

Yalnızca kopya tam yedeklemeler, günlükler gibi diğer yedekleme türlerinde bağımlılıkları olmadığından uzun süreli saklama için idealdir. 'Tam' yedekleme, sonraki günlük yedeklemelerinin üst öğesi olarak değerlendirilir ve bu nedenle bekletme ilkede günlük saklamaya bağlıdır. Bu nedenle, müşteri tarafından sağlanan süre sonu süresi , 'tam' yedeklemeler için değil, yalnızca kopya tam yedeklemeler için kabul edilir. Tam yedekleme saklama süresi, geçerli saatten itibaren 45 gün boyunca otomatik olarak ayarlanır. Burada da belgelenmiştir.

$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -Name "<backup item name>" -VaultId $testVault.ID
$endDate = (Get-Date).AddDays(45).ToUniversalTime()
Backup-AzRecoveryServicesBackupItem -Item $bkpItem -BackupType CopyOnlyFull -EnableCompression -VaultId $testVault.ID -ExpiryDateTimeUTC $endDate

İsteğe bağlı yedekleme komutu izlenecek bir iş döndürür.

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
MSSQLSERVER/m... Backup               InProgress           3/18/2019 8:41:27 PM                                2516bb1a-d3ef-4841-97a3-9ba455fb0637

Çıkış kaybolursa veya ilgili İş Kimliğini almak istiyorsanız, Azure Backup hizmetinden iş listesini alın ve ardından bunu ve ayrıntılarını izleyin.

Yedekleme öğeleri için ilkeyi değiştirme

Yedeklenen öğenin Policy1 Policy2ilkesini olarak değiştirebilirsiniz. Yedeklenen bir öğenin ilkelerini değiştirmek için ilgili ilkeyi getirin ve öğeyi yedekleyin ve Enable-AzRecoveryServices komutunu kullanarak parametre olarak yedekleme öğesini kullanın.

$TargetPol1 = Get-AzRecoveryServicesBackupProtectionPolicy -Name <PolicyName>
$anotherBkpItem = Get-AzRecoveryServicesBackupItem -WorkloadType MSSQL -BackupManagementType AzureWorkload -Name "<BackupItemName>"
Enable-AzRecoveryServicesBackupProtection -Item $anotherBkpItem -Policy $TargetPol1

Komut, yedekleme yapılandırması tamamlanana kadar bekler ve aşağıdaki çıkışı döndürür.

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
master           ConfigureBackup      Completed            3/18/2019 8:00:21 PM      3/18/2019 8:02:16 PM      654e8aa2-4096-402b-b5a9-e5e71a496c4e

Mevcut yedekleme ilkesini düzenleme

Mevcut bir ilkeyi düzenlemek için Set-AzRecoveryServicesBackupProtectionPolicy komutunu kullanın.

Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -SchedulePolicy $SchPol -RetentionPolicy $RetPol

Hataları izlemek için bir süre geçtikten sonra yedekleme işlerini denetleyin. Varsa, sorunları düzeltmeniz gerekir. Ardından, daha önce işlemin başarısız olduğu tüm yedekleme öğelerinde ilkeyi düzenlemeyi yeniden denemek için fixForInconsistentItems parametresiyle ilkeyi düzenleme komutunu yeniden çalıştırın.

Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -FixForInconsistentItems

SQL VM'lerini yeniden kaydetme

Uyarı

Yeniden kayıt denemeden önce hata belirtilerini ve nedenlerini anlamak için bu belgeyi okuduğunuzdan emin olun

SQL VM'sinin yeniden kaydını tetikleme için ilgili yedekleme kapsayıcısını getirin ve kayıt cmdlet'ine geçirin.

$SQLContainer = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName <VM name> -VaultId $testVault.ID
Register-AzRecoveryServicesBackupContainer -Container $SQLContainer -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $testVault.ID

Korumayı durdurma

Verileri saklama

Korumayı durdurmak isterseniz Disable-AzRecoveryServicesBackupProtection PowerShell cmdlet'ini kullanabilirsiniz. Bu, zamanlanmış yedeklemeleri durdurur, ancak şimdiye kadar yedeklenen veriler sonsuza kadar korunur.

$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -Name "<backup item name>" -VaultId $testVault.ID
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $testVault.ID

Yedekleme verilerini silme

Kasadaki depolanan yedekleme verilerini tamamen kaldırmak için '-RemoveRecoveryPoints' bayrağını/anahtarını 'disable' koruma komutuna eklemeniz gerekir.

Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $testVault.ID -RemoveRecoveryPoints

Otomatik korumayı devre dışı bırakma

Otomatik koruma bir SQLInstance üzerinde yapılandırılmışsa Disable-AzRecoveryServicesBackupAutoProtection PowerShell cmdlet'ini kullanarak bunu devre dışı bırakabilirsiniz.

Aşağıdaki PowerShell komutunu kullanarak otomatik korumanın etkinleştirildiği örnekleri bulun.

Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -VaultId $testVault.ID | Where-Object {$_.IsAutoProtected -eq $true}

Ardından çıkıştan ilgili korunabilir öğe adını ve sunucu adını seçin ve bu örnekler için otomatik korumayı devre dışı bırakın.

$SQLInstance = Get-AzRecoveryServicesBackupProtectableItem -workloadType MSSQL -ItemType SQLInstance -VaultId $testVault.ID -Name "<Protectable Item name>" -ServerName "<Server Name>"
Disable-AzRecoveryServicesBackupAutoProtection -InputItem $SQLInstance -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $testVault.ID

SQL VM kaydını kaldırma

Bir SQL sunucusunun tüm DB'leri artık korunmazsa ve yedekleme verileri yoksa, SQL VM'sinin kaydını bu kasadan kaldırabilirsiniz. Ancak o zaman DB'leri başka bir kasaya koruyabilirsiniz. SQL VM kaydını kaldırmak için Unregister-AzRecoveryServicesBackupContainer PowerShell cmdlet'ini kullanın.

$SQLContainer = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName <VM name> -VaultId $testVault.ID
 Unregister-AzRecoveryServicesBackupContainer -Container $SQLContainer -VaultId $testVault.ID

Azure Backup işlerini izleme

Azure Backup'ın yalnızca SQL yedeklemesinde kullanıcı tarafından tetiklenen işleri izlediğini unutmayın. Zamanlanmış yedeklemeler (günlük yedeklemeleri dahil) portalda veya PowerShell'de görünmez. Ancak zamanlanmış işler başarısız olursa bir yedekleme uyarısı oluşturulur ve portalda gösterilir. Zamanlanmış tüm işleri ve diğer ilgili bilgileri izlemek için Azure İzleyici'yi kullanın.

Kullanıcılar, yedekleme gibi zaman uyumsuz işlerin çıkışında döndürülen JobID ile isteğe bağlı/kullanıcı tarafından tetiklenen işlemleri izleyebilir. İşi ve ayrıntılarını izlemek için Get-AzRecoveryServicesBackupJobDetail PowerShell cmdlet'ini kullanın.

 Get-AzRecoveryServicesBackupJobDetails -JobId 2516bb1a-d3ef-4841-97a3-9ba455fb0637 -VaultId $testVault.ID

azure backup hizmetinden isteğe bağlı işlerin ve durumlarının listesini almak için Get-AzRecoveryServicesBackupJob PowerShell cmdlet'ini kullanın. Aşağıdaki örnek, devam eden tüm SQL işlerini döndürür.

Get-AzRecoveryServicesBackupJob -Status InProgress -BackupManagementType AzureWorkload

Devam eden bir işi iptal etmek için Stop-AzRecoveryServicesBackupJob PowerShell cmdlet'ini kullanın.

SQL Always On Kullanılabilirlik gruplarını yönetme

SQL Always On Kullanılabilirlik Grupları için Kullanılabilirlik grubunun (AG) tüm düğümlerini kaydettiğinizden emin olun. Tüm düğümler için kayıt yapıldıktan sonra, korunabilir öğeler altında mantıksal olarak bir SQL kullanılabilirlik grubu nesnesi oluşturulur. SQL AG altındaki veritabanları 'SQLDatabase' olarak listelenir. Düğümler tek başına örnekler olarak gösterilir ve bunların altındaki varsayılan SQL veritabanları da SQL veritabanları olarak listelenir.

Örneğin, bir SQL AG'nin iki düğümü olduğunu varsayalım: sql-server-0 ve sql-server-1 ve 1 SQL AG DB. Her iki düğüm de kaydedildikten sonra, korunabilir öğeleri listelerseniz aşağıdaki bileşenleri listeler

  • SQL AG nesnesi - SQLAvailabilityGroup olarak korunabilir öğe türü
  • SQL AG DB - SQLDatabase olarak korunabilir öğe türü
  • sql-server-0 - SQLInstance olarak korunabilir öğe türü
  • sql-server-1 - SQLInstance olarak korunabilir öğe türü
  • sql-server-0 altındaki tüm varsayılan SQL DB'leri (ana, model, msdb) - SQLDatabase olarak korunabilir öğe türü
  • sql-server-1 altındaki tüm varsayılan SQL DB'leri (ana, model, msdb) - SQLDatabase olarak korunabilir öğe türü

Yedekleme kapsayıcıları listelendiğinde sql-server-0, sql-server-1 de "AzureVMAppContainer" olarak listelenir.

Yedeklemeyi etkinleştirmek için ilgili veritabanını getirmeniz ve isteğe bağlı yedekleme ve geri yükleme PowerShell cmdlet'leri aynıdır.