Skip to content

1-1 restore service implementation #4199

Open
0 of 6 issues completed
Open
0 of 6 issues completed
@karol-kokoszka

Description

@karol-kokoszka

This issue is about creating the full service allowing to perform 1-1 restore of the VNode keyspaces/column familes.
Design doc (https://docs.google.com/document/d/18jhhNo90JWy6fIgPCks3RI1zhHLI7eBLKpHGJRBmdpM/edit?tab=t.0#bookmark=id.e6nd5pbe9bjq)

The service must work on the following input:

  • nodes mapping ( map[string]string where source node host ID is a key and the destination node host ID is the value )
  • source-cluster-id (will be needed to find the snapshot)
  • snapshot-id (it identifies which snapshot of the source-cluster to use to restore the data)
  • backup location

The restore process consists of the following stages:

  • validation
    The service must check if agents can reach the backup location.
    The service must compare if the cluster topology saved to the snapshot is the same as the destination cluster topology.
    The service must compare if the source cluster ring topology (read from manifest files) is the same as the cluster ring of the destination cluster.
    This process can be split into two parts (reading source cluster topology, reading destination cluster topology)
    If validation fails, the service must stop and return meaningful error information
  • copy-data
    nodes mapping informs which destination node is going to restore SSTables of which source node. SSTables of the source node must be copied to the corresponding /keyspace/column_family/upload directories on the destination node.
    There must be (number_of_nodes) independent go-routines per destination node copying SSTables from the corresponding source node.
    If the corresponding destination folder doesn't exists then it means that one of the prerequisities is not met (schema is not restored). It should just return error informing that the keyspace/column family is missing.
  • refresh SSTables
    After the SSTables are copied to the upload directories, SM must call
    "/storage_service/sstables/{keyspace}": {
    on each and every node for every keyspace and column family that was copied to this node.

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions