Freigeben über


Wiederherstellen von Sicherungsdaten in Azure Service Fabric

In Azure Service Fabric können zustandsbehaftete Reliable Services sowie Reliable Actors nach Abschluss einer Transaktion mit Anforderung und Antwort einen veränderlichen, autoritativen Zustand beibehalten. Bei einem zustandsbehafteten Dienst kann es aufgrund eines Notfalls zu einem längeren Ausfall oder zum Verlust von Informationen kommen. In diesem Fall muss der Dienst auf der Grundlage der letzten akzeptablen Sicherung wiederhergestellt werden, damit er weiter verwendet werden kann.

Hierzu können Sie einen Dienst beispielsweise so konfigurieren, dass er seine Daten sichert, um für folgende Szenarien gewappnet zu sein:

  • Notfallwiederherstellung: Dauerhafter Verlust eines gesamten Service Fabric-Clusters.
  • Datenverlust: Dauerhafter Verlust eines Großteils der Replikate einer Dienstpartition.
  • Datenverlust: Versehentliche Löschung oder Beschädigung des Diensts. Beispiel: Ein Administrator löscht versehentlich den Dienst.
  • Datenbeschädigung: Fehler im Dienst, die zu einer Beschädigung von Daten führen. Eine Datenbeschädigung kann beispielsweise auftreten, wenn ein Dienstcodeupgrade fehlerhafte Daten in eine zuverlässige Sammlung schreibt. In diesem Fall müssen unter Umständen sowohl der Code als auch die Daten auf einen früheren Zustand zurückgesetzt werden.

Voraussetzungen

  • Zum Auslösen einer Wiederherstellung muss der Fault Analysis Service (FAS) (Fehleranalysedienst) für den Cluster aktiviert sein.
  • Der Backup Restore Service (BRS) (Sicherungswiederherstellungsdienst) hat die Sicherung erstellt.
  • Die Wiederherstellung kann nur auf einer Partition ausgelöst werden.
  • Installieren Sie das Modul Microsoft.ServiceFabric.Powershell.Http, um Konfigurationsaufrufe vorzunehmen.
    Install-Module -Name Microsoft.ServiceFabric.Powershell.Http -AllowPrerelease

Hinweis

Wenn Ihre PowerShellGet-Version kleiner als 1.6.0 ist, müssen Sie ein Update ausführen, um Unterstützung für das -AllowPrerelease-Flag hinzuzufügen:

Install-Module -Name PowerShellGet -Force

  • Stellen Sie mit dem Befehl Connect-SFCluster sicher, dass der Cluster verbunden ist, bevor Sie Konfigurationsanforderungen mit dem Microsoft.ServiceFabric.Powershell.Http-Modul vornehmen.

    Connect-SFCluster -ConnectionEndpoint 'https://mysfcluster.southcentralus.cloudapp.azure.com:19080'   -X509Credential -FindType FindByThumbprint -FindValue '1b7ebe2174649c45474a4819dafae956712c31d3' -StoreLocation 'CurrentUser' -StoreName 'My' -ServerCertThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'  

Ausgelöste Wiederherstellung

Eine Wiederherstellung kann für jedes der folgenden Szenarien ausgelöst werden:

  • Datenwiederherstellung für die Notfallwiederherstellung
  • Datenwiederherstellung im Falle von Datenbeschädigung/Datenverlust

Datenwiederherstellung für die Notfallwiederherstellung

Sollte ein gesamter Service Fabric-Cluster verloren gehen, können Sie die Daten für die Partitionen des zuverlässigen zustandsbehafteten Diensts und der Reliable Actors wiederherstellen. Die gewünschte Sicherung kann bei Verwendung der GetBackup-API mit Sicherungsspeicherdetails aus der Liste ausgewählt werden. Die Sicherungen können für eine Anwendung, einen Dienst oder eine Partition aufgelistet werden.

Im folgenden Beispiel wird davon ausgegangen, dass es sich bei dem verloren gegangenen Cluster um den in Aktivieren der regelmäßigen Sicherung für den zuverlässigen zustandsbehafteten Dienst und Reliable Actors erwähnten Cluster handelt. In diesem Fall wurde SampleApp mit aktivierter Sicherungsrichtlinie bereitgestellt, und als Ziel für die Sicherungen wird Azure Storage verwendet.

PowerShell mit dem Microsoft.ServiceFabric.Powershell.Http-Modul

