Garantissez la cohérence des données au sein des applications, telles que les bases de données, lors de la restauration à partir de snapshots en vidant les données en mémoire vers les disques avant la création du snapshot.
Contexte
Lorsque vous créez un groupe de snapshots cohérents avec la fonctionnalité de snapshot cohérent au niveau de l'application activée, le système crée l'un des types de snapshots suivants selon votre scénario.
Élément | Snapshot cohérent au niveau de l'application | Snapshot cohérent au niveau du système de fichiers |
Cohérence des données | Garantit la cohérence des données au sein des applications, telles que les bases de données. | Garantit la cohérence des données au sein des systèmes de fichiers. |
Implémentation |
|
|
Scénarios pris en charge | Convient aux applications nécessitant une cohérence des données, telles que les bases de données et les systèmes métier critiques. | Adapté aux scénarios nécessitant une cohérence globale du système de fichiers, tels que les serveurs de fichiers et les systèmes de gestion documentaire. |
Tags | APPConsistent:True | FsConsistent:True |
Fonctionnement
Le workflow de création de snapshot diffère entre les instances Linux et Windows.
Instance Linux
Par défaut, le système crée des snapshots cohérents au niveau du système de fichiers. Après avoir téléchargé les scripts prescript.sh et postscript.sh, le système vérifie la cohérence de l'application sur la base des scripts. Si la vérification réussit, les snapshots sont marqués comme cohérents au niveau de l'application ; sinon, ils restent cohérents au niveau du système de fichiers.
Le tableau suivant décrit les deux scripts.
Nom du script | Fonctionnalité | Type | Chemin d'accès | Autorisations | Contenu |
prescript.sh | Suspend toutes les opérations d'écriture sur l'application avant la création du snapshot pour éviter toute incohérence des données. | Shell | /tmp/prescript.sh | Seul l'utilisateur root dispose des autorisations de lecture, d'écriture et d'exécution sur les scripts. | Compilez des scripts personnalisés en fonction de vos exigences métier. Par exemple, suivez la procédure décrite dans Étape 1 : Créer les scripts prescript.sh et postscript.sh. |
postscript.sh | Restaure l'application et reprend les opérations d'écriture une fois la création du snapshot terminée. | Shell | /tmp/postscript.sh |
Le nom du script, son type et son chemin de stockage sont fixes. Utilisez exactement les valeurs indiquées ci-dessus, sinon l'exécution des scripts échouera.
-
Activez la fonctionnalité de snapshot cohérent au niveau de l'application et vérifiez que Cloud Assistant est installé sur l'instance.
RemarqueSi Cloud Assistant n'est pas installé et que vous sélectionnez Enable Application-consistent Snapshot, le plug-in Cloud Assistant s'installe automatiquement.
-
Cloud Assistant exécute le script prescript.sh, suspend les opérations d'E/S et crée les snapshots.
Si les paramètres du script sont corrects et que le script s'exécute avec succès, des snapshots cohérents au niveau de l'application sont créés.
Si les paramètres du script sont invalides ou si l'exécution du script échoue, des snapshots cohérents au niveau du système de fichiers sont créés à la place.
Cloud Assistant exécute le script postscript.sh pour reprendre les opérations d'E/S.
Instance Windows
Après avoir activé la fonctionnalité de snapshot cohérent au niveau de l'application pour une instance Windows, Cloud Assistant effectue une vérification de cohérence de l'application avec VSS. Si la vérification réussit, les snapshots sont marqués comme cohérents au niveau de l'application ; sinon, ils sont marqués comme cohérents au niveau du système de fichiers.
-
Activez la fonctionnalité de snapshot cohérent au niveau de l'application et vérifiez que Cloud Assistant est installé sur l'instance.
RemarqueSi Cloud Assistant n'est pas installé et que vous sélectionnez Enable Application-consistent Snapshot, le plug-in Cloud Assistant s'installe automatiquement.
-
Cloud Assistant suspend les opérations d'E/S et crée les snapshots.
Cloud Assistant appelle VSS et suspend toutes les opérations d'E/S.
-
Vérifiez l'option Contain Writers by Default.
Si elle est sélectionnée, des snapshots cohérents au niveau de l'application sont créés.
Si elle est désélectionnée, des snapshots cohérents au niveau du système de fichiers sont créés.
Reprenez les opérations d'E/S.
Limites
Pris en charge uniquement sur les ESSD avec la fonctionnalité multi-attach désactivée.
Vous pouvez créer des snapshots cohérents au niveau de l'application uniquement pour les disques cloud attachés à la même instance ECS, et non sur différentes instances.
Prérequis
-
Une instance ECS est créée et exécute l'un des systèmes d'exploitation suivants :
Windows : Windows Server 2012 R2 ou version ultérieure.
Linux : CentOS 7.6 ou version ultérieure, Ubuntu 18.04 ou version ultérieure, ou Alibaba Cloud Linux 2.
L'instance ECS est dans l'état Running. Cloud Assistant est dans l'état Normal sur l'instance. Pour afficher l'état de Cloud Assistant, consultez Vérifier l'état de Cloud Assistant et résoudre les exceptions.
-
Un rôle RAM avec une stratégie personnalisée pour les snapshots cohérents au niveau de l'application est attaché à l'instance ECS. Consultez Créer un rôle RAM et l'attacher à une instance ECS.
RemarqueCloud Assistant nécessite des autorisations spécifiques pour accéder à l'instance ECS et exécuter des commandes. Accordez ces autorisations via le rôle RAM.
Configurez un rôle RAM personnalisé, tel que AppSnapshotRoleName.
-
Attachez une stratégie personnalisée au rôle RAM. La stratégie d'exemple suivante accorde des autorisations pour interroger les snapshots, créer des snapshots, ajouter des tags et interroger les informations sur les disques.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeSnapshot*", "ecs:CreateSnapshot*", "ecs:TagResources", "ecs:DescribeDisks" ], "Resource": [ "*" ], "Condition": {} } ] }
Procédure
Utiliser la console ECS
Instance Linux
-
Téléchargez les scripts prescript.sh et postscript.sh préparés sur l'instance ECS.
Consultez Utiliser Workbench.
RemarquePour plus de détails sur les scripts, consultez Fonctionnement.
Dans le coin supérieur gauche de la page, sélectionnez une région et un groupe de ressources.
Dans l'onglet Snapshot-consistent Groups, cliquez sur Create Snapshot-consistent Group.
-
Dans la boîte de dialogue Create Snapshot, configurez les paramètres suivants pour créer un groupe de snapshots cohérents.
Par défaut, le paramètre Resource Type est défini sur Instance.
Sélectionnez une instance Linux dans la liste déroulante Select Instances. Dans la section Select Cloud Disks, sélectionnez les ESSD pour lesquels vous souhaitez créer des snapshots.
-
Développez Advanced Settings et configurez les paramètres de snapshot cohérent au niveau de l'application.
Si vous sélectionnez Enable Application-consistent Snapshot et configurez correctement les scripts, des snapshots cohérents au niveau de l'application sont créés.
-
Si vous sélectionnez Enable Application-consistent Snapshot mais ne configurez pas correctement les scripts, des snapshots cohérents au niveau du système de fichiers sont créés.
RemarqueSi Cloud Assistant n'est pas installé et que vous sélectionnez Enable Application-consistent Snapshot, le plug-in Cloud Assistant s'installe automatiquement.
-
Vous pouvez également activer la fonctionnalité File System I/O Suspension and Resume et spécifier un délai d'expiration.
RemarqueSi vous activez File System I/O Suspension and Resume, le système suspend les opérations d'E/S pendant la création du snapshot pour éviter toute incohérence des données. Si le délai d'expiration dépasse 16 secondes et que la suspension n'est pas terminée dans ce délai, la suspension échoue, ce qui peut entraîner une incohérence des données.
Pour plus de détails sur les paramètres, consultez la section Procédure.
-
Cliquez sur OK.
Après la création, un message affiche l'ID de commande Cloud Assistant et l'ID de tâche. Utilisez l'ID de tâche pour vérifier si des snapshots cohérents au niveau de l'application ont été créés.
-
Dans l'onglet Command Execution Result de la page ECS Cloud Assistant, cliquez sur l'ID de tâche et vérifiez si des snapshots cohérents au niveau de l'application ont été créés.

