مشاركة عبر


النسخ الاحتياطي لقواعد بيانات PostgreSQL باستخدام Azure PowerShell

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

تعرف على المزيد حول السيناريوهات المدعومةوالأسئلة المتداولة للنسخ الاحتياطي لقواعد بيانات PostgreSQL في قاعدة بيانات Azure ل PostgreSQL.

إنشاء مخزن للنسخ الاحتياطي

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

قبل إنشاء مخزن النسخ الاحتياطي، اختر تخزين البيانات الزائدة داخل المخزن. ثم تابع إنشاء مخزن النسخ الاحتياطي مع هذا التخزين الاحتياطي والموقع.

في هذه المقالة، يمكنك إنشاء مخزن النسخ الاحتياطي المسمى TestBkpVault، في westus المنطقة، ضمن مجموعة testBkpVaultRGالموارد . New-AzDataProtectionBackupVault استخدم الأمر لإنشاء مخزن النسخ الاحتياطي. تعرف على المزيد حول إنشاء مخزن النسخ الاحتياطي.

$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant/GeoRedundant -DataStoreType VaultStore
New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
$TestBKPVault | fl
ETag                :
Id                  : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault
Identity            : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppIdentityDetails
IdentityPrincipalId :
IdentityTenantId    :
IdentityType        :
Location            : westus
Name                : TestBkpVault
ProvisioningState   : Succeeded
StorageSetting      : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.StorageSetting}
SystemData          : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SystemData
Tag                 : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppTrackedResourceTags
Type                : Microsoft.DataProtection/backupVaults

إنشاء سياسة النسخ احتياطي

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

فهم نهج النسخ الاحتياطي PostgreSQL

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

في هذا السياق، يمكن أن يساعدك التسلسل الهرمي التالي على فهم كائن نهج النسخ الاحتياطي ل PostgreSQL:

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

يحدد كائن النهج أنواع النسخ الاحتياطية التي يتم تشغيلها، وكيفية تشغيلها (عبر جدول زمني)، وما يتم وضع علامة عليها به، ومكان وصولها (مخزن البيانات)، ودورة حياة بياناتها في مخزن البيانات.

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

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

الكائن PowerShell الناتجة كما يلي:

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

استرداد قالب النهج

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

$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureDatabaseForPostgreSQL
$policyDefn | fl


DatasourceType : {Microsoft.DBforPostgreSQL/servers/databases}
ObjectType     : BackupPolicy
PolicyRule     : {BackupWeekly, Default}

$policyDefn.PolicyRule | fl


BackupParameter           : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType       : DataStoreInfoBase
DataStoreType             : VaultStore
Name                      : BackupWeekly
ObjectType                : AzureBackupRule
Trigger                   : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.ScheduleBasedTriggerCo
                            ntext
TriggerObjectType         : ScheduleBasedTriggerContext

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.SourceLifeCycle}
Name       : Default
ObjectType : AzureRetentionRule

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

 $policyDefn.PolicyRule[0].Trigger | fl


ObjectType                    : ScheduleBasedTriggerContext
ScheduleRepeatingTimeInterval : {R/2021-08-22T02:00:00+00:00/P1W}
ScheduleTimeZone              : UTC
TaggingCriterion              : {Default}
$policyDefn.PolicyRule[1].Lifecycle | fl


DeleteAfterDuration        : P3M
DeleteAfterObjectType      : AbsoluteDeleteOption
SourceDataStoreObjectType  : DataStoreInfoBase
SourceDataStoreType        : VaultStore
TargetDataStoreCopySetting : {}

تعديل قالب النهج

تعديل الجدول

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

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

$schDates = @(
  (
    (Get-Date -Year 2021 -Month 08 -Day 15 -Hour 22 -Minute 0 -Second 0)
  ), 
  (
    (Get-Date -Year 2021 -Month 08 -Day 18 -Hour 22 -Minute 0 -Second 0)
  ),
  (
    (Get-Date -Year 2021 -Month 08 -Day 20 -Hour 22 -Minute 0 -Second 0)
  )
)
$trigger = New-AzDataProtectionPolicyTriggerScheduleClientObject -ScheduleDays $schDates -IntervalType Weekly -IntervalCount 1 
Edit-AzDataProtectionPolicyTriggerClientObject -Schedule $trigger -Policy $policyDefn   

إضافة قاعدة استبقاء جديدة

إذا كنت تريد إضافة حماية الأرشيف، فأنت بحاجة إلى تعديل قالب النهج.

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

أيضا، يجب أن تحدد القاعدة المدة للاحتفاظ بالبيانات في مخزن بيانات الأرشيف. لإنشاء دورات حياة جديدة، استخدم New-AzDataProtectionRetentionLifeCycleClientObject الأمر . لربط دورات الحياة هذه بقواعد جديدة أو موجودة، استخدم Edit-AzDataProtectionPolicyRetentionRuleClientObject الأمر .

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

$VaultToArchiveLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore VaultStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 6 -TargetDataStore ArchiveStore -CopyOption CopyOnExpiryOption

$OnArchiveLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore ArchiveStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 24

Edit-AzDataProtectionPolicyRetentionRuleClientObject -Policy $policyDefn -Name Monthly -LifeCycles $VaultToArchiveLifeCycle, $OnArchiveLifeCycleLifeCycle -IsDefault $false

إضافة علامة والمعايير ذات الصلة

بعد إنشاء قاعدة استبقاء، يجب عليك إنشاء علامة مقابلة في Trigger خاصية نهج النسخ الاحتياطي. لإنشاء معايير وضع علامات جديدة، استخدم New-AzDataProtectionPolicyTagCriteriaClientObject الأمر . لتحديث العلامة الموجودة أو إنشاء علامة جديدة، استخدم الأمر Edit-AzDataProtectionPolicyTagClientObject .

ينشئ المثال التالي علامة جديدة مع المعايير، وهي أول نسخة احتياطية ناجحة من الشهر. العلامة لها نفس اسم قاعدة استبقاء البيانات المقابلة ليتم تطبيقها.

في هذا المثال، تسمى Monthlyمعايير العلامة :

$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -AbsoluteCriteria FirstOfMonth
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria

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

$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -DaysOfWeek @("Sunday", "Friday")
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria

إنشاء نهج النسخ احتياطي PostgreSQL جديد

بعد تعديل القالب وفقا للمتطلبات، استخدم New-AzDataProtectionBackupPolicy الأمر لإنشاء نهج باستخدام القالب المعدل:

$polOss = New-AzDataProtectionBackupPolicy -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Name "TestOSSPolicy" -Policy $policyDefn

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

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

فهم الكيانات الرئيسية

قاعدة بيانات PostgreSQL التي سيتم نسخها احتياطيا

إحضار معرف Resource Manager لقاعدة بيانات PostgreSQL ليتم نسخها احتياطيا. يعمل هذا المعرف كمعرف لقاعدة البيانات. يستخدم المثال التالي قاعدة بيانات باسم empdb11 ضمن خادم testposgresqlPostgreSQL ، الموجودة في مجموعة ossrg الموارد ضمن اشتراك مختلف:

$ossId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"

Key Vault

لا تخزن خدمة Azure Backup اسم المستخدم وكلمة المرور للاتصال بقاعدة بيانات PostgreSQL. بدلا من ذلك، يقوم مسؤول النسخ الاحتياطي بزرع المفاتيح في مخزن المفاتيح. ثم تصل خدمة Azure Backup إلى مخزن المفاتيح، وتقرأ المفاتيح، وتدخل إلى قاعدة البيانات. لاحظ المعرف السري للمفتاح ذي الصلة.

$keyURI = "https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"

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

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

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

إعداد الطلب

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

  1. قم بإعداد الطلب باستخدام المخزن والنهج وقاعدة بيانات PostgreSQL ذات الصلة في Initialize-AzDataProtectionBackupInstance الأمر.
  2. أرسل الطلب لنسخ قاعدة البيانات احتياطيا New-AzDataProtectionBackupInstance باستخدام الأمر .
$instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDatabaseForPostgreSQL -DatasourceLocation $TestBkpvault.Location -PolicyId $polOss[0].Id -DatasourceId $ossId -SecretStoreURI $keyURI -SecretStoreType AzureKeyVault
ConvertTo-Json -InputObject $instance -Depth 4 
New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance

Name                        Type                                         BackupInstanceName
----                        ----                                          ------------------
ossrg-empdb11       Microsoft.DataProtection/backupVaults/backupInstances ossrg-empdb11

ثم قم بإجراء النسخ الاحتياطي حسب الطلب

إحضار مثيل النسخ الاحتياطي ذي الصلة الذي تحتاج إلى تشغيل نسخة احتياطية Get-AzDataProtectionBackupInstance عليه باستخدام الأمر :

$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"

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

$ossPol.PolicyRule | fl


BackupParameter           : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType       : DataStoreInfoBase
DataStoreType             : OperationalStore
Name                      : BackupHourly
ObjectType                : AzureBackupRule
Trigger                   : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
TriggerObjectType         : ScheduleBasedTriggerContext

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle}
Name       : Default
ObjectType : AzureRetentionRule

لتشغيل نسخة احتياطية عند الطلب، استخدم Backup-AzDataProtectionBackupInstanceAdhoc الأمر :

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"

تتبع الوظائف

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

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

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