Faça failover para um snapshot anterior usando o Trident Protect
Use o Trident Protect para realizar o failover de uma aplicação replicada para um snapshot anterior, permitindo a recuperação a partir de um ponto no tempo anterior à ocorrência de danos ou comprometimento dos dados. Por padrão, o failover utiliza o snapshot transferido mais recentemente.
|
|
Recorrer a um snapshot mais antigo faz com que o ONTAP SnapMirror exclua os snapshots no cluster de destino que são mais recentes do que o snapshot selecionado, porque eles não são mais válidos. Adicione a anotação neste procedimento somente se essa perda de dados for aceitável. |
-
Um AppMirrorRelationship existe e está no
Establishedestado. Para criar um, consulte "Configure uma relação de replicação". Para verificar o estado, executekubectl get amr -n <namespace> <relationship_name> -o=jsonpath='{.status}'. -
Os clusters de origem e de destino usam backends de armazenamento ONTAP com replicação SnapMirror. O Azure NetApp Files e outros backends não ONTAP não são compatíveis. Consulte "Requisitos para replicação do SnapMirror".
-
Existe um agendamento de snapshots (com
snapshotRetentionmaior que 1) no aplicativo de origem.
Identifique o snapshot
Cada instantâneo tem um horário de conclusão, para que você possa escolher o ponto no tempo desejado.
-
No cluster de origem, liste os snapshots:
kubectl get snapshots -n my-app-namespace -
Encontre o snapshot para o qual deseja fazer o failover. Use o `completionTimestamp`valor para selecionar o ponto no tempo.
-
Obtenha o caminho do arquivo desse snapshot:
kubectl get snapshots <snapshot_name> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
Anote a última parte do caminho, ou seja, tudo o que vem depois da última barra. Essa parte é o basename. Por exemplo:
20231114173500_schedule-20231114173500_f8df8bd3-a727-4a14-b954-9666aa618b55
Use o basename, não o nome do recurso personalizado do snapshot.
O nome base do snapshot selecionado é registrado.
Fazer failover para o snapshot selecionado
Especifique o snapshot a ser promovido e reconheça a perda de dados adicionando uma anotação.
-
No cluster de destino, adicione a anotação ao AppMirrorRelationship. Sem a anotação, um failover só poderá usar o snapshot transferido mais recentemente.
kubectl annotate appmirrorrelationship <relationship_name> -n my-app-namespace protect.trident.netapp.io/allow-promotion-with-older-snapshots="true" -
Edite o arquivo CR AppMirrorRelationship (por exemplo,
trident-protect-relationship.yaml):-
Defina spec.desiredState para
Promoted. -
Defina spec.promotedSnapshot para o nome base que você registrou em Identifique o snapshot.
Por exemplo:
apiVersion: protect.trident.netapp.io/v1 kind: AppMirrorRelationship metadata: name: <relationship_name> namespace: <namespace> annotations: protect.trident.netapp.io/allow-promotion-with-older-snapshots: "true" spec: desiredState: Promoted promotedSnapshot: <basename> -
-
Aplicar o CR:
kubectl apply -f trident-protect-relationship.yaml -n my-app-namespace -
Verifique o status do relacionamento:
kubectl get amr -n my-app-namespace <relationship_name> -o=jsonpath='{.status}' | jq
O relacionamento passa para o Promoted estado, e o aplicativo é executado no cluster de destino com os dados do snapshot selecionado.
Se o relacionamento permanecer no Promoting`estado e `status.error mostrar The snapshot provided is invalid or older than the most recently transferred snapshot, a anotação está faltando ou não está definida como true. Adicione a anotação e tente novamente.
Para retornar ao cluster original, execute um "ressincronização reversa" e, em seguida, "inverter a direção da replicação".
|
|
Para retornar ao cluster original, não execute uma resincronização normal. Uma resincronização normal descarta a aplicação em failover e retorna o relacionamento ao snapshot de origem mais recente. |