如何从现有备份恢复可靠服务状态

本文关键字:服务 状态 恢复 备份 | 更新日期: 2023-09-27 18:06:38

我有一个有状态服务,根据相应的文档实现了备份逻辑

就像这样:

protected override async Task RunAsync(CancellationToken cancellationToken)
{
  // ...
  while (true)
  {
    cancellationToken.ThrowIfCancellationRequested();
    BackupDescription myBackupDescription = new BackupDescription(BackupOption.Full, this.BackupCallbackAsync);
    await this.BackupAsync(myBackupDescription);
    // ...
    await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
  }
}
private async Task<bool> BackupCallbackAsync(BackupInfo backupInfo, CancellationToken cancellationToken)
{
  var backupId = Guid.NewGuid();
  // backup files copied to external storage here ...
  return true;
}

文档建议只有一种恢复备份的方法-使用OnDataLossAsync方法。但是我不能激发对这个方法的调用。

所以,问题是:在数据全部丢失的情况下,我如何从备份中恢复服务状态?

例如,所有业务fabric集群节点已被破坏。我唯一的东西就是我的后援。在重新部署后,我应该做些什么来恢复服务的状态?

我检查了Service Fabric集群管理器的DataLog目录,但数据格式似乎与备份时不同

如何从现有备份恢复可靠服务状态

可以使用以下代码触发服务的数据丢失:

Connect-ServiceFabricCluster
$s = "fabric:/WebReferenceApplication/InventoryService"
$p = Get-ServiceFabricApplication | Get-ServiceFabricService -ServiceName $s | Get-ServiceFabricPartition | Select -First 1
$p | Invoke-ServiceFabricPartitionDataLoss -DataLossMode FullDataLoss -ServiceName $s

在web参考示例中有一个示例显示了备份和恢复如何工作,具体代码在这里。

备份和恢复的完整文档在这里。