مشاركة عبر


عمل نسخة احتياطية من قواعد بيانات SQL واستعادتها في Azure VMs باستخدام PowerShell

توضح هذه المقالة كيفية استخدام Azure PowerShell النسخ الاحتياطي واسترداد DB SQL داخل VM Azure باستخدام Azure النسخ الاحتياطيخزنة خدمات الاسترداد.

توضح هذه المقالة كيفية:

  • إعداد PowerShell وتسجيل موفر خدمات استرداد Azure.
  • أنشئ مخزن خدمات الاسترداد.
  • تكوين النسخ الاحتياطي ل DB SQL داخل VM Azure.
  • بدء مهمة النسخ الاحتياطي.
  • استعادة نسخة احتياطية SQL DB.
  • مراقبة النسخ الاحتياطي واستعادة الوظائف.

قبل أن تبدأ

التسلسل الهرمي لكائن خدمات الاسترداد

يتم تلخيص التسلسل الهرمي للكائنات في الرسم التخطيطي التالي.

التسلسل الهرمي لكائن خدمات الاسترداد

مراجعة Az.RecoveryServicesCmdletالمرجع في مكتبة Azure.

إعداد وتثبيت

إعداد PowerShell كما يلي:

  1. قم بتنزيل أحدث إصدار من Azure PowerShell. الحد الأدنى المطلوب هو الإصدار 1.5.0.

  2. البحث عن Cmdlets PowerShell النسخ الاحتياطي Azure مع هذا الأمر:

    Get-Command *azrecoveryservices*
    
  3. راجع الأسماء المستعارة و cmdlets للنسخ الاحتياطي Azure وخزنة خدمات الاسترداد. إليك مثال على ما قد تراه. انها ليست قائمة كاملة من cmdlets.

    قائمة cmdlets خدمات الاسترداد

  4. تسجيل الدخول إلى حسابك Azure مع Connect-AzAccount.

  5. في صفحة الويب التي تظهر، ستتم مطالبتك بإدخال بيانات اعتماد حسابك.

    • بدلا من ذلك، يمكنك تضمين بيانات اعتماد الحساب كمعلمة في Connect-AzAccount مع cmdlet-Credential.
    • إذا كنت شريك CSP يعمل لدى مستأجر، حدد العميل كمستأجر، باستخدام اسم المجال الأساسي للمستأجر أو المستأجر الخاص به. مثال على ذلك هو Connect-AzAccount-المستأجر fabrikam.com.
  6. إقران الاشتراك الذي تريد استخدامه مع الحساب، لأن الحساب قد يكون له عدة اشتراكات.

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  7. إذا كنت تستخدم Azure Backup للمرة الأولى، فيجب عليك استخدام الأمر cmdlet Register-AzResourceProvider لتسجيل موفر خدمة استرداد Azure مع اشتراكك.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  8. تحقق من تسجيل الموفرين بنجاح:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  9. في إخراج الأمر، تحقق من أن حالة التسجيل تتغير إلى مسجل. إذا لم يكن كذلك، قم بتشغيل السجل-AzResourceProvider cmdlet مرة أخرى.

أنشئ مخزن خدمات الاسترداد

اتبع هذه الخطوات لإنشاء خازنة خدمات الاسترداد.

مخزن خدمات الاسترداد هو أحد موارد Azure Resource Manager، لذلك تحتاج إلى وضعه ضمن مجموعة الموارد. يمكنك استخدام مجموعة موارد موجودة، أو يمكنك إنشاء مجموعة موارد باستخدام New-AzResourceGroup cmdlet. عند إنشاء مجموعة موارد جديدة، حدد الاسم والموقع لمجموعة الموارد.

  1. يتم وضع مخزن في مجموعة موارد. إذا لم يكن لديك مجموعة موارد حالية، فأنشئ مجموعة جديدة باستخدام New-AzResourceGroup. في هذا المثال، نحن نقوم بإنشاء مجموعة موارد جديدة في منطقة غرب الولايات المتحدة.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. استخدم الأمر cmdlet New-AzRecoveryServicesVault لإنشاء المخزن الجديد. حدد نفس الموقع للخزنة كما تم استخدامه لمجموعة الموارد.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. حدد نوع التكرار لاستخدامه لتخزين المخزن.

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

عرض الخزائن في الاشتراك

لعرض كافة الخزائن في الاشتراك، استخدمGet-AzRecoveryServicesVault.

