【发布时间】:2017-01-19 09:40:12
【问题描述】:
我有一个有状态服务,其备份逻辑根据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 方法。但我无法引发对这种方法的调用。
那么,问题是:如果数据全部丢失,我该如何从备份中恢复服务状态?
例如,所有 Service Fabric 集群节点都已销毁。我唯一的东西就是我的备份。重新部署后我应该怎么做才能恢复我的服务状态?
我检查了 Service Fabric 群集管理器的 Data 和 Log 目录,但与备份相比,数据格式似乎有所不同。
【问题讨论】:
-
您是否阅读过“删除或丢失服务”一章? msdn.microsoft.com/library/mt693569.aspx 它似乎描述了你所追求的..
-
我确实读过这个方法。据我了解,它是用于测试目的,不应在生产环境中使用:“不建议在每个分区上使用 FabricClient.ServiceManager.InvokeDataLossAsync 来恢复整个服务,因为这可能会破坏您的集群状态。 "
-
这是与
FabricClient.TestManagementClient.StartPartitionDataLossAsync不同的方法(我同意它不清楚..) -
可能就是答案。会试试的。谢谢。
标签: c# azure azure-service-fabric service-fabric-stateful