Ersetzen Sie account-name durch den Namen Ihres Speicherkontos.


    Get-SFBackupsFromBackupLocation -Application -ApplicationName 'fabric:/SampleApp' -ManagedIdentityAzureBlobStore -BlobServiceUri "https://<account-name>.blob.core.windows.net" -ContainerName 'backup-container' -ManagedIdentityType "VMSS" -FriendlyName "AzureMI_storagesample" -ManagedIdentityClientId = "<Client-Id of User-Assigned MI>"

    # Use Optional parameter `ManagedIdentityClientId` with Client-Id of User-Assigned Managed Identity in case of multiple User-Assigned Managed Identities assigned to your resource, or both SAMI & UAMI assigned and we need to use UAMI as the default, else no need of this paramter.

Rest-Aufruf mithilfe von PowerShell

Führen Sie ein PowerShell-Skript aus, um unter Verwendung der REST-API eine Liste mit den Sicherungen zurückzugeben, die für alle Partitionen in der Anwendung SampleApp erstellt wurden. Die API benötigt die Sicherungsspeicherinformationen, um die verfügbaren Sicherungen auflisten zu können.

$StorageInfo = @{
    StorageKind = "ManagedIdentityAzureBlobStore"
    FriendlyName = "AzureMI_storagesample"
    BlobServiceUri = "https://<account-name>.blob.core.windows.net"
    ContainerName = "backup-container"
    ManagedIdentityType = "VMSS"
    ManagedIdentityClientId = "<Client-Id of User-Assigned MI>"  # Use Optional parameter `ManagedIdentityClientId` with Client-Id of User-Assigned Managed Identity in case of multiple User-Assigned Managed Identities assigned to your resource, or both SAMI & UAMI assigned and we need to use UAMI as the default, else no need of this paramter.
}

$BackupEntity = @{
    EntityKind = 'Application'
    ApplicationName='fabric:/SampleApp'
}

$BackupLocationAndEntityInfo = @{
    Storage = $StorageInfo
    BackupEntity = $BackupEntity
}

$body = (ConvertTo-Json $BackupLocationAndEntityInfo)
$url = "https://myalternatesfcluster.southcentralus.cloudapp.azure.com:19080/BackupRestore/$/GetBackups?api-version=6.4"

$response = Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json' -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'
$BackupPoints = (ConvertFrom-Json $response.Content)
$BackupPoints.Items

Beispielausgabe für die oben genannte Ausführung:

BackupId                : b9577400-1131-4f88-b309-2bb1e943322c
BackupChainId           : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation          : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 20.55.16.zip
BackupType              : Full
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 3334
CreationTimeUtc         : 2018-04-06T20:55:16Z
FailureError            : 
*
BackupId                : b0035075-b327-41a5-a58f-3ea94b68faa4
BackupChainId           : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation          : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.10.27.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 3552
CreationTimeUtc         : 2018-04-06T21:10:27Z
FailureError            :
*
BackupId                : 69436834-c810-4163-9386-a7a800f78359
BackupChainId           : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation          : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.25.36.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 3764
CreationTimeUtc         : 2018-04-06T21:25:36Z
FailureError            :

Wählen Sie zum Auslösen der Wiederherstellung eine der Sicherungen aus. Bei der aktuellen Sicherung für die Notfallwiederherstellung kann es sich beispielsweise um folgende Sicherung handeln:

BackupId                : b0035075-b327-41a5-a58f-3ea94b68faa4
BackupChainId           : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation          : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.10.27.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 3552
CreationTimeUtc         : 2018-04-06T21:10:27Z
FailureError            :

Für die Wiederherstellungs-API müssen die Sicherungs-ID (BackupId) und der Sicherungsspeicherort (BackupLocation) angegeben werden.

Darüber hinaus muss eine Zielpartition im alternativen Cluster ausgewählt werden, wie im Partitionsschema dargestellt. Die alternative Clustersicherung wird in der Partition wiederhergestellt, die im Partitionsschema des ursprünglichen, verloren gegangenen Clusters angegeben ist.

Wenn die Partitions-ID für den alternativen Cluster 1c42c47f-439e-4e09-98b9-88b8f60800c6 lautet, können Sie sie der Partitions-ID 974bd92a-b395-4631-8a7f-53bd4ae9cf22 des ursprünglichen Clusters zuordnen, indem Sie den hohen und niedrigen Schlüssel für Ranged Partitioning (UniformInt64Partition) (Bereichsbasierte Partitionierung (UniformInt64Partition)) vergleichen.

Für Named Partitioning (Namensbasierte Partitionierung) wird der Name-Wert zum Identifizieren der Zielpartition im alternativen Cluster verglichen.

PowerShell mit dem Microsoft.ServiceFabric.Powershell.Http-Modul


Restore-SFPartition -PartitionId 1c42c47f-439e-4e09-98b9-88b8f60800c6 -BackupId b0035075-b327-41a5-a58f-3ea94b68faa4 -BackupLocation 'SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.10.27.zip' -ManagedIdentityAzureBlobStore -BlobServiceUri "https://<account-name>.blob.core.windows.net" -ContainerName "backup-container" -ManagedIdentityType "VMSS" -FriendlyName "AzureMI_storagesample" ManagedIdentityClientId "<Client-Id of User-Assigned MI>" 