Get-AzRecoveryServicesVault

الإخراج مشابه للنص التالي. يتم توفير مجموعة الموارد المقترنة والموقع.

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

تعيين سياق الخزنة

تخزين كائن الخزنة في متغير، وتعيين سياق الخزنة.

  • تتطلب العديد من أوامر cmdlets في Azure Backup كائن مخزن خدمات الاسترداد كإدخال، لذلك من الملائم تخزين كائن المخزن في متغير.
  • سياق المخزن هو نوع البيانات المحمية في الخزنة. قم بتعيين Set-AzRecoveryServicesVaultContext. بمجرد تعيين السياق، فإنه ينطبق على جميع cmdlets اللاحقة.

يعين المثال التالي سياق المخزن ل testvault

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

إحضار معرف المخزن

نخطط لإهمال إعداد سياق الخزنة وفقا لإرشادات Azure PowerShell. بدلا من ذلك، يمكنك تخزين أو إحضار معرف الخزنة وتمريره إلى الأوامر ذات الصلة، كما يلي:

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

تكوين نهج النسخ احتياطي

يحدد نهج النسخ الاحتياطي جدول النسخ الاحتياطية، والمدة التي يجب الاحتفاظ بها نقاط الاسترداد الاحتياطية:

  • يرتبط نهج النسخ الاحتياطي بنهج احتفاظ واحد على الأقل. يحدد نهج الاستبقاء المدة التي يتم فيها الاحتفاظ بنقطة الاسترداد قبل حذفها.
  • عرض الاحتفاظ الافتراضي بنهج النسخ الاحتياطي باستخدامGet-AzRecoveryServicesBackupRetentionPolicyObject.
  • عرض الاحتفاظ الافتراضي بنهج النسخ الاحتياطي باستخدامGet-AzRecoveryServicesBackupRetentionPolicyObject.
  • يمكنك استخدام cmdlet New-AzRecoveryServicesBackupProtectionPolicy لإنشاء نهج النسخ احتياطي جديد. إدخال الجدولة وكائنات نهج الاستبقاء.

بشكل افتراضي، يتم تحديد وقت البدء في كائن نهج الجدول. استخدم المثال التالي لتغيير وقت البدء إلى وقت البدء المطلوب. يجب أن يكون وقت البدء المطلوب بتوقيت عالمي متفق عليه UTC أيضاً. يفترض المثال التالي أن وقت البدء المطلوب هو 01:00 صباحًا بالتوقيت العالمي المنسق للنسخ الاحتياطية اليومية.

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

هام

تحتاج إلى توفير وقت البدء في مضاعفات 30 دقيقة فقط. في المثال أعلاه، يمكن أن يكون فقط "01:00:00" أو "02:30:00". لا يمكن أن يكون وقت البدء "01:15:00".

المثال التالي بتخزين نهج الجدولة ونهج الاستبقاء في المتغيرات. ثم يستخدم هذه المتغيرات كمعلمات لسياسة جديدة (NewSQLPolicy). NewSQLPolicy يأخذ نسخة احتياطية "كامل" يوميا، ويحتفظ بها لمدة 180 يوما ويأخذ نسخة احتياطية سجل كل 2 ساعة

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

الإخراج مشابه للنص التالي.

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

تمكين النسخ الاحتياطي

تسجيل SQL VM

بالنسبة إلى النسخ الاحتياطية من Azure VM ومشاركات ملفات Azure، يمكن لخدمة النسخ الاحتياطي الاتصال بموارد Azure Resource Manager هذه وجلب التفاصيل ذات الصلة. نظرًا لأن SQL هو تطبيق داخل Azure VM، فإن خدمة النسخ الاحتياطي تحتاج إلى إذن للوصول إلى التطبيق وجلب التفاصيل الضرورية. للقيام بذلك، تحتاج إلى تسجيلAzure VM الذي يحتوي على تطبيق SQL مع مخزن خدمات الاسترداد. بمجرد تسجيل جهاز SQL VM مع مخزن، يمكنك حماية SQL DBs إلى ذلك مخزن فقط. استخدام السجل-AzRecoveryServicesBackupContainer PowerShell cmdlet لتسجيل VM.

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

سيقوم الأمر بإرجاع 'حاوية النسخ الاحتياطي' لهذا المورد و ستكون الحالة 'مسجلة'

إشعار

