النسخ الاحتياطي لقواعد البيانات واستعادتها في Azure SQL Edge

تم بناء Azure SQL Edge على أحدث إصدارات محرك قاعدة بيانات Microsoft SQL. يوفر إمكانات قاعدة بيانات النسخ الاحتياطي والاستعادة المماثلة لتلك المتوفرة في SQL Server على Linux و SQL Server التي تعمل في حاويات. يوفر مكون النسخ الاحتياطي والاستعادة حماية أساسية لحماية البيانات المخزنة في قواعد بيانات Azure SQL Edge.

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

لقراءة المزيد حول سبب أهمية النسخ الاحتياطية، راجع النسخ الاحتياطي واستعادة قواعد بيانات SQL Server.

يتيح لك Azure SQL Edge إجراء النسخ الاحتياطي والاستعادة من كل من التخزين المحلي ونقاط Azure. لمزيد من المعلومات، راجع النسخ الاحتياطي والاستعادة SQL Server باستخدام مساحة تخزين Azure Blobوالنسخ الاحتياطي SQL Server إلى عنوان URL.

نسخ قاعدة بيانات احتياطيا في Azure SQL Edge

يدعم Azure SQL Edge نفس أنواع النسخ الاحتياطي مثل SQL Server. للحصول على قائمة كاملة، راجع نظرة عامة على النسخ الاحتياطي.

هام

تستخدم قواعد البيانات التي تم إنشاؤها في Azure SQL Edge نموذج الاسترداد البسيط بشكل افتراضي. على هذا النحو ، لا يمكنك إجراء نسخ احتياطية للسجل على قواعد البيانات هذه. إذا كنت بحاجة إلى القيام بذلك، فستحتاج إلى مسؤول لتغيير نموذج استرداد قاعدة البيانات إلى نموذج الاسترداد الكامل. للحصول على قائمة كاملة بنماذج الاسترداد التي يدعمها SQL Server، راجع نظرة عامة على نموذج الاسترداد.

النسخ الاحتياطي إلى القرص المحلي

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

  1. إنشاء مجلد للنسخ الاحتياطية. قم بتشغيل هذا الأمر على المضيف حيث يتم تشغيل حاوية Azure SQL Edge. في الأمر التالي، استبدل <AzureSQLEdge_Container_Name> باسم حاوية Azure SQL Edge في عملية النشر.

    sudo docker exec -it <AzureSQLEdge_Container_Name> mkdir /var/opt/mssql/backup
    
  2. الاتصال إلى مثيل Azure SQL Edge باستخدام SQL Server Management Studio (SSMS)، أو باستخدام Azure Data Studio. BACKUP DATABASE قم بتشغيل الأمر لأخذ النسخة الاحتياطية من قاعدة بيانات المستخدم الخاصة بك. في المثال التالي ، أنت تأخذ النسخة الاحتياطية من قاعدة بيانات IronOreSilicaPrediction .

    BACKUP DATABASE [IronOreSilicaPrediction] 
    TO DISK = N'/var/opt/mssql/backup/IronOrePredictDB.bak' 
    WITH NOFORMAT, NOINIT,  NAME = N'IronOreSilicaPrediction-Full Database Backup', 
    SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10
    GO
    
  3. بعد تشغيل الأمر، إذا نجحت النسخة الاحتياطية لقاعدة البيانات، فسترى رسائل مشابهة لما يلي في قسم النتائج في SSMS أو Azure Data Studio.

    10 percent processed.
    20 percent processed.
    30 percent processed.
    40 percent processed.
    50 percent processed.
    60 percent processed.
    70 percent processed.
    80 percent processed.
    90 percent processed.
    100 percent processed.
    Processed 51648 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction' on file 1.
    Processed 2 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction_log' on file 1.
    BACKUP DATABASE successfully processed 51650 pages in 3.588 seconds (112.461 MB/sec).
    
    Completion time: 2020-04-09T23:54:48.4957691-07:00
    

النسخ الاحتياطي إلى عنوان ويب

