Udostępnij za pośrednictwem


Tworzenie kopii zapasowych i przywracanie baz danych w usłudze Azure SQL Edge

Ważne

Usługa Azure SQL Edge zostanie wycofana 30 września 2025 r. Aby uzyskać więcej informacji i opcji migracji, zobacz powiadomienie o wycofaniu.

Uwaga

Usługa Azure SQL Edge nie obsługuje już platformy ARM64.

Usługa Azure SQL Edge jest oparta na najnowszych wersjach aparatu bazy danych Microsoft SQL Database. Zapewnia podobne możliwości tworzenia kopii zapasowych i przywracania bazy danych do programu SQL Server w systemie Linux i programie SQL Server uruchomionym w kontenerach. Składnik tworzenia i przywracania kopii zapasowych zapewnia podstawowe zabezpieczenia ochrony danych przechowywanych w bazach danych usługi Azure SQL Edge.

Aby zminimalizować ryzyko katastrofanej utraty danych, należy okresowo tworzyć kopie zapasowe baz danych, aby regularnie zachowywać modyfikacje danych. Dobrze zaplanowana strategia tworzenia i przywracania kopii zapasowych pomaga chronić bazy danych przed utratą danych spowodowaną różnymi awariami. Przetestuj strategię, przywracając zestaw kopii zapasowych, a następnie odzyskując bazę danych, aby przygotować się do skutecznego reagowania na awarię.

Aby dowiedzieć się więcej o tym, dlaczego kopie zapasowe są ważne, zobacz Tworzenie kopii zapasowych i przywracanie baz danych programu SQL Server.

Usługa Azure SQL Edge umożliwia tworzenie kopii zapasowych i przywracanie z magazynu lokalnego i obiektów blob platformy Azure. Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowej i przywracanie programu SQL Server przy użyciu usługi Azure Blob Storage i kopii zapasowej programu SQL Server pod adresem URL.

Tworzenie kopii zapasowej bazy danych w usłudze Azure SQL Edge

Usługa Azure SQL Edge obsługuje te same typy kopii zapasowych co program SQL Server. Aby uzyskać pełną listę, zobacz Omówienie kopii zapasowych.

Ważne

Bazy danych utworzone w usłudze Azure SQL Edge domyślnie używają prostego modelu odzyskiwania. W związku z tym nie można wykonywać kopii zapasowych dzienników w tych bazach danych. Jeśli musisz to zrobić, musisz mieć administratora, aby zmienić model odzyskiwania bazy danych na model pełnego odzyskiwania. Aby uzyskać pełną listę modeli odzyskiwania obsługiwanych przez program SQL Server, zobacz Omówienie modelu odzyskiwania.

Tworzenie kopii zapasowej na dysku lokalnym

W poniższym przykładzie użyjesz BACKUP DATABASE polecenia Transact-SQL, aby utworzyć kopię zapasową bazy danych w kontenerze. W tym przykładzie utworzysz nowy folder o nazwie kopia zapasowa do przechowywania plików kopii zapasowej.

  1. Utwórz folder dla kopii zapasowych. Uruchom to polecenie na hoście, na którym działa kontener usługi Azure SQL Edge. W poniższym poleceniu zastąp <AzureSQLEdge_Container_Name> nazwą kontenera usługi Azure SQL Edge we wdrożeniu.

    sudo docker exec -it <AzureSQLEdge_Container_Name> mkdir /var/opt/mssql/backup
    
  2. Nawiąż połączenie z wystąpieniem usługi Azure SQL Edge przy użyciu programu SQL Server Management Studio (SSMS) lub przy użyciu narzędzia Azure Data Studio. Uruchom polecenie , BACKUP DATABASE aby utworzyć kopię zapasową bazy danych użytkownika. W poniższym przykładzie tworzysz kopię zapasową IronOreSilicaPrediction bazy danych.

    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. Po uruchomieniu polecenia, jeśli tworzenie kopii zapasowej bazy danych zakończy się pomyślnie, w sekcji wyników programu SSMS lub Azure Data Studio zostaną wyświetlone komunikaty podobne do poniższych.

    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
    

Tworzenie kopii zapasowej do adresu URL