إذا لم يتم إعطاء معلمة القوة، يطلب منك التأكيد بنص "هل تريد تعطيل الحماية لهذه الحاوية". يرجى تجاهل هذا النص وقول "Y" لتأكيد. هذه مشكلة معروفة ونحن نعمل على إزالة النص ومتطلبات معلمة القوة.

جلب SQL DBs

بمجرد الانتهاء من التسجيل، ستكون خدمة النسخ الاحتياطي قادرة على سرد جميع مكونات SQL المتوفرة داخل VM. لعرض جميع مكونات SQL لم يتم بعد احتياطيا لهذا المخزن استخدام الحصول على AzRecoveryServicesBackupProtectableItem PowerShell cmdlet

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

سيعرض الإخراج جميع مكونات SQL غير المحمية عبر جميع أجهزة SQL الافتراضية المسجلة في هذا المخزن بنوع العنصر واسم الخادم. يمكنك أيضًا التصفية إلى SQL VM معين عن طريق تمرير المعلمة "-Container" أو استخدام مزيج من "الاسم" و "اسم الخادم" جنبًا إلى جنب مع علامة ItemType للوصول إلى عنصر SQL فريد.

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

تكوين النسخ الاحتياطي

الآن بعد أن أصبح لدينا قاعدة بيانات SQL المطلوبة والسياسة التي يجب أن يتم نسخها احتياطيًا بها، يمكننا استخدام Enable-AzRecoveryServicesBackupProtection لتكوين نسخة احتياطية لقاعدة بيانات SQL هذه.

Enable-AzRecoveryServicesBackupProtection -ProtectableItem $SQLDB -Policy $NewSQLPolicy

ينتظر الأمر حتى يكتمل تكوين النسخ الاحتياطي ويرجع الإخراج التالي.

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

جلب DBs SQL جديدة

بمجرد تسجيل الجهاز، ستجلب خدمة النسخ الاحتياطي تفاصيل DBs المتوفرة بعد ذلك. إذا تمت إضافة SQL DBs أو SQL مثيلات إلى الجهاز المسجل لاحقا، تحتاج إلى تشغيل خدمة النسخ الاحتياطي يدويا لإجراء "استعلام" جديد للحصول على كافة DBs غير المحمية (بما في ذلك تلك المضافة حديثا) مرة أخرى. استخدم cmdlet تهيئة-AzRecoveryServicesBackupItem PowerShell على VM SQL لإجراء استعلام جديد. ينتظر الأمر حتى يتم إكمال العملية. في وقت لاحق استخدام AzRecoveryServicesBackupProtectableItem PowerShell cmdlet للحصول على قائمة من أحدث المكونات SQL غير المحمية.

$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

بمجرد جلب العناصر القابلة للحماية ذات الصلة، قم بتمكين النسخ الاحتياطية كما هو منشد في القسم أعلاه. إذا كان أحد لا يريد الكشف يدويا DBs جديدة، فإنها يمكن أن تختار ل autoprotection كما هو موضح أدناه.

تمكين الحماية التلقائية

يمكنك تكوين النسخ الاحتياطي بحيث تتم حماية كافة DBs المضافة في المستقبل تلقائيا باستخدام نهج معين. لتمكين الحماية التلقائية، استخدم تمكين-AzRecoveryServicesBackupAutoProtection PowerShell cmdlet.

نظرًا لأن التعليمات هي إجراء نسخ احتياطي لجميع قواعد البيانات المستقبلية، تتم العملية على مستوى 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

بمجرد تحديد هدف الحماية التلقائية، يتم إجراء الاستفسار عن الجهاز لجلب قواعد البيانات المضافة حديثًا كمهمة مجدولة في الخلفية كل 8 ساعات.

استعادة SQL DBs

يمكن لـ Azure Backup استعادة قواعد بيانات SQL Server التي تعمل على أجهزة Azure الظاهرية على النحو التالي:

  • قم بالاستعادة إلى تاريخ أو وقت محدد (إلى الثاني) باستخدام النسخ الاحتياطي للسجل. يحدد Azure Backup النسخ الاحتياطي التفاضلي الكامل المناسب وسلسلة نسخ السجل الاحتياطية المطلوبة للاستعادة بناءً على الوقت المحدد تلقائياً.
  • قم باستعادة نسخة احتياطية كاملة أو تفاضلية محددة لاستعادة نقطة استرداد محددة.

