Bagikan melalui


Cadangkan dan pulihkan SQL Database di Azure VM dengan PowerShell

Artikel ini menjelaskan cara menggunakan Azure PowerShell untuk mencadangkan dan memulihkan SQL DB dalam Azure VM menggunakan vault Layanan Pemulihan Azure Backup.

Artikel ini menjelaskan cara:

  • Mengatur PowerShell dan mendaftarkan Penyedia Layanan Pemulihan Azure.
  • Buat vault Layanan Pemulihan.
  • Mengonfigurasi pencadangan untuk SQL DB dalam Azure VM.
  • Memulai pekerjaan pencadangan.
  • Memulihkan SQL DB yang dicadangkan.
  • Memantau pekerjaan pencadangan dan pemulihan.

Sebelum memulai

Hierarki objek Layanan Pemulihan

Hierarki objek dirangkum dalam diagram berikut.

Hierarki objek Layanan Pemulihan

Tinjau referensi cmdlet Az.RecoveryServices di pustaka Azure.

Mengatur dan menginstal

Menyiapkan PowerShell sebagai berikut:

  1. Unduh Az PowerShell versi terbaru. Versi minimum yang diperlukan adalah 1.5.0.

  2. Temukan cmdlet Azure Backup PowerShell dengan perintah ini:

    Get-Command *azrecoveryservices*
    
  3. Tinjau alias dan cmdlet untuk vault Azure Backup dan Layanan Pemulihan. Berikut adalah contoh dari apa yang mungkin Anda lihat. Ini bukan daftar lengkap cmdlet.

    Daftar cmdlet Layanan Pemulihan

  4. Masuk ke akun Azure Anda dengan Connect-AzAccount.

  5. Pada halaman web yang muncul, Anda diminta untuk memasukkan informasi masuk akun Anda.

    • Atau, Anda dapat menyertakan informasi masuk akun Anda sebagai parameter dalam cmdlet Connect-AzAccount dengan -Credential.
    • Jika Anda adalah mitra CSP yang bekerja untuk penyewa, tetapkan pelanggan sebagai penyewa, menggunakan tenantID atau nama domain utama penyewa mereka. Contohnya adalah Connect-AzAccount -Tenant "fabrikam.com".
  6. Kaitkan langganan yang ingin Anda gunakan dengan akun tersebut, karena akun bisa memiliki beberapa langganan.

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  7. Jika Anda menggunakan Azure Backup untuk pertama kalinya, gunakan cmdlet Register-AzResourceProvider untuk mendaftarkan penyedia Layanan Pemulihan Azure dengan langganan Anda.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  8. Memverifikasi bahwa penyedia berhasil terdaftar:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  9. Dalam output perintah, verifikasi bahwa RegistrationState berubah menjadi Terdaftar. Jika tidak, jalankan cmdlet Register-AzResourceProvider lagi.

Buat brankas Recovery Services

Ikuti langkah-langkah berikut untuk membuat vault Layanan Pemulihan.