La valeur de ExitCode est
0comme illustré dans la figure précédente, ce qui indique que les snapshots cohérents au niveau de l'application ont été créés avec succès. L'ID du groupe de snapshots cohérents apparaît dans la sortie de la commande.RemarqueSi ExitCode n'est pas
0, une erreur s'est produite. Résolvez le problème en fonction de la valeur de ExitCode. Consultez la section Codes d'erreur. -
Affichez les informations sur le groupe de snapshots cohérents créé et sur les snapshots du groupe.
Dans l'onglet Snapshot-consistent Groups, recherchez le groupe de snapshots cohérents que vous avez créé et cliquez sur l'ID du groupe de snapshots cohérents pour afficher les détails du snapshot.
-
Dans la section Snapshot Information, vérifiez si un snapshot est un snapshot cohérent au niveau de l'application ou un snapshot cohérent au niveau du système de fichiers en fonction du tag.
-
Si le tag
AppConsistent:Trueapparaît, un snapshot cohérent au niveau de l'application a été créé.
-
Si le tag
FsConsistent:Trueapparaît, un snapshot cohérent au niveau du système de fichiers a été créé.
-
Instance Windows
Dans le coin supérieur gauche de la page, sélectionnez une région et un groupe de ressources.
Dans l'onglet Snapshot-consistent Groups, cliquez sur Create Snapshot-consistent Group.
-
Dans la boîte de dialogue Create Snapshot, configurez les paramètres suivants pour créer un groupe de snapshots cohérents.
Par défaut, le paramètre Resource Type est défini sur Instance.
Sélectionnez une instance Windows dans la liste déroulante Select Instances. Dans la section Select Cloud Disks, sélectionnez les ESSD pour lesquels vous souhaitez créer des snapshots.
-
Développez Advanced Settings et configurez les paramètres de snapshot cohérent au niveau de l'application.
Si vous sélectionnez Enable Application-consistent Snapshot et Contain Writers by Default, des snapshots cohérents au niveau de l'application sont créés. Après avoir sélectionné Enable Application-consistent Snapshot, vous pouvez voir l'option Contain Writers by Default.
-
Si vous sélectionnez uniquement Enable Application-consistent Snapshot, des snapshots cohérents au niveau du système de fichiers sont créés.
RemarqueSi Cloud Assistant n'est pas installé et que vous sélectionnez Enable Application-consistent Snapshot, le plug-in Cloud Assistant s'installe automatiquement.
Pour plus de détails sur les paramètres, consultez la section Procédure.
-
Cliquez sur OK.
Après la création, un message affiche l'ID de commande Cloud Assistant et l'ID de tâche.
-
Dans l'onglet Command Execution Result de la page ECS Cloud Assistant, cliquez sur l'ID de tâche et vérifiez si des snapshots cohérents au niveau de l'application ont été créés.