تحقق من المتطلبات الأساسية المذكورة هنا قبل استعادة SQL DBs.

تحذير

نظراً لوجود مشكلة أمنية تتعلق بـ RBAC، كان علينا إدخال تغيير جذري في أوامر الاستعادة لـ SQL DB عبر PowerShell. الرجاء الترقية إلى إصدار Az 6.0.0 أو إصدار أعلى ليتم إرسال أوامر الاستعادة المناسبة عبر PowerShell. يتم توفير أحدث أوامر PS أدناه.

جلب أول ما يصل ذات الصلة احتياطيا SQL DB باستخدام الحصول على AzRecoveryServicesBackupItem PowerShell cmdlet.

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

إحضار وقت الاستعادة ذي الصلة

كما هو موضح أعلاه، يمكنك استعادة النسخ الاحتياطي SQL DB إلى نسخة كاملة/تفاضلية OR إلى نقطة تسجيل في الوقت المناسب.

جلب نقاط استرداد مميزة

استخدم الحصول على-AzRecoveryServicesBackupRecoveryPoint لجلب نقاط استرداد مميزة (كاملة/تفاضلية) للحصول على نسخة احتياطية SQL DB.

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

يتشابه الإخراج مع المثال التالي

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

استخدم عامل التصفية "RecoveryPointId" أو مرشح مصفوفة لجلب نقطة الاسترداد ذات الصلة.

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

جلب نقطة في الوقت المناسب نقطة الاسترداد

إذا كنت ترغب في استعادة DB إلى نقطة معينة في الوقت المناسب، استخدم الحصول على-AzRecoveryServicesBackupRecoveryLogChain PowerShell cmdlet. إرجاع cmdlet قائمة التواريخ التي تمثل أوقات البدء والانتهاء سلسلة سجل مستمرة غير منقطع لهذا العنصر النسخ الاحتياطي SQL. يجب أن تكون نقطة في الوقت المطلوب ضمن هذا النطاق.

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

ما يخرج مشابه لما يلي.

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

الإخراج أعلاه يعني أنه يمكنك استعادة إلى أي نقطة في الوقت بين وقت البدء المعروض ووقت الانتهاء. الأوقات بتوقيت UTC. أنشئ أي نقطة زمنية في PowerShell ضمن النطاق الموضح أعلاه.

إشعار

عند تحديد نقطة تسجيل في الوقت المحدد للاستعادة، لا تحتاج إلى تحديد نقطة البداية، أي النسخ الاحتياطي الكامل الذي يتم استعادة DB منه. ستهتم خدمة Azure Backup بخطة الاسترداد بالكامل، أي النسخ الاحتياطي الكامل الذي يجب اختياره، والنسخ الاحتياطية للسجل المطلوب تطبيقها، وما إلى ذلك.

تحديد تكوين الاسترداد

لاستعادة SQL DB، يتم دعم سيناريوهات الاستعادة التالية.

  • تجاوز النسخ الاحتياطي SQL DB مع بيانات من نقطة استرداد أخرى - OriginalWorkloadRestore
  • استعادة DB SQL ك DB جديد في نفس المثيل SQL - AlternateWorkloadRestore
  • استعادة DB SQL ك DB جديدة في مثيل SQL آخر في آخر VM SQL - AlternateWorkloadRestore
  • استعادة DB SQL كملفات .bak -RestoreAsFiles

بعد جلب نقطة الاسترداد ذات الصلة (مميزة أو تسجيل نقطة في الوقت المناسب)، استخدمالحصول على-AzRecoveryServicesBackupWorkloadRecoveryConfig PowerShell cmdlet لجلب كائن تكوين الاسترداد وفقا لخطة الاسترداد المطلوبة.

استعادة حمل العمل الأصلي

لتجاوز DB الاحتياطية مع البيانات من نقطة الاسترداد، فقط حدد العلامة الصحيحة ونقطة الاسترداد ذات الصلة كما هو موضح في المثال التالي (الأمثلة).

استعادة أصلية مع نقطة استرداد مميزة
$OverwriteWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -OriginalWorkloadRestore -VaultId $testVault.ID
الاستعادة الأصلية مع تسجيل نقطة في الوقت المناسب
$OverwriteWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem  -OriginalWorkloadRestore -VaultId $testVault.ID

استعادة حمل العمل البديل

هام

