我有一个状态服务,其备份逻辑根据
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集群管理器的Data和Log目录,但数据格式与备份相比似乎有所不同.
解决方法
可以使用类似以下代码的服务触发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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。