Vault Layanan Pemulihan adalah sumber daya Azure Resource Manager, jadi Anda harus menempatkannya dalam grup sumber daya. Anda bisa menggunakan grup sumber daya yang sudah ada atau membuat grup sumber daya dengan cmdlet New-AzResourceGroup. Saat Anda membuat grup sumber daya, tentukan nama dan lokasi untuk grup sumber daya.

  1. {i>VaultNew-AzResourceGroup. Dalam contoh ini, kami membuat grup sumber daya baru di wilayah AS Barat.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. Gunakan cmdlet New-AzRecoveryServicesVault untuk membuat vault. Tentukan lokasi yang sama untuk {i>vault

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Tentukan jenis redundansi yang akan digunakan untuk penyimpanan vault.

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

Menampilkan vault dalam langganan

Untuk melihat semua vault dalam langganan, gunakan Get-AzRecoveryServicesVault.

Get-AzRecoveryServicesVault

Outputnya mirip dengan berikut ini. Grup dan lokasi sumber daya terkait disediakan.

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

Mengatur konteks vault

Simpan objek vault dalam variabel, dan atur konteks vault.

  • Banyak cmdlet Azure Backup memerlukan objek vault Layanan Pemulihan sebagai input, sehingga lebih mudah untuk menyimpan objek vault dalam sebuah variabel.
  • Konteks vault adalah tipe data yang dilindungi dalam vault. Atur dengan Set-AzRecoveryServicesVaultContext. Setelah konteks diatur, maka berlaku untuk semua cmdlet berikutnya.

Contoh berikut mengatur konteks vault untuk testvault

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

Mengambil ID vault

Kami berencana untuk menghentikan pengaturan konteks vault sesuai dengan panduan Azure PowerShell. Sebagai gantinya, Anda dapat menyimpan atau mengambil ID vault, lalu meneruskannya ke perintah yang relevan, sebagai berikut:

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

Mengkonfigurasi kebijakan pencadangan

Kebijakan pencadangan menentukan jadwal pencadangan, dan berapa lama titik pemulihan cadangan harus disimpan:

Secara default, waktu mulai ditentukan dalam Objek Kebijakan Jadwal. Gunakan contoh berikut untuk mengubah waktu mulai menjadi waktu mulai yang diinginkan. Waktu mulai yang diinginkan harus menggunakan UTC. Contoh berikut mengasumsikan waktu mulai yang diinginkan adalah 01.00 UTC untuk pencadangan harian.

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

Penting

Anda harus menyediakan waktu mulai hanya dalam kelipatan 30 menit. Dalam contoh di atas, waktu hanya bisa "01:00:00" atau "02:30:00". Waktu mulai tidak boleh "01:15:00".

Contoh berikut tentang menyimpan kebijakan jadwal dan kebijakan retensi dalam variabel. Kemudian menggunakan variabel tersebut sebagai parameter untuk kebijakan baru (NewAFSPolicy). NewSQLPolicy mengambil cadangan "Penuh" harian, menyimpannya selama 180 hari dan mengambil cadangan log setiap 2 jam

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

Outputnya mirip dengan berikut ini.

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

Aktifkan pencadangan

Mendaftar SQL VM

Untuk pencadangan Azure VM dan berbagi File Azure, layanan Pencadangan dapat terhubung ke sumber daya Azure Resource Manager ini dan mengambil detail yang relevan. Karena SQL adalah aplikasi dalam Azure VM, layanan Pencadangan memerlukan izin untuk mengakses aplikasi dan mengambil detail yang diperlukan. Untuk melakukan itu, Anda perlu 'mendaftar' Azure VM yang berisi aplikasi SQL dengan vault Layanan Pemulihan. Setelah Anda mendaftar SQL VM dengan vault, Anda dapat melindungi SQL DB ke vault itu saja. Gunakan cmdlet PowerShell Register-AzRecoveryServicesBackupContainer untuk mendaftarkan VM.

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

Perintah akan mengembalikan 'kontainer cadangan' sumber daya ini dan statusnya akan menjadi 'terdaftar'

Catatan

Jika parameter gaya tidak diberikan, Anda diminta untuk mengonfirmasi dengan teks 'Apakah Anda ingin menonaktifkan perlindungan untuk kontainer ini'. Silakan abaikan teks ini dan ucapkan "Y" untuk mengonfirmasi. Ini adalah masalah yang sudah diketahui dan kami berupaya menghapus teks dan persyaratan untuk parameter gaya.

Mengambil SQL DB

Setelah pendaftaran selesai, layanan Pencadangan akan dapat mencantumkan semua komponen SQL yang tersedia dalam VM. Untuk melihat semua komponen SQL yang belum dicadangkan ke vault ini gunakan cmdlet PowerShell Get-AzRecoveryServicesBackupProtectableItem

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

Output akan menunjukkan semua komponen SQL yang tidak terlindungi di semua SQL VM yang terdaftar ke vault ini dengan Tipe Item dan ServerName. Anda dapat memfilter lebih lanjut ke SQL VM tertentu dengan melewati parameter '-Container' atau menggunakan kombinasi 'Name' dan 'ServerName' bersama dengan bendera ItemType untuk sampai di item SQL yang unik.

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

Mengonfigurasi pencadangan

Sekarang kita memiliki SQL DB yang diperlukan dan kebijakan yang perlu dicadangkan, kita dapat menggunakan cmdlet Enable-AzRecoveryServicesBackupProtection untuk mengonfigurasikan cadangan untuk SQL DB ini.

Enable-AzRecoveryServicesBackupProtection -ProtectableItem $SQLDB -Policy $NewSQLPolicy

Perintah menunggu hingga konfigurasi cadangan selesai dan mengembalikan output berikut.

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

Mengambil SQL DB baru

Setelah mesin terdaftar, layanan Pencadangan akan mengambil rincian DB yang tersedia. Jika SQL DB atau instans SQL ditambahkan ke mesin yang terdaftar nanti, Anda perlu memicu layanan cadangan secara manual untuk melakukan 'pertanyaan' baru untuk mendapatkan semua DB yang tidak terlindungi (termasuk yang baru ditambahkan) lagi. Gunakan cmdlet PowerShell Initialize-AzRecoveryServicesBackupItem pada SQL VM untuk menjalankan pertanyaan baru. Perintah menunggu sampai operasi selesai. Nantinya gunakan cmdlet PowerShell Get-AzRecoveryServicesBackupProtectableItem untuk mendapatkan daftar komponen SQL terbaru yang tidak terlindungi.

$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

Setelah item relevan yang dapat dilindungi diambil, aktifkan pencadangan seperti yang diinstruksikan di bagian atas. Jika seseorang tidak ingin mendeteksi DB baru secara manual, mereka dapat memilih proteksi otomatis seperti yang dijelaskan di bawah ini.

Fungsikan proteksi otomatis

Anda dapat mengonfigurasi pencadangan sehingga semua DB yang ditambahkan di masa mendatang secara otomatis dilindungi dengan kebijakan tertentu. Untuk mengaktifkan proteksi, gunakan cmdlet PowerShell Enable-AzRecoveryServicesBackupAutoProtection.

Karena instruksinya adalah untuk mencadangkan semua DB di masa depan, operasi dilakukan pada tingkat SQLInstance.

$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

Setelah niat proteksi otomatis diberikan, pemeriksaan ke dalam mesin untuk mengambil DB yang baru ditambahkan terjadi sebagai tugas latar belakang terjadwal setiap 8 jam.

Memulihkan SQL DB

Azure Backup dapat memulihkan database SQL Server yang berjalan di komputer virtual Azure sebagai berikut:

  • Memulihkan ke tanggal atau waktu tertentu (hingga hitungan detik) menggunakan cadangan log. Azure Backup secara otomatis menentukan pencadangan diferensial penuh yang sesuai dan rantai cadangan log yang diperlukan untuk memulihkan berdasarkan waktu yang dipilih.
  • Memulihkan cadangan lengkap atau diferensial tertentu untuk memulihkan ke titik pemulihan tertentu.

Periksa prasyarat yang disebutkan di sini sebelum memulihkan SQL DB.

Peringatan

Karena masalah keamanan yang berkaitan dengan RBAC, kami harus memperkenalkan perubahan mencolok di perintah pemulihan untuk SQL DB melalui Powershell. Harap tingkatkan ke versi Az 6.0.0 atau versi yang lebih tinggi untuk perintah pemulihan yang tepat untuk dikirim melalui Powershell. Perintah PS terbaru disediakan di bawah.

Pertama-tama ambil SQL DB relevan yang dicadangkan menggunakan cmdlet PowerShell Get-AzRecoveryServicesBackupItem.

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

Mengambil waktu pemulihan yang relevan

Seperti yang diuraikan di atas, Anda dapat memulihkan SQL DB yang dicadangkan ke salinan lengkap/diferensial ATAU ke titik waktu log.

Mengambil titik pemulihan yang berbeda

Gunakan Get-AzRecoveryServicesBackupRecoveryPoint untuk mengambil titik pemulihan yang berbeda (Penuh/diferensial) untuk SQL DB yang dicadangkan.

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

Outputnya mirip dengan contoh berikut

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

Gunakan filter 'RecoveryPointId' atau filter array untuk mengambil titik pemulihan yang relevan.

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

Ambil titik pemulihan waktu tertentu

Jika Anda ingin memulihkan DB ke waktu tertentu, gunakan cmdlet PowerShell Get-AzRecoveryServicesBackupRecoveryLogChain. Cmdlet mengembalikan daftar tanggal yang menunjukkan waktu mulai dan berakhir dari rantai log berkelanjutan yang tidak terputus untuk item cadangan SQL tersebut. Waktu tertentu yang diinginkan harus berada dalam kisaran ini.

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

Outputnya akan mirip dengan contoh berikut.

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

Output di atas berarti Anda dapat memulihkan ke waktu tertentu antara waktu mulai dan waktu berakhir yang ditampilkan. Semua waktu dalam UTC. Buat waktu tertentu di PowerShell yang berada dalam rentang yang ditunjukkan di atas.

Catatan

Saat log waktu tertentu dipilih untuk pemulihan, Anda tidak perlu menentukan titik awal, yaitu, cadangan lengkap dari mana DB dipulihkan. Layanan Azure Backup akan mengurus seluruh paket pemulihan, yaitu, cadangan lengkap mana yang harus dipilih, pencadangan log apa yang akan diterapkan, dan sebagainya.

Tentukan konfigurasi pemulihan

Untuk pemulihan SQL DB, skenario pemulihan berikut didukung.

  • Mengambil alih SQL DB yang dicadangkan dengan data dari titik pemulihan lain - OriginalWorkloadRestore
  • Memulihkan SQL DB sebagai DB baru dalam instans SQL yang sama - AlternateWorkloadRestore
  • Memulihkan SQL DB sebagai DB baru dalam instans SQL VM yang lain - AlternateWorkloadRestore
  • Memulihkan SQL DB sebagai file .bak -RestoreAsFiles

Setelah mengambil titik pemulihan yang relevan (berbeda atau log waktu tertentu), gunakan cmdlet PowerShell Get-AzRecoveryServicesBackupWorkloadRecoveryConfig untuk mengambil objek konfigurasi pemulihan sesuai dengan rencana pemulihan yang diinginkan.

Pemulihan beban kerja asli

Untuk mengambil alih DB yang dicadangkan dengan data dari titik pemulihan, cukup tentukan bendera yang tepat dan titik pemulihan yang relevan seperti yang ditunjukkan dalam contoh berikut.

Pemulihan asli dengan titik Pemulihan yang berbeda
$OverwriteWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -OriginalWorkloadRestore -VaultId $testVault.ID
Pemulihan asli dengan log waktu tertentu
$OverwriteWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem  -OriginalWorkloadRestore -VaultId $testVault.ID

Pemulihan beban kerja alternatif

Penting

SQL DB yang dicadangkan dapat dipulihkan sebagai DB baru hanya ke SQLInstance lain, dalam Azure VM 'terdaftar' ke vault ini.

Seperti yang diuraikan di atas, jika target SQLInstance terletak dalam Azure VM lain, pastikan terdaftar ke vault ini dan SQLInstance yang relevan muncul sebagai item yang dapat dilindungi. Dalam dokumen ini, mari kita asumsikan bahwa nama SQLInstance target adalah MSSQLSERVER di dalam VM "Contoso2" lain.

$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

Kemudian cukup lewati titik pemulihan yang relevan, instans SQL target dengan bendera yang benar seperti yang ditunjukkan di bawah dan kontainer target di bawah tempat instans SQL target berada.

Pemulihan alternatif dengan titik Pemulihan yang berbeda
$AnotherInstanceWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Pemulihan alternatif dengan log waktu tertentu
$AnotherInstanceWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
Memulihkan sebagai file

Untuk memulihkan data cadangan sebagai file .bak, bukan database, pilih Pulihkan sebagai File. SQL DB yang dicadangkan dapat dipulihkan ke VM target yang terdaftar ke vault ini.

$TargetContainer= Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName "VM name" -VaultId $vaultID
Pulihkan sebagai file dengan titik Pemulihan yang berbeda
$FileRestoreWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Pulihkan sebagai file dengan log waktu tertentu dari penuh terbaru
$FileRestoreWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
Pulihkan sebagai file dengan log waktu tertentu dari penuh yang ditentukan

Jika Anda ingin memberikan penuh tertentu yang harus digunakan untuk pemulihan, gunakan perintah berikut:

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

Objek konfigurasi titik pemulihan akhir yang diperoleh dari cmdlet PowerShell Get-AzRecoveryServicesBackupWorkloadRecoveryConfig memiliki semua informasi yang relevan untuk pemulihan dan seperti yang ditunjukkan di bawah ini.

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

Anda dapat mengedit bidang nama DB, OverwriteWLIfpresent, NoRecoveryMode, dan targetPhysicalPath yang dipulihkan. Dapatkan detail selengkapnya untuk jalur file target seperti yang ditunjukkan di bawah ini.

$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

Atur properti PowerShell yang relevan sebagai nilai string seperti yang ditunjukkan di bawah ini.

$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

Penting

Pastikan bahwa objek konfigurasi pemulihan akhir memiliki semua nilai yang diperlukan dan tepat karena operasi pemulihan akan didasarkan pada objek konfigurasi.

Catatan

Jika Anda tidak ingin memulihkan seluruh rantai tetapi hanya sebagian file, ikuti langkah-langkah seperti yang didokumentasikan di sini.

Pemulihan beban kerja alternatif ke vault di wilayah sekunder

Penting

Dukungan untuk pemulihan wilayah sekunder untuk SQL dari Powershell tersedia dari Az 6.0.0

Jika Anda telah mengaktifkan pemulihan lintas wilayah, titik pemulihan akan direplikasi juga ke wilayah sekunder yang dipasangkan. Kemudian, Anda dapat mengambil titik pemulihan dan memicu pemulihan ke komputer, yang ada di wilayah yang dipasangkan. Seperti halnya pemulihan normal, mesin target harus didaftarkan ke vault target di wilayah sekunder. Urutan langkah-langkah berikut akan memperjelas proses ujung-ke-ujung.

  • Mengambil item cadangan yang direplikasi ke wilayah sekunder
  • Untuk item tersebut, ambil titik pemulihan (berbeda dan/atau log) yang direplikasi ke wilayah sekunder
  • Kemudian pilih server target, yang didaftarkan ke vault di wilayah sekunder yang dipasangkan
  • Picu pemulihan ke server tersebut dan lacak menggunakan JobId.

Mengambil item cadangan dari wilayah sekunder

Ambil semua item cadangan SQL dari wilayah sekunder dengan perintah biasa tetapi dengan parameter ekstra untuk menunjukkan bahwa item ini harus diambil dari wilayah sekunder.

$secondaryBkpItems = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload  -WorkloadType MSSQL  -VaultId $testVault.ID -UseSecondaryRegion
Mengambil titik pemulihan yang berbeda dari wilayah sekunder

Gunakan Get-AzRecoveryServicesBackupRecoveryPoint untuk mengambil titik pemulihan yang berbeda (Penuh/diferensial) untuk SQL DB yang dicadangkan dan tambahkan parameter untuk menunjukkan bahwa ini adalah titik pemulihan yang diambil dari wilayah sekunder

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

Outputnya mirip dengan contoh berikut

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

Gunakan filter 'RecoveryPointId' atau filter array untuk mengambil titik pemulihan yang relevan.

$FullRPFromSec = Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -RecoveryPointId "6660368097802" -UseSecondaryRegion
Mengambil titik pemulihan log dari wilayah sekunder

Gunakan Get-AzRecoveryServicesBackupRecoveryLogChain PowerShell cmdlet dengan parameter '-UseSecondaryRegion' yang akan mengembalikan waktu mulai dan akhir rangkaian log yang kontinu dan tidak rusak untuk item cadangan SQL dari wilayah sekunder. Waktu tertentu yang diinginkan harus berada dalam kisaran ini.

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

Outputnya akan mirip dengan contoh berikut.

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

Output di atas berarti Anda dapat memulihkan ke waktu tertentu antara waktu mulai dan waktu berakhir yang ditampilkan. Semua waktu dalam UTC. Buat waktu tertentu di PowerShell yang berada dalam rentang yang ditunjukkan di atas.

Mengambil server target dari wilayah sekunder

Dari wilayah sekunder, kita memerlukan vault dan server target yang didaftarkan ke vault tersebut. Setelah kita memiliki kontainer target wilayah sekunder dan instans SQL, kita dapat menggunakan kembali cmdlet yang ada untuk menghasilkan konfigurasi beban kerja pemulihan. Dalam dokumen ini, mari kita asumsikan bahwa nama VM adalah "secondaryVM" dan nama Instans di VM tersebut adalah "MSSQLInstance"

Pertama, kita mengambil vault relevan yang ada di wilayah sekunder lalu dapatkan kontainer terdaftar di dalam vault tersebut.

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

Setelah kontainer terdaftar dipilih, maka kita mengambil instans SQL dalam kontainer tempat database harus dipulihkan. Di sini kami berasumsi bahwa ada 1 instans SQL dalam "secondaryVM" dan kami mengambil instans tersebut.

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

Menyiapkan konfigurasi pemulihan

Seperti yang didokumentasikan di atas untuk pemulihan SQL normal, perintah yang sama dapat digunakan kembali untuk menghasilkan konfigurasi pemulihan yang relevan.

Untuk pemulihan penuh dari wilayah sekunder
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRPFromSec[0] -TargetItem $secSQLInstance -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer
Untuk titik log di pemulihan waktu dari wilayah sekunder
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $secondaryBkpItems[0] -TargetItem $secSQLInstance  -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer

Setelah konfigurasi yang relevan diperoleh untuk pemulihan wilayah primer atau pemulihan wilayah sekunder, perintah pemulihan yang sama dapat digunakan untuk memicu pemulihan dan kemudian dilacak menggunakan jobIDs.

Memulihkan dengan konfigurasi yang relevan

Setelah objek Konfigurasi pemulihan yang relevan diperoleh dan diverifikasi, gunakan cmdlet PowerShell Restore-AzRecoveryServicesBackupItem untuk memulai proses pemulihan.

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

Operasi pemulihan mengembalikan pekerjaan yang akan dilacak.

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

Mengelola cadangan SQL

Pencadangan sesuai permintaan

Setelah pencadangan diaktifkan untuk DB, Anda juga dapat memicu pencadangan sesuai permintaan untuk DB menggunakan cmdlet PowerShell Backup-AzRecoveryServicesBackupItem. Contoh berikut memicu pencadangan penuh hanya salinan pada SQL DB dengan kompresi yang diaktifkan, dan pencadangan penuh hanya salinan harus dipertahankan selama 60 hari.

Catatan

Pencadangan penuh hanya salinan ideal untuk retensi jangka panjang karena tidak memiliki dependensi apa pun pada jenis cadangan lainnya seperti log. Pencadangan 'Penuh' diperlakukan sebagai induk dari pencadangan log berikutnya sehingga retensinya terikat ke kebijakan penyimpanan log. Oleh karena itu, waktu kedaluwarsa yang diberikan pelanggan akan digunakan untuk pencadangan penuh hanya salinan dan bukan untuk pencadangan 'penuh'. Waktu retensi pencadangan penuh diatur secara otomatis selama 45 hari sejak waktu saat ini. Baca dokumentasinya di sini.

$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

Perintah pencadangan sesuai permintaan mengembalikan pekerjaan yang akan dilacak.

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

Jika output hilang atau jika Anda ingin mendapatkan ID Pekerjaan yang relevan, dapatkan daftar pekerjaan dari layanan Azure Backup lalu lacak output dan detailnya.

Mengubah kebijakan untuk item cadangan

Anda dapat mengubah kebijakan item yang dicadangkan dari Policy1 ke Policy2. Untuk beralih kebijakan untuk item yang dicadangkan, ambil kebijakan yang relevan dan item cadangan, lalu gunakan perintah Enable-AzRecoveryServices dengan item cadangan sebagai parameter.

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

Perintah menunggu hingga konfigurasi cadangan selesai dan mengembalikan output berikut.

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

Mengedit kebijakan pencadangan yang ada

Untuk mengedit kebijakan yang ada, gunakan perintah Set-AzRecoveryServicesBackupProtectionPolicy.

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

Periksa pekerjaan pencadangan setelah beberapa waktu berlalu untuk melacak kegagalan. Jika ada, Anda perlu memperbaiki masalah. Kemudian jalankan kembali perintah edit kebijakan dengan parameter FixForInconsistentItems untuk mencoba kembali mengedit kebijakan pada semua item cadangan yang operasinya gagal sebelumnya.

Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -FixForInconsistentItems

Mendaftar ulang SQL VM

Peringatan

Pastikan untuk membaca dokumen ini untuk memahami gejala dan penyebab kegagalan sebelum mencoba registrasi ulang

Untuk memicu registrasi ulang SQL VM, ambil kontainer cadangan yang relevan dan berikan ke cmdlet register.

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

Menghentikan perlindungan

Mempertahankan data

Jika Anda ingin menghentikan perlindungan, Anda dapat menggunakan cmdlet PowerShell Disable-AzRecoveryServicesBackupProtection. Ini akan menghentikan pencadangan terjadwal, tetapi data yang sudah dicadangkan sampai saat ini akan dipertahankan selamanya.

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

Menghapus data cadangan

Untuk sepenuhnya menghapus data cadangan yang disimpan di vault, cukup tambahkan bendera'-RemoveRecoveryPoints'/beralih ke perintah perlindungan 'nonaktifkan'.

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

Menonaktifkan proteksi otomatis

Jika proteksi otomatis dikonfigurasi pada SQLInstance, Anda dapat menonaktifkannya menggunakan cmdlet PowerShell Disable-AzRecoveryServicesBackupAutoProtection.

Temukan instans tempat perlindungan otomatis diaktifkan menggunakan perintah PowerShell berikut.

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

Kemudian pilih nama item dan nama server yang dapat dilindungi yang relevan dari output dan nonaktifkan perlindungan otomatis untuk instans tersebut.

$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

Membatalkan pendaftaran SQL VM

Jika semua DB SQL server tidak lagi dilindungi dan tidak ada data cadangan, Anda dapat membatalkan pendaftaran SQL VM dari vault ini. Hanya dengan begitu Anda dapat melindungi DB ke vault lain. Gunakan cmdlet PowerShell Unregister-AzRecoveryServicesBackupContainer untuk membatalkan pendaftaran SQL VM.

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

Melacak Pekerjaan Azure Backup

Penting untuk diketahui bahwa Azure Backup hanya melacak pekerjaan yang dipicu pengguna di cadangan SQL. Pencadangan terjadwal (termasuk cadangan log) tidak terlihat di portal atau PowerShell. Namun, jika ada pekerjaan terjadwal yang gagal, pemberitahuan cadangan dihasilkan dan ditampilkan di portal. Gunakan Azure Monitor untuk melacak semua pekerjaan terjadwal dan informasi relevan lainnya.

Pengguna dapat melacak operasi sesuai permintaan/yang dipicu pengguna dengan JobID yang dikembalikan dalam output pekerjaan asinkron seperti pencadangan. Gunakan cmdlet PowerShell Get-AzRecoveryServicesBackupJobDetail untuk melacak pekerjaan dan detailnya.

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

Untuk mendapatkan daftar pekerjaan sesuai permintaan dan statusnya dari layanan Azure Backup, gunakan cmdlet PowerShell Get-AzRecoveryServicesBackupJob. Contoh berikut mengembalikan semua pekerjaan SQL yang sedang berlangsung.

Get-AzRecoveryServicesBackupJob -Status InProgress -BackupManagementType AzureWorkload

Untuk membatalkan pekerjaan yang sedang berlangsung, gunakan cmdlet PowerShell Stop-AzRecoveryServicesBackupJob.

Mengelola grup Ketersediaan SQL Always On

Untuk Grup Ketersediaan SQL Always On, pastikan untuk mendaftarkan semua node grup Ketersediaan (AG). Setelah pendaftaran dilakukan untuk semua node, objek grup ketersediaan SQL dibuat secara logis di bawah item yang dapat dilindungi. Database di bawah SQL AG akan terdaftar sebagai 'SQLDatabase'. Node akan muncul sebagai instans mandiri dan database SQL default di bawahnya akan terdaftar sebagai database SQL juga.

Misalnya, mari kita asumsikan SQL AG memiliki dua node: sql-server-0 dan sql-server-1 dan 1 SQL AG DB. Setelah kedua node ini terdaftar, jika Anda mencantumkan item yang dapat dilindungi, node tersebut mencantumkan komponen berikut

  • Objek SQL AG - tipe item yang dapat dilindungi sebagai SQLAvailabilityGroup
  • SQL AG DB - tipe item yang dapat dilindungi sebagai SQLDatabase
  • sql-server-0 - tipe item yang dapat dilindungi sebagai SQLInstance
  • sql-server-1 - tipe item yang dapat dilindungi sebagai SQLInstance
  • Setiap SQL DB default (master, model, msdb) di bawah sql-server-0 - tipe item yang dapat dilindungi sebagai SQLDatabase
  • Setiap SQL DB default (master, model, msdb) di bawah sql-server-1 - tipe item yang dapat dilindungi sebagai SQLDatabase

sql-server-0, sql-server-1 juga akan terdaftar sebagai "AzureVMAppContainer" ketika kontainer cadangan terdaftar.

Cukup ambil database yang relevan untuk mengaktifkan pencadangan dan pencadangan sesuai permintaan serta cmdlet PowerShell pemulihan identik.