يمكن استعادة نسخة احتياطية SQL DB ك DB جديد إلى SQLInstance آخر فقط، فيAzure VM "مسجلة" لهذا المخزن.

كما هو موضح أعلاه، إذا كان الهدف SQLInstance يقع ضمن آخر Azure VM،تأكد من أنها مسجلة في هذا المخزن وSQLInstance ذات الصلة يظهر كعنصر قابل للحماية. في هذا المستند، لنفترض أن اسم SQLInstance الهدف هو MSSQLSERVER داخلVM "Contoso2آخر.

$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

ثم مجرد تمرير نقطة الاسترداد ذات الصلة، والهدف SQL مثيل مع العلم الصحيح كما هو مبين أدناه والحاوية الهدف الذي يوجد تحته مثيل SQL الهدف.

استعادة أصلية مع نقطة استرداد مميزة
$AnotherInstanceWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
الاستعادة البديلة مع نقطة الدخول في السجل
$AnotherInstanceWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $bkpItem -TargetItem $TargetInstance -AlternateWorkloadRestore -VaultId $testVault.ID -TargetContainer $TargetContainer
استرداد كملفات

لاستعادة بيانات النسخة الاحتياطية كملفات .bak بدلاً من قاعدة بيانات، اختر الاختيارRestore as Files. يمكن استعادة SQL DB الاحتياطية إلى أي جهاز VM مستهدف مسجل في هذا المخزن.

$TargetContainer= Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer -FriendlyName "VM name" -VaultId $vaultID
استعادة كملفات مع نقطة الاسترداد متميزة
$FileRestoreWithFullConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRP -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
استعادة كملفات مع تسجيل نقطة في الوقت المناسب من احدث كامل
$FileRestoreWithLogConfig = Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -TargetContainer $TargetContainer -RestoreAsFiles -FilePath "<>" -VaultId $testVault.ID
استعادة كملفات مع تسجيل نقطة في الوقت المناسب من المحدد الكامل

إذا كنت تريد إعطاء الكامل المحدد الذي يجب استخدامه لاستعادة استخدم الأمر التالي:

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

كائن تكوين نقطة الاسترداد النهائية التي تم الحصول عليها من الحصول على-AzRecoveryServicesBackupWorkloadConfig PowerShell cmdlet لديه كافة المعلومات ذات الصلة لاستعادة وكما هو موضح أدناه.

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

يمكنك تحرير حقول اسم قاعدة البيانات المستعادة، و OverwriteWLIfpresent، و NoRecoveryMode، و targetPhysicalPath. احصل على مزيد من التفاصيل عن مسارات الملفات المستهدفة كما هو موضح أدناه.

$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

تعيين خصائص PowerShell ذات الصلة كقيم سلسلة كما هو موضح أدناه.

$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

هام

تأكد من أن كائن تكوين الاسترداد النهائي يحتوي على كافة القيم الضرورية والمناسبة منذ عملية الاستعادة سيتم استنادا إلى كائن التكوين.

إشعار

إذا لم تُرد استعادة السلسلة بأكملها ولكن مجموعة فرعية فقط من الملفات، فاتبع الخطوات كما هو موثق هنا.

استعادة حمل العمل البديل إلى المخزن في المنطقة الثانوية

هام

يتوفر دعم عمليات استعادة المنطقة الثانوية لـ SQL من PowerShell من Az 6.0.0

إذا قمت بتمكين استعادة المنطقة المشتركة، نسخ نقاط الاسترداد نسخا متماثلا إلى المنطقة الثانوية المقترنة أيضا. بعد ذلك، يمكنك جلب نقاط الاسترداد هذه وتشغيل استعادة الجهاز، الموجود في تلك المنطقة المقترنة. كما هو الحال مع الاستعادة العادية، يجب تسجيل الجهاز الهدف في الخزنة المستهدفة في المنطقة الثانوية. يجب أن يوضح التسلسل التالي للخطوات العملية الشاملة.

  • قم بإحضار عناصر النسخ الاحتياطي التي تم نسخها إلى المنطقة الثانوية
  • للحصول على عنصر مثل إحضار نقاط الاسترداد (مميزة و/أو سجلات) التي يتم نسخها نسخا متماثلا إلى المنطقة الثانوية
  • ثم اختر الملقم الهدف، مسجلة في خزنة داخل المنطقة الثانوية المقترنة
  • تشغيل الاستعادة إلى ذلك الملقم وتعقبه باستخدام JobId.