يدعم Azure SQL Edge النسخ الاحتياطية لكل من نقاط الصفحة ونقاط الكتلة. لمزيد من المعلومات، راجع النسخ الاحتياطي لحظر blob مقابل blob page. في المثال التالي ، يتم نسخ قاعدة البيانات IronOreSilicaPrediction احتياطيا إلى كتلة كتلة.

  1. لتكوين النسخ الاحتياطية لحظر النقط، قم أولا بإنشاء رمز مميز لتوقيع الوصول المشترك (SAS) يمكنك استخدامه لإنشاء بيانات اعتماد SQL Server على Azure SQL Edge. يقوم البرنامج النصي بإنشاء SAS مقترن بنهج وصول مخزن. لمزيد من المعلومات، راجع توقيعات الوصول المشترك، الجزء 1: فهم نموذج SAS. يكتب البرنامج النصي أيضا الأمر T-SQL المطلوب لإنشاء بيانات الاعتماد على SQL Server. يفترض البرنامج النصي التالي أن لديك بالفعل اشتراك Azure مع حساب تخزين وحاوية تخزين للنسخ الاحتياطية.

    # Define global variables for the script  
    $subscriptionName='<your subscription name>'   # the name of subscription name you will use
    $resourcegroupName = '<your resource group name>' # the name of resource group you will use
    $storageAccountName= '<your storage account name>' # the storage account name you will use for backups
    $containerName= '<your storage container name>'  # the storage container name to which you will attach the SAS policy with its SAS token  
    $policyName = 'SASPolicy' # the name of the SAS policy  
    
    # adds an authenticated Azure account for use in the session
    Login-AzAccount
    
    # set the tenant, subscription and environment for use in the rest of
    Select-AzSubscription -Subscription $subscriptionName
    
    # Generate the SAS token
    $sa = Get-AzStorageAccount -ResourceGroupName $resourcegroupName -Name $storageAccountName 
    $storagekey = Get-AzStorageAccountKey -ResourceGroupName $resourcegroupName -Name $storageAccountName 
    $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storagekey[0].Value
    $cbc = Get-AzStorageContainer -Name $containerName -Context $storageContext
    $policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission "rwld"
    $sas = New-AzStorageContainerSASToken -Policy $policyName -Context $storageContext -Container $containerName
    Write-Host 'Shared Access Signature= '$($sas.Substring(1))''
    
    # Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature  
    Write-Host 'Credential T-SQL'  
    $tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.CloudBlobContainer.Uri.AbsoluteUri,$sas.Substring(1)
    $tSql | clip  
    Write-Host $tSql
    

    بعد تشغيل البرنامج النصي بنجاح، انسخ CREATE CREDENTIAL الأمر إلى أداة استعلام. ثم اتصل بمثيل SQL Server، وقم بتشغيل الأمر لإنشاء بيانات الاعتماد باستخدام SAS.

  2. الاتصال إلى مثيل Azure SQL Edge باستخدام SSMS أو Azure Data Studio، وقم بإنشاء بيانات الاعتماد باستخدام الأمر من الخطوة السابقة. تأكد من استبدال الأمر بالإخراج CREATE CREDENTIAL الفعلي من الخطوة السابقة.

    IF NOT EXISTS  
    (SELECT * FROM sys.credentials
    WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>')  
    CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
       WITH IDENTITY = 'SHARED ACCESS SIGNATURE',  
       SECRET = '<SAS_TOKEN>';
    
  3. يأخذ الأمر التالي نسخة احتياطية من IronOreSilicaPrediction إلى حاوية تخزين Azure.

    BACKUP DATABASE IronOreSilicaPrediction
    TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/IronOreSilicaPrediction.bak'
    With MAXTRANSFERSIZE = 4194304,BLOCKSIZE=65536;  
    GO
    

استعادة قاعدة بيانات في Azure SQL Edge

في Azure SQL Edge، يمكنك الاستعادة من قرص محلي أو موقع شبكة أو حساب تخزين Azure Blob. لمزيد من المعلومات حول الاستعادة والاسترداد في SQL Server، راجع نظرة عامة على الاستعادة والاسترداد. للحصول على نظرة عامة حول نموذج الاسترداد البسيط في SQL Server، راجع استعادة قاعدة البيانات الكاملة (نموذج الاسترداد البسيط).

هام

لا يمكن استعادة قواعد البيانات التي تم إنشاؤها في Azure SQL Edge على مثيل من Microsoft SQL Server أو Azure SQL. بالإضافة إلى ذلك، يمكن استعادة قاعدة بيانات تم إنشاؤها على Microsoft SQL Server أو Azure SQL على Azure SQL Edge، شريطة ألا تحتوي قاعدة البيانات على أي من الميزات التي لا يدعمها Azure SQL Edge.

استعادة من قرص محلي

يستخدم هذا المثال النسخة الاحتياطية IronOreSilicaPrediction التي قمت بإنشائها في المثال السابق. الآن ، ستقوم باستعادتها كقاعدة بيانات جديدة باسم مختلف.

  1. إذا لم يكن ملف النسخ الاحتياطي لقاعدة البيانات موجودا بالفعل في الحاوية، فيمكنك استخدام الأمر التالي لنسخ الملف إلى الحاوية. يفترض المثال التالي أن ملف النسخ الاحتياطي موجود على المضيف المحلي، ويتم نسخه إلى المجلد /var/opt/mssql/backup إلى حاوية Azure SQL Edge المسماة sql1.

    sudo docker cp IronOrePredictDB.bak sql1:/var/opt/mssql/backup
    
  2. الاتصال إلى مثيل Azure SQL Edge باستخدام SSMS أو Azure Data Studio لتشغيل أمر الاستعادة. في المثال التالي، تتم استعادة IronOrePredictDB .bak لإنشاء قاعدة بيانات جديدة، IronOreSilicaPrediction_2.

    Restore FilelistOnly from disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    
    Restore Database IronOreSilicaPrediction_2
    From disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.mdf',
    MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.ldf'
    
  3. بعد تشغيل أمر الاستعادة، إذا نجحت عملية الاستعادة، فسترى رسائل مشابهة لما يلي في نافذة الإخراج.

    Processed 51648 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction' on file 1.
    Processed 2 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction_log' on file 1.
    RESTORE DATABASE successfully processed 51650 pages in 6.543 seconds (61.670 MB/sec).
    
    Completion time: 2020-04-13T23:49:21.1600986-07:00
    

الاستعادة من عنوان URL

يدعم Azure SQL Edge أيضا استعادة قاعدة بيانات من حساب Azure Storage. يمكنك الاستعادة إما من نقاط الكتلة أو النسخ الاحتياطية لبقع الصفحة. في المثال التالي، تتم استعادة ملف النسخ الاحتياطي لقاعدة بيانات IronOreSilicaPrediction_2020_04_16.bak على نقطة كتلة لإنشاء قاعدة البيانات IronOreSilicaPrediction_3.

RESTORE DATABASE IronOreSilicaPrediction_3
FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/IronOreSilicaPrediction_2020_04_16.bak'
WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.mdf', 
MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.ldf',
STATS = 10;