Basculez vers un instantané antérieur à l'aide de Trident Protect
Utilisez Trident Protect pour basculer une application répliquée vers un instantané antérieur, permettant ainsi une récupération à un moment antérieur à l’endommagement ou à la compromission des données. Par défaut, le basculement utilise l'instantané transféré le plus récent.
|
|
Le basculement vers un instantané plus ancien amène ONTAP SnapMirror à supprimer les instantanés du cluster de destination plus récents que l’instantané sélectionné, car ils ne sont plus valides. Ajoutez l’annotation à cette procédure uniquement si cette perte de données est acceptable. |
-
Une AppMirrorRelationship existe et est dans l’état
Established. Pour en créer une, consultez "Configuration d'une relation de réplication". Pour vérifier l’état, exécutezkubectl get amr -n <namespace> <relationship_name> -o=jsonpath='{.status}'. -
Les clusters source et de destination utilisent des systèmes de stockage back-end ONTAP avec la réplication SnapMirror. Azure NetApp Files et les autres back-ends non ONTAP ne sont pas pris en charge. Reportez-vous à "Conditions requises pour la réplication SnapMirror".
-
Une planification d'instantanés (avec
snapshotRetentionplus de 1) existe sur l'application source.
Identifier l'instantané
Chaque instantané a une heure d’achèvement, vous pouvez donc choisir le moment précis que vous souhaitez.
-
Sur le cluster source, listez les instantanés :
kubectl get snapshots -n my-app-namespace -
Trouvez l’instantané vers lequel basculer. Utilisez la
completionTimestampvaleur pour sélectionner le point dans le temps. -
Obtenez le chemin d'accès à l'archive de cet instantané :
kubectl get snapshots <snapshot_name> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
Enregistrez la dernière partie du chemin, c'est-à-dire tout ce qui suit la dernière barre oblique. Cette partie est le basename. Par exemple :
20231114173500_schedule-20231114173500_f8df8bd3-a727-4a14-b954-9666aa618b55
Utilisez le nom de base, et non le nom de la ressource personnalisée de l’instantané.
Le nom de base de l'instantané sélectionné est enregistré.
Basculer vers l'instantané sélectionné
Spécifiez l'instantané à promouvoir et confirmez la perte de données en ajoutant une annotation.
-
Sur le cluster de destination, ajoutez l’annotation à AppMirrorRelationship. Sans cette annotation, un basculement ne peut utiliser que le snapshot transféré le plus récent.
kubectl annotate appmirrorrelationship <relationship_name> -n my-app-namespace protect.trident.netapp.io/allow-promotion-with-older-snapshots="true" -
Modifiez le fichier CR AppMirrorRelationship (par exemple
trident-protect-relationship.yaml) :-
Définissez spec.desiredState sur
Promoted. -
Définissez spec.promotedSnapshot sur le nom de base que vous avez enregistré dans Identifier l'instantané.
Par exemple :
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> -
-
Appliquer la CR :
kubectl apply -f trident-protect-relationship.yaml -n my-app-namespace -
Vérifiez l'état de la relation :
kubectl get amr -n my-app-namespace <relationship_name> -o=jsonpath='{.status}' | jq
La relation passe à l' `Promoted`état, et l'application s'exécute sur le cluster de destination avec les données de l'instantané sélectionné.
Si la relation reste à l’état Promoting et que status.error affiche The snapshot provided is invalid or older than the most recently transferred snapshot, l’annotation est manquante ou n’est pas définie sur true. Ajoutez l’annotation et réessayez.
Pour revenir au cluster d'origine, effectuez un "resynchronisation inversée", puis "inverser le sens de la réplication".
|
|
Pour revenir au cluster d'origine, n'effectuez pas de resynchronisation classique. Une resynchronisation classique supprime l'application basculée et rétablit la relation avec l'instantané source le plus récent. |