جلب عناصر النسخ الاحتياطي من المنطقة الثانوية

جلب كافة العناصر SQL النسخ الاحتياطي من المنطقة الثانوية مع الأمر المعتاد ولكن مع معلمة إضافية للإشارة إلى أن هذه العناصر يجب أن يتم إحضارها من المنطقة الثانوية.

$secondaryBkpItems = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload  -WorkloadType MSSQL  -VaultId $testVault.ID -UseSecondaryRegion
جلب نقاط استرداد مميزة من المنطقة الثانوية

استخدام الحصول على-AzRecoveryServicesBackupRecoveryPoint لجلب نقاط استرداد مميزة (كاملة/تفاضلية) للحصول على نسخة احتياطية SQL DB وإضافة معلمة للإشارة إلى أن هذه هي نقاط الاسترداد التي تم جلبها من المنطقة الثانوية

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

يتشابه الإخراج مع المثال التالي

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

استخدم عامل التصفية "RecoveryPointId" أو مرشح مصفوفة لجلب نقطة الاسترداد ذات الصلة.

$FullRPFromSec = Get-AzRecoveryServicesBackupRecoveryPoint -Item $secondaryBkpItems[0] -VaultId $testVault.ID -RecoveryPointId "6660368097802" -UseSecondaryRegion
جلب نقاط استرداد مميزة من المنطقة الثانوية

استخدام الحصول على AzRecoveryServicesBackupRecoveryLogChain PowerShell cmdlet مع المعلمة '-UseSecondaryRegion' والتي ستعيد أوقات البدء والانتهاء لسلسلة سجل مستمرة غير منقطعة لعنصر النسخ الاحتياطي لـ SQL من المنطقة الثانوية. يجب أن تكون نقطة في الوقت المطلوب ضمن هذا النطاق.

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

ما يخرج مشابه لما يلي.

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

الإخراج أعلاه يعني أنه يمكنك استعادة إلى أي نقطة في الوقت بين وقت البدء المعروض ووقت الانتهاء. الأوقات بتوقيت UTC. أنشئ أي نقطة زمنية في PowerShell ضمن النطاق الموضح أعلاه.

جلب الملقم الهدف من المنطقة الثانوية

من المنطقة الثانوية، نحتاج إلى المخزن و ملقم هدف مسجل في ذلك المخزن. بمجرد أن نحصل على حاوية الهدف للمنطقة الثانوية ومثيل SQL، يمكننا إعادة استخدام أوامر cmdlets الحالية لإنشاء تكوين استعادة حمل العمل. في هذا المستند، لنفترض أن اسم الجهاز الظاهري هو "secondaryVM" واسم المثيل داخل هذا الجهاز الظاهري هو "MSSQLInstance"

أولا، نجلب المخزن ذو الصلة الموجود في المنطقة الثانوية ثم نحصل على الحاويات المسجلة داخل ذلك المخزن.

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

بمجرد اختيار الحاوية المسجلة، ثم نجلب مثيلات SQL داخل الحاوية التي يجب استعادة قاعدة البيانات إليها. هنا نفترض أن هناك مثيل SQL واحد داخل "secondaryVM" ونجلب هذا المثيل.

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

تحضير تكوين الاسترداد

كما هو موثق أعلاه لاستعادة SQL العادية، يمكن إعادة استخدام نفس الأمر لإنشاء تكوين الاسترداد ذي الصلة.

لاستعادة كاملة من المنطقة الثانوية
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -RecoveryPoint $FullRPFromSec[0] -TargetItem $secSQLInstance -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer
لتسجيل نقطة في الوقت المستعيد من المنطقة الثانوية
Get-AzRecoveryServicesBackupWorkloadRecoveryConfig -PointInTime $PointInTime -Item $secondaryBkpItems[0] -TargetItem $secSQLInstance  -AlternateWorkloadRestore -VaultId $vault.ID -TargetContainer $secContainer

بمجرد الحصول على التكوين ذي الصلة لاستعادة المنطقة الأساسية أو استعادة المنطقة الثانوية، يمكن استخدام أمر الاستعادة نفسه لبدء عمليات الاستعادة وتعقبها لاحقًا باستخدام jobIDs.

استعادة مع التكوين المناسب

بمجرد الحصول على كائن تكوين الاسترداد ذي الصلة والتحقق منه، استخدم RestoreAzRecoveryServicesBackupItem PowerShell cmdlet لبدء عملية الاستعادة.

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

