ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة كيفية إجراء نسخ احتياطي لقواعد بيانات PostgreSQL في أجهزة Azure الظاهرية باستخدام Azure CLI. يمكنك أيضا تكوين النسخ الاحتياطي باستخدام مدخل Microsoft AzureوAzure PowerShellوواجهة برمجة تطبيقات REST لقواعد بيانات PostgreSQL.
تعرف على المزيد حول السيناريوهات المدعومةوالأسئلة المتداولة للنسخ الاحتياطي لقاعدة بيانات Azure ل PostgreSQL.
إنشاء مخزن للنسخ الاحتياطي
مخزن النسخ الاحتياطي هو كيان تخزين في Azure. يخزن بيانات النسخ الاحتياطي لأحمال العمل الجديدة التي يدعمها Azure Backup، مثل قاعدة بيانات Azure لخوادم PostgreSQL، والكائنات الثنائية كبيرة الحجم في حساب تخزين، وأقراص Azure. تساعد خزائن النسخ الاحتياطي في تنظيم بيانات النسخ الاحتياطي، مع تقليل الحمل الإداري إلى أدنى حد. تستند خزائن النسخ الاحتياطي إلى نموذج Azure Resource Manager من Azure، والذي يوفر قدرات محسنة للمساعدة في تأمين بيانات النسخ الاحتياطي.
قبل إنشاء مخزن النسخ الاحتياطي، اختر تخزين البيانات الزائدة داخل المخزن. ثم تابع إنشاء مخزن النسخ الاحتياطي مع هذا التخزين الاحتياطي والموقع.
في هذه المقالة، يمكنك إنشاء مخزن النسخ الاحتياطي باسم TestBkpVault
، في westus
المنطقة، ضمن مجموعة testBkpVaultRG
الموارد .
az dataprotection vault create
استخدم الأمر لإنشاء مخزن النسخ الاحتياطي.
تعرف على المزيد حول إنشاء مخزن النسخ الاحتياطي.
az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
{
"eTag": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
},
"location": "westus",
"name": "TestBkpVault",
"properties": {
"provisioningState": "Succeeded",
"storageSettings": [
{
"datastoreType": "VaultStore",
"type": "LocallyRedundant"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"tags": null,
"type": "Microsoft.DataProtection/backupVaults"
}
إنشاء سياسة النسخ احتياطي
بعد إنشاء مخزن، يمكنك إنشاء نهج نسخ احتياطي للمساعدة في حماية قواعد بيانات PostgreSQL. يمكنك أيضا إنشاء نهج نسخ احتياطي لقواعد بيانات PostgreSQL باستخدام واجهة برمجة تطبيقات REST.
فهم نهج النسخ الاحتياطي PostgreSQL
في حين أن النسخ الاحتياطي للقرص يقدم نسخا احتياطية متعددة في اليوم والنسخ الاحتياطي للكائن الثنائي كبير الحجم هو نسخة احتياطية مستمرة بدون مشغل، يوفر النسخ الاحتياطي PostgreSQL حماية الأرشيف. يمكن نقل بيانات النسخ الاحتياطي التي يتم إرسالها أولا إلى المخزن إلى مستوى الأرشيف وفقا لقاعدة محددة أو دورة حياة.
في هذا السياق، يمكن أن يساعدك التسلسل الهرمي التالي على فهم كائن نهج النسخ الاحتياطي ل PostgreSQL:
- قاعدة النهج
- قاعدة النسخ الاحتياطي
- معلمة النسخ الاحتياطي
- نوع النسخ الاحتياطي (نسخة احتياطية كاملة لقاعدة البيانات في هذه الحالة)
- مخزن البيانات الأولي (حيث تهبط النسخ الاحتياطية في البداية)
- المشغل (كيفية تشغيل النسخ الاحتياطي)
- جدولة
- معايير وضع العلامات الافتراضية (علامة افتراضية تربط جميع النسخ الاحتياطية المجدولة بقاعدة الاستبقاء)
- معلمة النسخ الاحتياطي
- قاعدة الاستبقاء الافتراضية (قاعدة يتم تطبيقها على جميع النسخ الاحتياطية، بشكل افتراضي، على مخزن البيانات الأولي)
- قاعدة النسخ الاحتياطي
يحدد كائن النهج أنواع النسخ الاحتياطية التي يتم تشغيلها، وكيفية تشغيلها (عبر جدول زمني)، وما يتم وضع علامة عليها به، ومكان وصولها (مخزن البيانات)، ودورة حياة بياناتها في مخزن البيانات.
يشير عنصر PowerShell الافتراضي ل PostgreSQL إلى تشغيل نسخة احتياطية كاملة كل أسبوع. تصل النسخ الاحتياطية إلى المخزن، حيث يتم تخزينها لمدة ثلاثة أشهر.
إذا كنت ترغب في إضافة مستوى الأرشيف إلى النهج، يجب أن تقرر متى سيتم نقل البيانات من المخزن إلى الأرشيف، ومدة بقاء البيانات في الأرشيف، وأي من النسخ الاحتياطية المجدولة يجب وضع علامة عليها على أنها قابلة للأرشفة. يجب عليك إضافة قاعدة استبقاء تحدد دورة حياة بيانات النسخ الاحتياطي من مخزن بيانات المخزن إلى مخزن بيانات الأرشيف. تحدد قاعدة الاستبقاء أيضا المدة التي ستبقى فيها بيانات النسخ الاحتياطي في مخزن بيانات الأرشيف. ثم تحتاج إلى إضافة علامة تحدد النسخ الاحتياطية المجدولة على أنها مؤهلة للأرشفة.
الكائن PowerShell الناتجة كما يلي:
- قاعدة النهج
- قاعدة النسخ الاحتياطي
- معلمة النسخ الاحتياطي
- نوع النسخ الاحتياطي (نسخة احتياطية كاملة لقاعدة البيانات في هذه الحالة)
- مخزن البيانات الأولي (حيث تهبط النسخ الاحتياطية في البداية)
- المشغل (كيفية تشغيل النسخ الاحتياطي)
- جدولة
- معايير وضع العلامات الافتراضية (علامة افتراضية تربط جميع النسخ الاحتياطية المجدولة بقاعدة الاستبقاء)
- معايير وضع علامات جديدة لقاعدة الاستبقاء الجديدة بنفس الاسم
- معلمة النسخ الاحتياطي
- قاعدة الاستبقاء الافتراضية (قاعدة يتم تطبيقها على جميع النسخ الاحتياطية، بشكل افتراضي، على مخزن البيانات الأولي)
- قاعدة استبقاء جديدة
- دورة الحياة
- مخزن بيانات المصدر
- الفترة الزمنية للحذف في مخزن البيانات المصدر
- نسخ إلى مخزن البيانات الهدف
- دورة الحياة
- قاعدة النسخ الاحتياطي
استرداد قالب النهج
لفهم المكونات الداخلية لنهج النسخ الاحتياطي للنسخ الاحتياطي لقاعدة بيانات PostgreSQL، قم باسترداد قالب النهج باستخدام az dataprotection backup-policy get-default-policy-template
الأمر . يقوم هذا الأمر بإرجاع قالب النهج الافتراضي لنوع مصدر بيانات. استخدم قالب النهج هذا لإنشاء نهج جديد.
az dataprotection backup-policy get-default-policy-template --datasource-type AzureDatabaseForPostgreSQL
{
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/servers/databases"
],
"name": "OssPolicy1",
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"isDefault": true,
"tagInfo": {
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
}
يتكون قالب النهج من مشغل (الذي يقرر ما يؤدي إلى تشغيل النسخ الاحتياطي) ودورة حياة (التي تقرر متى يتم حذف النسخة الاحتياطية أو نسخها أو نقلها). في النسخ الاحتياطي لقاعدة بيانات PostgreSQL، القيمة الافتراضية للمشغل هي مشغل أسبوعي مجدول (نسخة احتياطية واحدة كل سبعة أيام). يتم الاحتفاظ بكل نسخة احتياطية لمدة ثلاثة أشهر.
مشغل مجدول
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
دورة الحياة الافتراضية لقاعدة الاحتجاز
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
تعديل قالب النهج
في Azure PowerShell، يمكنك استخدام الكائنات كمواقع مرحلية لتنفيذ جميع التعديلات. في Azure CLI، يجب عليك استخدام الملفات، لأنه لا توجد فكرة عن الكائنات. يجب إعادة توجيه كل عملية تحرير إلى ملف جديد، حيث تتم قراءة المحتوى من ملف الإدخال وإعادة توجيهه إلى ملف الإخراج. يمكنك لاحقا إعادة تسمية الملف كما هو مطلوب أثناء استخدامه في برنامج نصي.
تعديل الجدول
يقدم قالب النهج الافتراضي نسخة احتياطية مرة واحدة في الأسبوع. يمكنك تعديل الجدول الزمني للنسخ الاحتياطي ليحدث عدة أيام في الأسبوع. لتعديل الجدول، استخدم az dataprotection backup-policy trigger set
الأمر .
يعدل المثال التالي النسخة الاحتياطية الأسبوعية إلى الأحد والأربعاء والجمعة من كل أسبوع. يشير صفيف تاريخ الجدولة إلى التواريخ، ويتم أخذ أيام الأسبوع لتلك التواريخ كأيام من أيام الأسبوع. تحتاج أيضاً إلى تحديد أن هذه الجداول ينبغي أن تتكرر كل أسبوع. لذلك، الفاصل الزمني للجدول الزمني هو 1
ونوع الفاصل الزمني هو Weekly
.
az dataprotection backup-policy trigger create-schedule --interval-type Weekly --interval-count 1 --schedule-days 2021-08-15T22:00:00 2021-08-18T22:00:00 2021-08-20T22:00:00
[
"R/2021-08-15T22:00:00+00:00/P1W",
"R/2021-08-18T22:00:00+00:00/P1W",
"R/2021-08-20T22:00:00+00:00/P1W"
]
az dataprotection backup-policy trigger set --policy .\OSSPolicy.json --schedule R/2021-08-15T22:00:00+00:00/P1W R/2021-08-18T22:00:00+00:00/P1W R/2021-08-20T22:00:00+00:00/P1W > EditedOSSPolicy.json
إضافة قاعدة استبقاء جديدة
إذا كنت تريد إضافة حماية الأرشيف، فأنت بحاجة إلى تعديل قالب النهج.
يحتوي القالب الافتراضي على دورة حياة لمتجير البيانات الأولي ضمن قاعدة الاستبقاء الافتراضية. في هذا السيناريو، تنص القاعدة على حذف بيانات النسخ الاحتياطي بعد ثلاثة أشهر. يجب إضافة قاعدة استبقاء جديدة تحدد وقت نقل البيانات إلى مخزن بيانات الأرشيف. أي، يتم نسخ بيانات النسخ الاحتياطي أولا إلى مخزن بيانات الأرشيف، ثم يتم حذفها في مخزن بيانات المخزن.
أيضا، يجب أن تحدد القاعدة المدة للاحتفاظ بالبيانات في مخزن بيانات الأرشيف. لإنشاء دورات حياة جديدة، استخدم az dataprotection backup-policy retention-rule create-lifecycle
الأمر . لربط دورات الحياة هذه بقواعد جديدة أو موجودة، استخدم az dataprotection backup-policy retention-rule set
الأمر .
ينشئ المثال التالي قاعدة استبقاء جديدة تسمى Monthly
. في هذه القاعدة، يتم الاحتفاظ بأول نسخة احتياطية ناجحة من كل شهر في المخزن لمدة ستة أشهر، ونقلها إلى مستوى الأرشيف، والاحتفاظ بها في طبقة الأرشيف لمدة 24 شهرا.
az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 6 --retention-duration-type Months --source-datastore VaultStore --target-datastore ArchiveStore --copy-option CopyOnExpiryOption > VaultToArchiveLifeCycle.JSON
az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 24 --retention-duration-type Months -source-datastore ArchiveStore > OnArchiveLifeCycle.JSON
az dataprotection backup-policy retention-rule set --lifecycles .\VaultToArchiveLifeCycle.JSON .\OnArchiveLifeCycle.JSON --name Monthly --policy .\EditedOSSPolicy.JSON > AddedRetentionRulePolicy.JSON
إضافة علامة والمعايير ذات الصلة
بعد إنشاء قاعدة استبقاء، يجب عليك إنشاء علامة مقابلة في Trigger
خاصية نهج النسخ الاحتياطي. لإنشاء معايير وضع علامات جديدة، استخدم az dataprotection backup-policy tag create-absolute-criteria
الأمر . لتحديث العلامة الموجودة أو إنشاء علامة جديدة، استخدم az dataprotection backup-policy tag set
الأمر .
ينشئ المثال التالي علامة جديدة مع المعايير، وهي أول نسخة احتياطية ناجحة من الشهر. العلامة لها نفس اسم قاعدة استبقاء البيانات المقابلة ليتم تطبيقها.
في هذا المثال، تسمى Monthly
معايير العلامة :
az dataprotection backup-policy tag create-absolute-criteria --absolute-criteria FirstOfMonth > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON
إذا كان الجدول الزمني هو عدة نسخ احتياطية في الأسبوع (كل يوم أحد وأربعاء وخميس، كما هو محدد في المثال السابق) وتريد أرشفة النسخ الاحتياطية الأحد والجمعة، يمكنك تغيير معايير وضع العلامات باستخدام az dataprotection backup-policy tag create-generic-criteria
الأمر :
az dataprotection backup-policy tag create-generic-criteria --days-of-week Sunday Friday > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON
إنشاء نهج النسخ احتياطي PostgreSQL جديد
بعد تعديل القالب وفقا للمتطلبات، استخدم az dataprotection backup-policy create
الأمر لإنشاء نهج باستخدام القالب المعدل:
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
تكوين النسخ الاحتياطي
بعد إنشاء المخزن والنهج، تحتاج إلى النظر في ثلاث نقاط هامة لإجراء نسخ احتياطي لقاعدة بيانات PostgreSQL في قاعدة بيانات Azure ل PostgreSQL.
فهم الكيانات الرئيسية
قاعدة بيانات PostgreSQL التي سيتم نسخها احتياطيا
إحضار معرف Resource Manager لقاعدة بيانات PostgreSQL ليتم نسخها احتياطيا. يعمل هذا المعرف كمعرف لقاعدة البيانات. يستخدم المثال التالي قاعدة بيانات باسم empdb11
ضمن خادم testposgresql
PostgreSQL ، الموجودة في مجموعة ossrg
الموارد ضمن اشتراك مختلف. يستخدم المثال Bash.
ossId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Key Vault
لا تخزن خدمة Azure Backup اسم المستخدم وكلمة المرور للاتصال بقاعدة بيانات PostgreSQL. بدلا من ذلك، يقوم مسؤول النسخ الاحتياطي بزرع المفاتيح في مخزن المفاتيح. ثم تصل خدمة Azure Backup إلى مخزن المفاتيح، وتقرأ المفاتيح، وتدخل إلى قاعدة البيانات.
يستخدم المثال التالي Bash. لاحظ المعرف السري للمفتاح ذي الصلة.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
مخزن النسخ الاحتياطي
يجب أن يتصل مخزن النسخ الاحتياطي بخادم PostgreSQL ثم الوصول إلى قاعدة البيانات عبر المفاتيح الموجودة في مخزن المفاتيح. لذلك، يتطلب مخزن النسخ الاحتياطي الوصول إلى خادم PostgreSQL وخزنة المفاتيح. يتم منح حق الوصول إلى الهوية المدارة لمخزن النسخ الاحتياطي.
اقرأ عن الأذونات التي يجب منحها للهوية المدارة لمخزن النسخ الاحتياطي على خادم PostgreSQL وخزنة المفاتيح التي تخزن المفاتيح في قاعدة البيانات.
إعداد الطلب
بعد تعيين جميع الأذونات ذات الصلة، قم بإجراء تكوين النسخ الاحتياطي في خطوتين:
- قم بإعداد الطلب باستخدام المخزن والنهج وقاعدة بيانات PostgreSQL ذات الصلة في
az dataprotection backup-instance initialize
الأمر. - أرسل الطلب لنسخ قاعدة البيانات احتياطيا
az dataprotection backup-instance create
باستخدام الأمر .
az dataprotection backup-instance initialize --datasource-id $ossId --datasource-type AzureDatabaseForPostgreSQL -l <vault-location> --policy-id <policy_arm_id> --secret-store-type AzureKeyVault --secret-store-uri $keyURI > OSSBkpInstance.JSON
az dataprotection backup-instance create --resource-group testBkpVaultRG --vault-name TestBkpVault TestBkpvault --backup-instance .\OSSBkpInstance.JSON
ثم قم بإجراء النسخ الاحتياطي حسب الطلب
يجب عليك تحديد قاعدة استبقاء أثناء تشغيل النسخ الاحتياطي. لعرض قواعد الاستبقاء في نهج، استعرض ملف JSON للنهج. في المثال التالي، هناك قاعدتان للاحتفاظ بالأسماء Default
و Monthly
. تستخدم Monthly
هذه المقالة قاعدة النسخ الاحتياطي عند الطلب.
az dataprotection backup-policy show -g ossdemorg --vault-name ossdemovault-1 --subscription e3d2d341-4ddb-4c5d-9121-69b7e719485e --name osspol5
{
"id": "/subscriptions/e3d2d341-4ddb-4c5d-9121-69b7e719485e/resourceGroups/ossdemorg/providers/Microsoft.DataProtection/backupVaults/ossdemovault-1/backupPolicies/osspol5",
"name": "osspol5",
"properties": {
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/servers/databases"
],
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-04T20:00:00+00:00/P1W",
"R/2020-04-01T20:00:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"criteria": [
{
"absoluteCriteria": [
"FirstOfMonth"
],
"daysOfMonth": null,
"daysOfTheWeek": null,
"monthsOfYear": null,
"objectType": "ScheduleBasedBackupCriteria",
"scheduleTimes": null,
"weeksOfTheMonth": null
}
],
"isDefault": false,
"tagInfo": {
"eTag": null,
"id": "Monthly_",
"tagName": "Monthly"
},
"taggingPriority": 15
},
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": false,
"lifecycles": [
{
"deleteAfter": {
"duration": "P10Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Monthly",
"objectType": "AzureRetentionRule"
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P1Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
},
"resourceGroup": "ossdemorg",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}
لتشغيل نسخة احتياطية عند الطلب، استخدم az dataprotection backup-instance adhoc-backup
الأمر :
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
تتبع الوظائف
تعقب جميع المهام باستخدام az dataprotection job list
الأمر . يمكنك سرد جميع الوظائف وجلب تفاصيل مهمة معينة.
يمكنك أيضا استخدام Az.ResourceGraph
لتعقب جميع المهام عبر جميع خزائن النسخ الاحتياطي.
az dataprotection job list-from-resourcegraph
استخدم الأمر لجلب المهام ذات الصلة عبر خزائن النسخ الاحتياطي:
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed
المحتوى ذو الصلة
- استعادة قواعد بيانات PostgreSQL باستخدام Azure CLI.
- استعادة قاعدة بيانات PostgreSQL باستخدام مدخل Microsoft AzureوAzure PowerShellوواجهة برمجة تطبيقات REST.