Rest-Aufruf mithilfe von PowerShell

Verwenden Sie die folgende Wiederherstellungs-API, um die Wiederherstellung anhand der Sicherungsclusterpartition anzufordern:


$StorageInfo = @{
    StorageKind = "ManagedIdentityAzureBlobStore"
    FriendlyName = "AzureMI_storagesample"
    BlobServiceUri = "https://<account-name>.blob.core.windows.net"
    ContainerName = "backup-container"
    ManagedIdentityType = "VMSS"
    ManagedIdentityClientId = "<Client-Id of User-Assigned MI>" 
}

$RestorePartitionReference = @{
    BackupId = 'b0035075-b327-41a5-a58f-3ea94b68faa4'
    BackupLocation = 'SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.10.27.zip'
    BackupStorage  = $StorageInfo
}

$body = (ConvertTo-Json $RestorePartitionReference) 
$url = "https://mysfcluster.southcentralus.cloudapp.azure.com:19080/Partitions/1c42c47f-439e-4e09-98b9-88b8f60800c6/$/Restore?api-version=6.4" 

Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json' -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'

Den Status einer Wiederherstellung können Sie mithilfe von TrackRestoreProgress nachverfolgen.

Hinweis

Wenn Sie PowerShell zum Wiederherstellen einer Partition verwenden und backuplocation das Zeichen „$“ enthält, versehen Sie es wie folgt mit dem Escapezeichen: „~“

Verwenden von Service Fabric Explorer

Sie können eine Wiederherstellung aus Service Fabric Explorer auslösen. Stellen Sie sicher, dass der erweiterte Modus in den Service Fabric Explorer-Einstellungen aktiviert wurde.

  1. Wählen Sie zunächst die gewünschten Partitionen und dann „Aktionen“ aus.

  2. Wählen Sie die Option zum Auslösen der Wiederherstellung von Partitionen aus, und füllen Sie die Informationen für Azure aus:

    Partitionswiederherstellung auslösen

    oder FileShare:

    Partitionswiederherstellung FileShare auslösen

Datenwiederherstellung im Falle von Datenbeschädigung/Datenverlust

Bei einem Datenverlust oder einer Datenbeschädigung können gesicherte Partitionen für den zuverlässigen zustandsbehafteten Dienst und Reliable Actors auf der Grundlage einer der ausgewählten Sicherungen wiederhergestellt werden.

Das folgende Beispiel baut auf Aktivieren der regelmäßigen Sicherung für den zuverlässigen zustandsbehafteten Dienst und Reliable Actors auf. In diesem Beispiel ist für die Partition eine Sicherungsrichtlinie aktiviert, und der Dienst erstellt im gewünschten Intervall Sicherungen in Azure Storage.

Wählen Sie eine Sicherung aus der Ausgabe der GetBackups-API aus. In diesem Szenario basiert die Sicherung auf dem gleichen Cluster wie zuvor.

Wählen Sie zum Auslösen der Wiederherstellung eine Sicherung aus der Liste aus. Wählen Sie für den aktuellen Fall von Datenverlust/Datenbeschädigung die folgende Sicherung aus:

BackupId                : b0035075-b327-41a5-a58f-3ea94b68faa4
BackupChainId           : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation          : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.10.27.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 3552
CreationTimeUtc         : 2018-04-06T21:10:27Z
FailureError            :

Geben Sie für die Wiederherstellungs-API die Sicherungs-ID (BackupId) und den Sicherungsspeicherort (BackupLocation) an. Da für den Cluster die Sicherung aktiviert ist, identifiziert der Backup Restore Service (BRS) (Sicherungswiederherstellungsdienst) in Service Fabric den korrekten Speicherort anhand der zugeordneten Sicherungsrichtlinie.

PowerShell mit dem Microsoft.ServiceFabric.Powershell.Http-Modul

Restore-SFPartition  -PartitionId '974bd92a-b395-4631-8a7f-53bd4ae9cf22' -BackupId 'b0035075-b327-41a5-a58f-3ea94b68faa4' -BackupLocation 'SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.10.27.zip'

Rest-Aufruf mithilfe von PowerShell

$RestorePartitionReference = @{
    BackupId = 'b0035075-b327-41a5-a58f-3ea94b68faa4',
    BackupLocation = 'SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.10.27.zip'
}

$body = (ConvertTo-Json $RestorePartitionReference)
$url = "https://mysfcluster.southcentralus.cloudapp.azure.com:19080/Partitions/974bd92a-b395-4631-8a7f-53bd4ae9cf22/$/Restore?api-version=6.4"

Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json' -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'