La valeur de ExitCode est
0comme illustré dans la figure précédente, ce qui indique que les snapshots cohérents au niveau de l'application ont été créés avec succès. L'ID du groupe de snapshots cohérents apparaît dans la sortie de la commande.RemarqueSi ExitCode n'est pas
0, une erreur s'est produite. Résolvez le problème en fonction de la valeur de ExitCode. Consultez la section Codes d'erreur. -
Affichez les informations sur le groupe de snapshots cohérents créé et sur les snapshots du groupe.
Dans l'onglet Snapshot-consistent Groups, recherchez le groupe de snapshots cohérents que vous avez créé et cliquez sur l'ID du groupe de snapshots cohérents pour afficher les détails du snapshot.
-
Dans la section Snapshot Information, vérifiez si un snapshot est un snapshot cohérent au niveau de l'application ou un snapshot cohérent au niveau du système de fichiers en fonction du tag.
-
Si le tag
AppConsistent:Trueapparaît, un snapshot cohérent au niveau de l'application a été créé.
-
Si le tag
FsConsistent:Trueapparaît, un snapshot cohérent au niveau du système de fichiers a été créé.
-
Appeler une opération API
-
Appelez l'opération RunCommand pour créer des snapshots cohérents au niveau de l'application pour une ou plusieurs instances ECS via Cloud Assistant.
Configurez des paramètres tels que
RegionId,Type,CommandContentetInstanceId. La section suivante fournit des exemples deCommandContentet décrit les paramètres du contenu de la commande.Instance Linux
acs-plugin-manager --exec --plugin app-snapshot-plugin --params=-RamRoleName=\"AppSnapshotRoleName\",-EnableFsFreeze=true,-TimeoutInSeconds=30,-PreScriptPath=\"/tmp/prescript.sh\",-PostScriptPath=\"/tmp/postscript.sh\",-ExcludeDiskId=\"\",-Name=\"LinuxApp1\",-Description=\"LinuxApp\"acs-plugin-manager --exec --plugin app-snapshot-pluginspécifie le plug-in app-snapshot-plugin pour Cloud Assistant.-
--params=spécifie les paramètres du plug-in. Le tableau suivant décrit ces paramètres.Paramètre
Type
Obligatoire
Description
RamRoleName
String
Oui
Le rôle RAM attaché à l'instance ECS.
EnableFsFreeze
Boolean
Non
Indique s'il faut activer Linux FsFreeze pour définir les systèmes de fichiers en lecture seule avant la création du snapshot.
Valeur par défaut : True.
TimeoutInSeconds
Integer
Non
Le délai d'expiration pour les opérations d'E/S. Unité : secondes.
Valeur par défaut : 30.
PreScriptPath
String
Non
Le chemin d'accès du script prescript.sh. Exemple : /tmp/prescript.sh. Le script doit répondre aux exigences suivantes :
Autorisations : Définies sur 700 (seul root peut lire, écrire et exécuter).
Contenu du script : Compilez des scripts personnalisés en fonction de vos exigences métier.
ImportantPour les instances Linux, ce paramètre est obligatoire. Si le script comporte des autorisations, des chemins d'accès ou des noms de fichiers invalides, des snapshots cohérents au niveau du système de fichiers sont créés à la place.
PostScriptPath
String
Non
Le chemin d'accès du script postscript.sh. Exemple : /tmp/postscript.sh. Le script doit répondre aux exigences suivantes :
Autorisations : Définies sur 700 (seul root peut lire, écrire et exécuter).
Contenu du script : Compilez des scripts personnalisés en fonction de vos exigences métier.
ImportantPour les instances Linux, ce paramètre est obligatoire. Si le script comporte des autorisations, des chemins d'accès ou des noms de fichiers invalides, des snapshots cohérents au niveau du système de fichiers sont créés à la place.
ExcludeDiskId
String
Non
Les disques cloud à exclure des snapshots.
Name
String
Oui
Le nom du groupe de snapshots cohérents.
Description
String
Non
La description du groupe de snapshots cohérents.
Instance Windows
acs-plugin-manager --exec --plugin app-snapshot-plugin-win --params=-RamRoleName=\"AppSnapshotRoleName\",-EnableWriters=true,-ExcludeDiskId=\"\",-Name=\"APPSnapshot-1\",-Description=\"AppSnapshot\"acs-plugin-manager --exec --plugin app-snapshot-plugin-winspécifie le plug-in app-snapshot-plugin-win pour Cloud Assistant.-
--params=spécifie les paramètres du plug-in. Le tableau suivant décrit ces paramètres.Paramètre
Type
Obligatoire
Description
RamRoleName
String
Oui
Le rôle RAM attaché à l'instance ECS.
EnableWriters
Boolen
Non
Indique s'il faut créer des snapshots cohérents au niveau de l'application. Valeurs valides :
true
false
Valeur par défaut : true.
ExcludeDiskId
String
Non
Les disques cloud à exclure des snapshots.
Name
String
Oui
Le nom du groupe de snapshots cohérents.
Description
String
Non
La description du groupe de snapshots cohérents.
Appelez l'opération DescribeInvocationResults avec l'identifiant
InvokeIdrenvoyé.-
Vérifiez si des snapshots cohérents au niveau de l'application ont été créés.
-
ExitCodeindique le résultat :0: Des snapshots cohérents au niveau de l'application ont été créés.Si la valeur de ExitCode n'est pas
0, une erreur s'est produite. Corrigez l'erreur en fonction du code d'erreur renvoyé. Consultez la section Codes d'erreur de cette rubrique.
-
Outputcontient la sortie de la commande. Si le groupe de snapshots cohérents est créé, l'ID du groupe s'affiche.[time=\"2025-03-04 16:09:25.8200239\"][message=\"Finish SnapshotGroup=ssg-2zefohc25d7n1grq**** Creation, TotalCost=3.8204978s, QueryCost=2.9307022s\"]\n[level=\"info\"][time=\"2025-03-04 16:09:25.8200239\"][message=\"Prepare to Thaw FileSystem or Applications\"]\n[requestor=\"\n\"]\n[level=\"info\"][time=\"2025-03-04 16:09:27.7133096\"][message=\"Thaw Write Request Done\"]\n[level=\"info\"][time=\"2025-03-04 16:09:28.0355042\"][message=\"Tag snapshots with AppConistent\"]\n[level=\"info\"][time=\"2025-03-04 16:09:28.0365941\"][message=\"Take AppConsistent snapshots successfully\"]
-
Codes d'erreur
Code d'erreur (ExitCode) | Description |
0 | Le snapshot est créé comme prévu. |
1 | Une ou plusieurs conditions ne sont pas remplies :
|
2 | Le type ou le nombre des paramètres qui suivent la chaîne |
3 | L'une des erreurs suivantes s'est produite :
|
4 | Le groupe de snapshots cohérents ne peut pas être créé. |
5 | Le groupe de snapshots cohérents n'est pas dans l'état attendu. |
6 | La demande de création du groupe de snapshots cohérents a expiré. |
7 | Un snapshot de disque dans le groupe de snapshots cohérents n'est pas dans l'état attendu. |
8 | Les tags ne peuvent pas être ajoutés au snapshot. |
9 | Le script prescript.sh ne peut pas être exécuté. |
10 | Le script postscript.sh ne peut pas être exécuté. |
11 | Les opérations d'E/S ne peuvent pas être suspendues. |
12 | Les opérations d'E/S ne peuvent pas être reprises. |
13 | Aucun rôle RAM n'est attaché à l'instance. |
14 | Le nombre de snapshots a dépassé la limite supérieure. |
15 | Le snapshot n'est pas dans l'état attendu. |
16 | Le snapshot précédent est en cours de création et de nouveaux snapshots ne peuvent pas être créés. |
255 | Une erreur inconnue s'est produite. |
Références
Vous pouvez créer des snapshots cohérents au niveau de l'application pour les bases de données MySQL ou SQL Server. Consultez Bonnes pratiques pour la création de snapshots cohérents au niveau de l'application pour MySQL (Linux) ou Bonnes pratiques pour les snapshots cohérents au niveau de l'application SQL Server (Windows).