我有一个状态服务,其中包含根据the corresponding documentation
实施的备份逻辑就像这样:
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
方法。但我不能激起对这个方法的援引。
所以,问题是:在完全数据丢失的情况下,如何从备份中恢复服务状态?
例如,所有服务结构群集节点都已销毁。我唯一拥有的是备份。重新部署后我应该怎么做才能恢复我的服务&#39;状态?
我检查了Service Fabric集群管理器的Data
和Log
目录,但数据格式与备份相比似乎有所不同。
答案 0 :(得分:1)
可以使用类似以下代码的服务触发Dataloss:
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 reference sample中的工作方式,具体代码为here。
备份和还原的完整文档为here。