Usługa Azure SQL Edge obsługuje kopie zapasowe zarówno stronicowych obiektów blob, jak i blokowych obiektów blob. Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowej blokowych obiektów blob a stronicowych obiektów blob. W poniższym przykładzie tworzona jest kopia zapasowa bazy danych IronOreSilicaPrediction do blokowego obiektu blob.

  1. Aby skonfigurować kopie zapasowe w celu blokowania obiektów blob, najpierw wygeneruj token sygnatury dostępu współdzielonego (SAS), którego można użyć do utworzenia poświadczeń programu SQL Server w usłudze Azure SQL Edge. Skrypt tworzy sygnaturę dostępu współdzielonego skojarzona z zapisanymi zasadami dostępu. Aby uzyskać więcej informacji, zobacz Sygnatury dostępu współdzielonego, część 1: Opis modelu sygnatury dostępu współdzielonego. Skrypt zapisuje również polecenie T-SQL wymagane do utworzenia poświadczeń w programie SQL Server. Poniższy skrypt zakłada, że masz już subskrypcję platformy Azure z kontem magazynu i kontenerem magazynu dla kopii zapasowych.

    # 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
    

    Po pomyślnym uruchomieniu skryptu skopiuj CREATE CREDENTIAL polecenie do narzędzia do wykonywania zapytań. Następnie połącz się z wystąpieniem programu SQL Server i uruchom polecenie , aby utworzyć poświadczenie przy użyciu sygnatury dostępu współdzielonego.

  2. Nawiąż połączenie z wystąpieniem usługi Azure SQL Edge przy użyciu programu SSMS lub narzędzia Azure Data Studio i utwórz poświadczenie przy użyciu polecenia z poprzedniego kroku. Pamiętaj, aby zastąpić CREATE CREDENTIAL polecenie rzeczywistymi danymi wyjściowymi z poprzedniego kroku.

    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. Następujące polecenie wykonuje kopię zapasową IronOreSilicaPrediction kontenera usługi Azure Storage.

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

Przywracanie bazy danych w usłudze Azure SQL Edge

W usłudze Azure SQL Edge można przywrócić z dysku lokalnego, lokalizacji sieciowej lub konta usługi Azure Blob Storage. Aby uzyskać więcej informacji na temat przywracania i odzyskiwania w programie SQL Server, zobacz Przywracanie i odzyskiwanie — omówienie. Aby zapoznać się z omówieniem prostego modelu odzyskiwania w programie SQL Server, zobacz Ukończone przywracanie bazy danych (prosty model odzyskiwania).

Ważne

Nie można przywrócić baz danych utworzonych w usłudze Azure SQL Edge w wystąpieniu programu Microsoft SQL Server lub usługi Azure SQL. Ponadto bazę danych utworzoną na serwerze Microsoft SQL Server lub azure SQL można przywrócić w usłudze Azure SQL Edge, pod warunkiem że baza danych nie zawiera żadnych funkcji, które nie są obsługiwane przez usługę Azure SQL Edge.

Przywracanie z dysku lokalnego

W tym przykładzie użyto IronOreSilicaPrediction kopii zapasowej utworzonej w poprzednim przykładzie. Teraz przywrócisz ją jako nową bazę danych o innej nazwie.

  1. Jeśli plik kopii zapasowej bazy danych nie jest jeszcze obecny w kontenerze, możesz użyć następującego polecenia, aby skopiować plik do kontenera. W poniższym przykładzie przyjęto założenie, że plik kopii zapasowej znajduje się na hoście lokalnym i jest kopiowany do folderu /var/opt/mssql/backup do kontenera usługi Azure SQL Edge o nazwie sql1.

    sudo docker cp IronOrePredictDB.bak sql1:/var/opt/mssql/backup
    
  2. Połącz się z wystąpieniem usługi Azure SQL Edge przy użyciu programu SSMS lub narzędzia Azure Data Studio, aby uruchomić polecenie przywracania. W poniższym przykładzie IronOrePredictDB.bak zostanie przywrócona w celu utworzenia nowej bazy danych . 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. Po uruchomieniu polecenia przywracania, jeśli operacja przywracania zakończyła się pomyślnie, w oknie danych wyjściowych będą wyświetlane komunikaty podobne do poniższych.

    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
    

Przywracanie z adresu URL

Usługa Azure SQL Edge obsługuje również przywracanie bazy danych z konta usługi Azure Storage. Można przywrócić z blokowych obiektów blob lub stronicowych kopii zapasowych obiektów blob. W poniższym przykładzie IronOreSilicaPrediction_2020_04_16.bak plik kopii zapasowej bazy danych w blokowym obiekcie blob zostanie przywrócony w celu utworzenia bazy danych . 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;