ترجع عملية الاستعادة مهمة ليتم تعقبها.

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

إدارة النسخ الاحتياطية SQL

النسخ الاحتياطي عند الطلب

بمجرد تمكين النسخ الاحتياطي لقاعدة البيانات، يمكنك أيضًا تشغيل نسخة احتياطية عند الطلب لقاعدة البيانات باستخدام Backup-AzRecoveryServicesBackupItemPowerShell cmdlet. في المثال التالي، يتم تشغيل نسخ احتياطي كامل للنسخ فقط على قاعدة بيانات SQL مع تمكين الضغط، و يجب الاحتفاظ بالنسخ الاحتياطي الكامل للنسخ فقط لمدة 60 يوماً.

إشعار

النسخ الاحتياطية الكاملة للنسخ فقط مثالية للاحتفاظ طويل الأجل، فليست لها أية تبعيات على أنواع النسخ الاحتياطي الأخرى مثل السجلات. يتم التعامل مع النسخ الاحتياطي "الكامل" كأصل للنسخ الاحتياطية اللاحقة في السجلات، ومن ثمّ يرتبط الاحتفاظ به بالاحتفاظ بالسجلات في النهج. لذلك يتم احترام وقت انتهاء الصلاحية الذي يقدمه العميل للنسخ الاحتياطي الكامل للنسخ فقط، وليس للنسخ الاحتياطية "الكاملة". يتم تعيين وقت الاحتفاظ بالنسخ الاحتياطي الكامل تلقائياً لمدة 45 يوماً من الوقت الحالي. كما يتم توثيقه هنا.

$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

إرجاع الأمر النسخ الاحتياطي عند الطلب مهمة لتعقبها.

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

إذا تم فقدان الإخراج أو إذا كنت ترغب في الحصول على معرف الوظيفة ذات الصلة، الحصول على قائمة المهام من خدمة النسخ الاحتياطي Azure ثم تعقبه وتفاصيله.

تغيير نهج عناصر النسخ الاحتياطي

يمكنك تغيير نهج العنصر الذي تم نسخه احتياطيا من Policy1 إلى Policy2. لتبديل النُهج لعنصر احتياطي، قم بإحضار النهج ذات الصلة ثم قم بالنسخ الاحتياطي للعنصر واستخدم الأمر Enable-AzRecoveryServices مع عنصر النسخ الاحتياطي كمعلمة.

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

ينتظر الأمر حتى يكتمل تكوين النسخ الاحتياطي ويرجع الإخراج التالي.

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

تحديد نهج النسخ الاحتياطي الموجود

لتحرير نهج موجود، استخدم الأمر Set-AzRecoveryServicesBackupProtectionPolicy.

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

تحقق من مهام النسخ الاحتياطي بعد مرور بعض الوقت لتعقب أية إخفاقات. إذا كان هناك، تحتاج إلى إصلاح المشكلات. ثم أعد تشغيل الأمر نهج التحرير مع المعلمةFixForInconsistentItems لإعادة محاولة تحرير النهج على كافة عناصر النسخ الاحتياطي التي فشلت العملية في وقت سابق.

Set-AzRecoveryServicesBackupProtectionPolicy -Policy $Pol -FixForInconsistentItems

إعادة تسجيل SQL VMs

تحذير

تأكد من قراءة هذا المستند لفهم أعراض الفشل وأسبابه قبل محاولة إعادة التسجيل

لتشغيل إعادة تسجيل VM SQL، جلب حاوية النسخ الاحتياطي ذات الصلة وتمريرها إلى cmdlet السجل.

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

توقف عن الحماية

الاحتفاظ بالبيانات

إذا كنت ترغب في إيقاف الحماية، يمكنك استخدام الأمر Cmdlet لـ Disable-AzRecoveryServicesBackupProtection لـ PowerShell. سيؤدي هذا إلى إيقاف النسخ الاحتياطي المجدول ولكن يتم الاحتفاظ البيانات احتياطيا حتى الآن إلى الأبد.

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

حذف بيانات النسخ الاحتياطي

من أجل إزالة البيانات الاحتياطية المخزنة في المخزن تماما، ما علينا سوى إضافة علامة "-RemoveRecoveryPoints"/التبديل إلى أمر الحماية "تعطيل".

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

تعطيل الحماية التلقائية

