小编Pav*_* S.的帖子

INSERT IF NOT EXISTS后,C*可能会丢失更新

我有以下代码:

def main(args: Array[String]): Unit = {
  val cluster = Cluster.builder()
    .addContactPoint("localhost")
    .withPort(9042)
    .build()
  val session = cluster.connect()

  try {
    session.execute(s"CREATE KEYSPACE demoks WITH REPLICATION = {'class':'SimpleStrategy', 'replication_factor':1}")
  } catch {
    case _: AlreadyExistsException =>
  }

  session.execute(s"USE demoks")
  session.execute("DROP table IF EXISTS demo")

  session.execute(      """
                          | CREATE TABLE IF NOT EXISTS demo (
                          |   id text,
                          |   data1 map<text, text>,
                          |   data2 map<text, text>,
                          |   PRIMARY KEY (id)
                          | ) WITH
                          | compaction = {'class': 'LeveledCompactionStrategy'}
                          | AND
                          | compression …
Run Code Online (Sandbox Code Playgroud)

cassandra

6
推荐指数
1
解决办法
127
查看次数

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

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

就像这样:

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;
}
Run Code Online (Sandbox Code Playgroud)

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

所以,问题是:如果数据完全丢失,我如何从备份中恢复服务状态?

例如,所有 Service Fabric 集群节点都已被销毁。我唯一拥有的是我的备份。重新部署后我应该怎么做才能恢复我的服务状态?

我检查DataLog服务织物集群管理器的目录,但数据格式似乎是比较不同的备份。

c# azure azure-service-fabric service-fabric-stateful

5
推荐指数
1
解决办法
780
查看次数