مشاركة عبر


استعادة قواعد بيانات PostgreSQL باستخدام Azure PowerShell

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

نظرا لأن قاعدة بيانات PostgreSQL هي قاعدة بيانات النظام الأساسي كخدمة (PaaS)، فإن خيار Original-Location Recovery (OLR) لاستعادته عن طريق استبدال قاعدة البيانات الموجودة (من حيث تم أخذ النسخ الاحتياطية) غير مدعوم. يمكنك الاستعادة من نقطة استرداد لإنشاء قاعدة بيانات جديدة في نفس قاعدة بيانات Azure لخادم PostgreSQL أو في أي خادم PostgreSQL آخر. يسمى هذا الخيار Alternate-Location Recovery (ALR). يساعد ALR على الاحتفاظ بكل من قاعدة البيانات المصدر وقاعدة البيانات المستعادة (الجديدة).

تشير الأمثلة في هذه المقالة إلى مخزن النسخ الاحتياطي الموجود المسمى TestBkpVault ضمن مجموعة testBkpVaultRGالموارد :

$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"

استعادة لإنشاء قاعدة بيانات PostgreSQL جديدة

إعداد الأذونات

يستخدم مخزن النسخ الاحتياطي هوية مدارة للوصول إلى موارد Azure الأخرى. للاستعادة من نسخة احتياطية، تتطلب الهوية المدارة لمخزن النسخ الاحتياطي مجموعة من الأذونات على قاعدة بيانات Azure لخادم PostgreSQL الذي يجب استعادة قاعدة البيانات إليه.

لتعيين الأذونات ذات الصلة للهوية المدارة المعينة من قبل النظام للمخزن على خادم PostgreSQL الهدف، راجع مجموعة الأذونات اللازمة لإجراء نسخ احتياطي لقاعدة بيانات PostgreSQL.

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

إحضار نقطة الاسترداد ذات الصلة

إحضار كافة المثيلات باستخدام Get-AzDataProtectionBackupInstance الأمر وتحديد المثيل ذي الصلة:

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name

يمكنك أيضا استخدام Az.Resourcegraph والأمر Search-AzDataProtectionBackupInstanceInAzGraph للبحث عن نقاط الاسترداد عبر المثيلات في العديد من الخزائن والاشتراكات:

$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured

لتصفية معايير البحث، استخدم قدرات بحث عميل PowerShell:

Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "empdb11"}

بعد تحديد المثيل، أحضر نقطة الاسترداد ذات الصلة:

$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName

إذا كنت بحاجة إلى إحضار نقطة الاسترداد من طبقة الأرشيف، أضف عامل تصفية عميل:

Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName | Where-Object {$_.Property.RecoveryPointDataStoresDetail[0].Type -match "Archive" }

تجهيز طلب الاستعادة

هناك خيارات استعادة مختلفة لقاعدة بيانات PostgreSQL. يمكنك استعادة نقطة الاسترداد كقاعدة بيانات أخرى أو استعادة كملفات. يمكن أن تكون نقطة الاسترداد أيضا على مستوى الأرشيف.

الاستعادة كقاعدة بيانات

إنشاء معرف Azure Resource Manager لقاعدة بيانات PostgreSQL الجديدة التي سيتم إنشاؤها (مع خادم PostgreSQL الهدف الذي تم تعيين الأذونات له، كما هو مفصل سابقا). قم بتضمين اسم قاعدة بيانات PostgreSQL المطلوبة. على سبيل المثال، يمكن تسمية emprestored21 قاعدة بيانات PostgreSQL ضمن خادم PostgreSQL الهدف المسمى targetossserver في مجموعة targetrg الموارد مع اشتراك مختلف:

$targetOssId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21

Initialize-AzDataProtectionRestoreRequest استخدم الأمر لإعداد طلب الاستعادة مع جميع التفاصيل ذات الصلة:

$OssRestoreReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType AlternateLocation -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetResourceId $targetOssId -SecretStoreURI "https://restoreoss-test.vault.azure.net/secrets/dbauth3" -SecretStoreType AzureKeyVault

للحصول على نقطة استرداد مستندة إلى الأرشيف، تحتاج إلى ما يلي:

  1. إعادة الترطيب من مخزن بيانات الأرشيف إلى مخزن بيانات المخزن.
  2. تعديل مخزن البيانات المصدر.
  3. إضافة معلمات أخرى لتحديد أولوية الإماهة.
  4. حدد المدة التي يجب الاحتفاظ بنقطة الاسترداد المعاد ترطيبها في مخزن بيانات المخزن.
  5. استعادة كقاعدة بيانات من نقطة الاسترداد هذه.

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

$OssRestoreFromArchiveReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore ArchiveStore -RestoreLocation $TestBkpVault.Location -RestoreType AlternateLocation -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetResourceId $targetOssId -SecretStoreURI "https://restoreoss-test.vault.azure.net/secrets/dbauth3" -SecretStoreType AzureKeyVault -RehydrationDuration 12 -RehydrationPriority Standard

استرداد كملفات

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

$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"

Initialize-AzDataProtectionRestoreRequest استخدم الأمر لإعداد طلب الاستعادة مع جميع التفاصيل ذات الصلة:

$OssRestoreAsFilesReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768" 

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

$OssRestoreAsFilesFromArchiveReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore ArchiveStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768" -RehydrationDuration "14" -RehydrationPriority Standard

تشغيل الاستعادة

Start-AzDataProtectionBackupInstanceRestore استخدم الأمر لتشغيل الاستعادة مع الطلب الذي أعددته سابقا:

Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $OssRestoreReq

تتبع الوظائف

تعقب المهام باستخدام Get-AzDataProtectionJob الأمر . يمكنك سرد جميع الوظائف وجلب تفاصيل مهمة معينة.

يمكنك أيضا استخدام Az.ResourceGraph لتعقب المهام عبر جميع خزائن النسخ الاحتياطي. Search-AzDataProtectionJobInAzGraph استخدم الأمر للحصول على المهمة ذات الصلة عبر جميع خزائن النسخ الاحتياطي:

$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -Operation OnDemandBackup