إذا تم تكوين الحماية التلقائية على SQLInstance، فيمكنك تعطيلها باستخدام Disable-AzRecoveryServicesBackupAutoProtection PowerShell cmdlet.

ابحث عن الحالات التي تم فيها تمكين الحماية التلقائية باستخدام أمر PowerShell التالي.

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

ثم اختر اسم العنصر القابل للحماية ذات الصلة واسم الخادم من الإخراج وعطّل الحماية التلقائية لتلك المثيلات.

$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

إذا لم تعد كافة DBs ملقم SQL محمية ولم تكن هناك بيانات احتياطية، فيمكنك إلغاء تسجيل الجهاز الظاهري SQL من هذا القبو. عندها فقط يمكنك حماية DBs إلى مخزن آخر. استخدام السجل-AzRecoveryServicesBackupContainer PowerShell cmdlet لإلغاء تسجيل SQL VM.

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

تتبع وظائف Azure Backup

من المهم ملاحظة أن Azure Backup يتتبع فقط الوظائف التي قام المستخدم بتشغيلها في النسخ الاحتياطي SQL. النسخ الاحتياطي المجدول (بما في ذلك النسخ الاحتياطية للسجل) غير مرئية في المدخل أو PowerShell. ومع ذلك، إذا فشلت أية مهام مجدولة، يتم إنشاء تنبيه النسخ احتياطي وعرضه في المدخل. استخدم Azure Monitor لتعقب كافة المهام المجدولة والمعلومات الأخرى ذات الصلة.

يمكن للمستخدمين تعقب العمليات التي تم تشغيلها عند الطلب/المستخدم باستخدام JobID الذي تم إرجاعه في إخراج المهام غير المتزامنة مثل النسخ الاحتياطي. استخدام الحصول على AzRecoveryServicesBackupJobDetail PowerShell cmdlet لتتبع المهمة وتفاصيلها.

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

للحصول على قائمة المهام عند الطلب وحالاتها من خدمة النسخ الاحتياطي Azure، استخدم الحصول على AzRecoveryServicesBackupJob PowerShell cmdlet. يقوم المثال التالي بإرجاع كافة المهام SQL قيد التقدم.

Get-AzRecoveryServicesBackupJob -Status InProgress -BackupManagementType AzureWorkload

لإلغاء مهمة قيد التقدم، استخدم إيقاف-AzRecoveryServicesBackupJob PowerShell cmdlet.

إدارة SQL دائما على مجموعات التوفر

للحصول على SQL دائما على مجموعات التوفر، تأكد من تسجيل كافة العقد من مجموعة التوفر (AG). بمجرد أن يتم التسجيل لكافة العقد، يتم إنشاء كائن مجموعة توفر SQL منطقيا تحت عناصر قابلة للحماية. سيتم سرد قواعد البيانات تحت SQL AG باسم "SQLDatabase". ستظهر العقد كمثيلات مستقلة وسيتم سرد قواعد البيانات SQL الافتراضية تحتها ك قواعد بيانات SQL أيضا.

على سبيل المثال، لنفترض أن SQL AG يحتوي على عقدتين: SQL-server-0 و SQL-server-1 و 1 SQL AG DB. بمجرد تسجيل كلا العقدتين، إذا قمت بإدراج العناصر القابلة للحماية،فإنه يسرد المكونات التالية

  • كائن AG SQL - نوع عنصر قابل للحماية ك SQLAvailabilityGroup
  • A SQL AG DB - نوع عنصر قابل للحماية كما SQLDatabase
  • SQL-ملقم-0 - نوع عنصر قابل للحماية كما SQLInstance
  • SQL-ملقم-1 - نوع عنصر قابل للحماية كما SQLInstance
  • أي SQL DBs (رئيسي، نموذج، msdb) افتراضي تحت SQL-ملقم-0 - نوع عنصر قابل للحماية كما SQLDatabase
  • أي SQL DBs (رئيسي، نموذج، msdb) افتراضي تحت SQL-ملقم-1 - نوع عنصر قابل للحماية كما SQLDatabase

SQL-server-0، SQL-server-1 سيتم أيضا سرد "AzureVMAppContainer" عند سرد حاويات النسخ الاحتياطي.

مجرد جلب قاعدة البيانات ذات الصلة لتمكين النسخ الاحتياطي والنسخ الاحتياطي عند الطلب واستعادةCmdlets PowerShell متطابقة.