Den Status des Wiederherstellungsvorgangs können Sie mithilfe von TrackRestoreProgress nachverfolgen.

Hinweis

Wenn Sie PowerShell zum Wiederherstellen einer Partition verwenden und backuplocation das Zeichen „$“ enthält, versehen Sie es wie folgt mit dem Escapezeichen: „~“

Nachverfolgen des Wiederherstellungsstatus

Eine Partition eines zuverlässigen zustandsbehafteten Diensts oder Reliable Actor-Diensts akzeptiert nicht mehrere Anforderungen für eine Wiederherstellung gleichzeitig. Weitere Anforderungen werden von einer Partition erst nach Abschluss der aktuellen Wiederherstellungsanforderung akzeptiert. Für unterschiedliche Partitionen können gleichzeitig mehrere Wiederherstellungsanforderungen ausgelöst werden.

PowerShell mit dem Microsoft.ServiceFabric.Powershell.Http-Modul

    Get-SFPartitionRestoreProgress -PartitionId '974bd92a-b395-4631-8a7f-53bd4ae9cf22'

Rest-Aufruf mithilfe von PowerShell

$url = "https://mysfcluster-backup.southcentralus.cloudapp.azure.com:19080/Partitions/974bd92a-b395-4631-8a7f-53bd4ae9cf22/$/GetRestoreProgress?api-version=6.4"

$response = Invoke-WebRequest -Uri $url -Method Get -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'

$restoreResponse = (ConvertFrom-Json $response.Content)
$restoreResponse | Format-List

Die Wiederherstellungsanforderung durchläuft folgende Zustände in der angegebenen Reihenfolge:

  1. Akzeptiert: Der Wiederherstellungszustand Accepted (Akzeptiert) gibt an, dass die angeforderte Partition mit korrekten Anforderungsparametern ausgelöst wurde.

    RestoreState  : Accepted
    TimeStampUtc  : 0001-01-01T00:00:00Z
    RestoredEpoch : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
    RestoredLsn   : 3552
    
  2. InProgress (In Bearbeitung): Der Wiederherstellungszustand InProgress (In Bearbeitung) gibt an, dass die Partition mit der in der Anforderung genannten Sicherung wiederhergestellt wird. Die Partition meldet mit dem Zustand dataloss einen Datenverlust.

    RestoreState  : RestoreInProgress
    TimeStampUtc  : 0001-01-01T00:00:00Z
    RestoredEpoch : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
    RestoredLsn   : 3552
    
  3. Erfolg, Fehler oder Timeout: Eine angeforderte Wiederherstellung kann mit einem der folgenden Zustände abgeschlossen werden. Im Anschluss werden die Bedeutung und die Antwortdetails der einzelnen Zustände erläutert:

    • Success: Der Wiederherstellungsstatus Success (Erfolgreich) gibt an, dass ein Partitionsstatus wiederhergestellt wurde. Die Partition meldet die Zustände RestoredEpoch und RestoredLSN sowie die Zeit im UTC-Format.

      RestoreState  : Success
      TimeStampUtc  : 2018-11-22T11:22:33Z
      RestoredEpoch : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
      RestoredLsn   : 3552
      
    • Fehler: Der Wiederherstellungszustand Failure (Fehler) gibt an, dass die Wiederherstellungsanforderung nicht erfolgreich war. Die Ursache des Fehlers wird gemeldet.

      RestoreState  : Failure
      TimeStampUtc  : 0001-01-01T00:00:00Z
      RestoredEpoch : 
      RestoredLsn   : 0
      
    • Timeout: Der Wiederherstellungszustand Timeout gibt an, dass für die Anforderung ein Timeout aufgetreten ist. Erstellen Sie eine neue Wiederherstellungsanforderung mit einem höheren Wert für RestoreTimeout. Das Standardtimeout beträgt zehn Minuten. Vergewissern Sie sich, dass sich die Partition nicht in einem Datenverlustzustand befindet, bevor Sie die Wiederherstellung erneut anfordern.

      RestoreState  : Timeout
      TimeStampUtc  : 0001-01-01T00:00:00Z
      RestoredEpoch : 
      RestoredLsn   : 0
      

Automatische Wiederherstellung

Für die Partitionen des zuverlässigen zustandsbehafteten Diensts und der Reliable Actors im Service Fabric-Cluster kann eine automatische Wiederherstellung konfiguriert werden. Legen Sie AutoRestore in der Sicherungsrichtlinie auf true fest. Bei aktivierter automatischer Wiederherstellung werden die Daten im Falle eines gemeldeten Datenverlusts anhand der neuesten Sicherung wiederhergestellt. Weitere Informationen finden Sie unter

Nächste Schritte