Em uma instância do Elastic Compute Service (ECS) em execução, alguns dados de aplicações, como bancos de dados, podem ainda estar na memória ou em processo de gravação nos dispositivos de armazenamento. Snapshots não registram dados pendentes de gravação em disco, o que pode causar perda de dados ou inconsistência na aplicação durante a restauração. A Alibaba Cloud integra o serviço de snapshot ao Cloud Assistant para oferecer o recurso de snapshot consistente com a aplicação, garantindo a integridade dos dados das suas aplicações ao restaurar snapshots.
Informações básicas
Ao criar um grupo consistente de snapshots, ative o recurso de snapshot consistente com a aplicação. O sistema gera snapshots consistentes com a aplicação ou com o sistema de arquivos conforme o cenário de negócio. A tabela a seguir descreve os dois tipos de snapshots.
Item | Snapshot consistente com a aplicação | Snapshot consistente com o sistema de arquivos |
Consistência de dados | Garante a consistência dos dados armazenados e das aplicações, como bancos de dados. | Assegura a consistência dos dados no nível do sistema de arquivos. |
Implementação |
|
|
Cenários suportados | Indicado para aplicações que exigem consistência rigorosa de dados, como bancos de dados e sistemas críticos de negócios. | Recomendado para cenários que demandam consistência global do sistema de arquivos, como servidores de arquivos e sistemas de gestão documental. |
Tags | APPConsistent:True | FsConsistent:True |
Funcionamento dos snapshots consistentes com a aplicação
A seção abaixo explica o funcionamento dos snapshots consistentes com a aplicação.
Instância Linux
Ao ativar o recurso de snapshot consistente com a aplicação em uma instância Linux, o sistema adota inicialmente o estado consistente com o sistema de arquivos. Após o upload dos scripts shell preparados previamente (prescript.sh e postscript.sh), o sistema valida a consistência da aplicação com base nesses scripts. Se a validação for bem-sucedida, os snapshots recebem a marcação de consistentes com a aplicação. Caso contrário, são classificados como consistentes com o sistema de arquivos.
A tabela a seguir detalha os scripts prescript.sh e postscript.sh.
Nome do script | Funcionalidade | Tipo | Caminho | Permissões | Conteúdo |
prescript.sh | Suspende todas as operações de escrita na aplicação antes de executar tarefas que possam afetá-la. Isso evita inconsistências causadas por novos dados gerados durante o processo. | Shell | /tmp/prescript.sh | Somente o usuário root possui permissões de leitura, escrita e execução nos scripts. | Desenvolva os scripts personalizados conforme suas necessidades de negócio. Por exemplo, siga o procedimento em Etapa 1: Criar os scripts prescript.sh e postscript.sh. |
postscript.sh | Após a conclusão de uma operação que afeta a aplicação, como um backup de dados, este script restaura a aplicação e retoma as operações de escrita. | Shell | /tmp/postscript.sh |
O nome do script, o tipo e o caminho de armazenamento para criar snapshots consistentes com a aplicação são fixos. Utilize esses valores exatos ao desenvolver seus scripts personalizados. Caso contrário, a execução dos scripts pode falhar.
-
Ative o recurso de snapshot consistente com a aplicação na instância ECS alvo e verifique se o Cloud Assistant está instalado nela.
NotaSe o Cloud Assistant não estiver instalado e você selecionar a opção Enable Application-consistent Snapshot, o plug-in necessário será instalado automaticamente na instância.
-
O Cloud Assistant acessa a instância ECS para executar comandos relevantes automaticamente, rodar o script prescript.sh, suspender operações de I/O e criar os snapshots.
Se as configurações do script estiverem corretas e ele for executado com êxito, serão gerados snapshots consistentes com a aplicação.
Caso as configurações (como permissões, caminho ou nome) sejam inválidas ou a execução falhe, o sistema criará snapshots consistentes com o sistema de arquivos em vez de consistentes com a aplicação.
O Cloud Assistant executa o script postscript.sh para retomar as operações de I/O.
Instância Windows
Ao ativar o recurso de snapshot consistente com a aplicação em uma instância Windows, o Cloud Assistant realiza uma verificação de consistência em conjunto com o VSS. Se a verificação for aprovada, os snapshots são marcados como consistentes com a aplicação. Em caso de falha, são classificados como consistentes com o sistema de arquivos.
-
Ative o recurso de snapshot consistente com a aplicação na instância ECS desejada e confirme a instalação do Cloud Assistant.
NotaSe o Cloud Assistant não estiver instalado e você marcar a opção Enable Application-consistent Snapshot, o plug-in correspondente será instalado automaticamente.
-
O Cloud Assistant acessa a instância ECS para executar comandos pertinentes, suspender operações de I/O e gerar os snapshots.
O Cloud Assistant invoca o VSS e suspende todas as operações de I/O.
-
Verifique se a opção Contain Writers by Default está selecionada.
Se estiver selecionada, o sistema cria snapshots consistentes com a aplicação.
Se estiver desmarcada, serão gerados snapshots consistentes com o sistema de arquivos.
Retome as operações de I/O.
Limites
Snapshots consistentes com a aplicação são suportados apenas por Enterprise SSDs (ESSDs) com o recurso multi-attach desativado.
É possível criar snapshots consistentes com a aplicação para discos de nuvem anexados à mesma instância ECS, mas não para discos em instâncias diferentes.
Pré-requisitos
-
Uma instância ECS criada e executando uma das seguintes versões de sistema operacional:
Windows: Windows Server 2012 R2 ou superior.
Linux: CentOS 7.6 ou superior, Ubuntu 18.04 ou superior, ou Alibaba Cloud Linux 2.
A instância ECS deve estar no estado Running. O Cloud Assistant deve apresentar status Normal na instância. Para verificar o status do Cloud Assistant, consulte Status e solução de problemas do Cloud Assistant.
-
Uma função do Resource Access Management (RAM) deve estar vinculada à instância ECS, e essa função deve ter uma política personalizada com permissões para snapshots consistentes com a aplicação. Para mais detalhes, veja Criar uma função RAM e vinculá-la a uma instância ECS.
NotaA criação de snapshots consistentes com a aplicação exige que o Cloud Assistant acesse a instância ECS e execute comandos. Antes de invocá-lo, conceda as permissões necessárias por meio da função RAM.
Configure uma função RAM personalizada, como AppSnapshotRoleName.
-
Anexe uma política personalizada à função RAM. O código abaixo exemplifica uma política que concede permissões para consultar snapshots, criar snapshots, adicionar tags e obter informações de discos.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeSnapshot*", "ecs:CreateSnapshot*", "ecs:TagResources", "ecs:DescribeDisks" ], "Resource": [ "*" ], "Condition": {} } ] }
Procedimento
Usar o console ECS
Instância Linux
-
Faça o upload prévio dos scripts prescript.sh e postscript.sh preparados para a instância ECS.
Para mais informações, consulte Usar o Workbench.
NotaPara detalhes sobre os scripts prescript.sh e postscript.sh, veja Funcionamento dos snapshots consistentes com a aplicação.
No canto superior esquerdo da página, selecione uma região e um grupo de recursos.
Na aba Snapshot-consistent Groups, clique em Create Snapshot-consistent Group.
-
Na caixa de diálogo Create Snapshot, configure os parâmetros descritos na tabela a seguir para criar um grupo consistente de snapshots.
Por padrão, o parâmetro Resource Type vem definido como Instance.
Selecione uma instância Linux na lista suspensa Select Instances. Em seguida, na seção Select Cloud Disks, escolha os ESSDs da instância para os quais deseja criar snapshots.
-
Expanda Advanced Settings e defina as configurações de snapshot consistente com a aplicação.
Ao selecionar Enable Application-consistent Snapshot e configurar os scripts corretamente, o sistema gera snapshots consistentes com a aplicação.
-
Se você marcar Enable Application-consistent Snapshot mas não configurar os scripts ou configurá-los incorretamente, serão criados snapshots consistentes com o sistema de arquivos.
NotaCaso o Cloud Assistant não esteja instalado e você selecione Enable Application-consistent Snapshot, o plug-in necessário será instalado automaticamente na instância.
-
Também é possível selecionar Enable para ativar o recurso File System I/O Suspension and Resume e definir um tempo limite.
NotaAo ativar o recurso File System I/O Suspension and Resume, o sistema pausa as operações de I/O nos sistemas de arquivos durante a criação do snapshot para evitar inconsistências. Se o parâmetro Timeout Period for definido com um valor maior que 16 e a suspensão de I/O não for concluída nesse período, a operação falhará, podendo resultar em inconsistência de dados.
Para detalhes sobre os parâmetros, consulte a seção Procedimento deste tópico.
-
Clique em OK.
Após a criação do grupo consistente de snapshots, uma mensagem exibirá o ID do comando do Cloud Assistant e o ID da tarefa. Use o ID da tarefa para verificar se os snapshots consistentes com a aplicação foram gerados.
-
Na aba Command Execution Result da página ECS Cloud Assistant, clique no ID da tarefa para confirmar a criação dos snapshots consistentes com a aplicação.

O valor de ExitCode é
0, conforme mostrado na figura anterior. Isso indica que os snapshots consistentes com a aplicação foram criados com êxito pelo Cloud Assistant. Nesse caso, o ID do grupo consistente de snapshots aparece na saída do comando.NotaSe o valor de ExitCode for diferente de
0, ocorreu um erro. Solucione o problema com base no valor da coluna ExitCode. Para mais informações, consulte a seção Códigos de erro deste tópico. -
Visualize as informações do grupo consistente de snapshots criado e dos snapshots contidos nele.
Na aba Snapshot-consistent Groups, localize o grupo criado e clique no respectivo ID para ver os detalhes dos snapshots.
-
Na seção Snapshot Information, verifique pela tag se o snapshot é consistente com a aplicação ou com o sistema de arquivos.
-
A presença da tag
AppConsistent:Trueindica a criação de um snapshot consistente com a aplicação.
-
A presença da tag
FsConsistent:Trueindica a criação de um snapshot consistente com o sistema de arquivos.
-
Instância Windows
No canto superior esquerdo da página, selecione uma região e um grupo de recursos.
Na aba Snapshot-consistent Groups, clique em Create Snapshot-consistent Group.
-
Na caixa de diálogo Create Snapshot, configure os parâmetros listados na tabela abaixo para criar o grupo consistente de snapshots.
O parâmetro Resource Type tem como valor padrão Instance.
Escolha uma instância Windows na lista Select Instances. Depois, na seção Select Cloud Disks, selecione os ESSDs da instância para os quais deseja gerar snapshots.
-
Expanda Advanced Settings e ajuste as opções de snapshot consistente com a aplicação.
Selecione Enable Application-consistent Snapshot e Contain Writers by Default para criar snapshots consistentes com a aplicação. Após marcar Enable Application-consistent Snapshot, a opção Contain Writers by Default ficará visível.
-
Se selecionar apenas Enable Application-consistent Snapshot, o sistema gerará snapshots consistentes com o sistema de arquivos.
NotaCaso o Cloud Assistant não esteja instalado e você marque Enable Application-consistent Snapshot, o plug-in necessário será instalado automaticamente.
Para mais detalhes sobre os parâmetros, veja a seção Procedimento deste tópico.
-
Clique em OK.
Após a criação do grupo consistente de snapshots, uma mensagem exibirá o ID do comando do Cloud Assistant e o ID da tarefa.
-
Na aba Command Execution Result da página ECS Cloud Assistant, clique no ID da tarefa para verificar se os snapshots consistentes com a aplicação foram criados.

O valor de ExitCode é
0, conforme ilustrado acima. Isso confirma que os snapshots consistentes com a aplicação foram gerados com sucesso pelo Cloud Assistant. Nessa situação, o ID do grupo consistente de snapshots aparece na saída do comando.NotaSe o valor de ExitCode não for
0, houve um erro. Solucione o problema com base no valor da coluna ExitCode. Consulte a seção Códigos de erro para mais informações. -
Consulte as informações do grupo consistente de snapshots criado e dos snapshots associados.
Na aba Snapshot-consistent Groups, encontre o grupo criado e clique no seu ID para acessar os detalhes dos snapshots.
-
Na seção Snapshot Information, identifique pela tag se o snapshot é consistente com a aplicação ou com o sistema de arquivos.
-
A tag
AppConsistent:Truesinaliza um snapshot consistente com a aplicação.
-
A tag
FsConsistent:Truesinaliza um snapshot consistente com o sistema de arquivos.
-
Chamar uma operação de API
-
Invoque a operação RunCommand para usar o Cloud Assistant na criação de snapshots consistentes com a aplicação em uma ou mais instâncias ECS.
Defina parâmetros como
RegionId,Type,CommandContenteInstanceIdconforme sua necessidade. A seção a seguir apresenta exemplos deCommandContente descreve os parâmetros especificados no conteúdo do comando.Instância 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-pluginrefere-se ao plug-in app-snapshot-plugin usado para executar comandos do Cloud Assistant.-
--params=define os parâmetros de configuração do plug-in. A tabela abaixo descreve esses parâmetros.Parâmetro
Tipo
Obrigatório
Descrição
RamRoleName
String
Sim
A função RAM vinculada à instância ECS.
EnableFsFreeze
Boolean
Não
Define se o recurso Linux FsFreeze deve ser ativado para colocar os sistemas de arquivos em modo somente leitura antes da criação dos snapshots.
Valor padrão: True.
TimeoutInSeconds
Integer
Não
Tempo limite para operações de I/O. Unidade: segundos.
Valor padrão: 30.
PreScriptPath
String
Não
Caminho onde o script prescript.sh está armazenado. Exemplo: /tmp/prescript.sh. O script prescript.sh deve atender aos seguintes requisitos:
Permissões: Defina o valor de permissão como 700, permitindo leitura, escrita e execução apenas ao usuário root.
Conteúdo do script: Desenvolva o conteúdo personalizado conforme suas necessidades de negócio.
ImportanteEste parâmetro é obrigatório para snapshots consistentes com a aplicação em instâncias Linux. Configurações inválidas no script (permissões, caminhos ou nomes de arquivo) resultarão na criação de snapshots consistentes com o sistema de arquivos.
PostScriptPath
String
Não
Caminho onde o script postscript.sh está armazenado. Exemplo: /tmp/postscript.sh. O script postscript.sh deve atender aos seguintes requisitos:
Permissões: Defina o valor de permissão como 700, permitindo leitura, escrita e execução apenas ao usuário root.
Conteúdo do script: Desenvolva o conteúdo personalizado conforme suas necessidades de negócio.
ImportanteEste parâmetro é obrigatório para snapshots consistentes com a aplicação em instâncias Linux. Configurações inválidas no script (permissões, caminhos ou nomes de arquivo) resultarão na criação de snapshots consistentes com o sistema de arquivos.
ExcludeDiskId
String
Não
Discos de nuvem a serem excluídos dos snapshots.
Name
String
Sim
Nome do grupo consistente de snapshots.
Description
String
Não
Descrição do grupo consistente de snapshots.
Instância 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-winrefere-se ao plug-in app-snapshot-plugin-win usado para executar comandos do Cloud Assistant.-
--params=define os parâmetros de configuração do plug-in. A tabela a seguir detalha esses parâmetros.Parâmetro
Tipo
Obrigatório
Descrição
RamRoleName
String
Sim
A função RAM vinculada à instância ECS.
EnableWriters
Boolen
Não
Define se snapshots consistentes com a aplicação devem ser criados. Valores válidos:
true
false
Valor padrão: true.
ExcludeDiskId
String
Não
Discos de nuvem a serem excluídos dos snapshots.
Name
String
Sim
Nome do grupo consistente de snapshots.
Description
String
Não
Descrição do grupo consistente de snapshots.
Chame a operação DescribeInvocationResults usando o valor retornado de
InvokeId.-
Verifique se os snapshots consistentes com a aplicação foram criados.
-
ExitCoderetorna um código de erro.O valor
0indica que os snapshots consistentes com a aplicação foram criados com sucesso.Se o valor de ExitCode não for
0, ocorreu um erro. Corrija o problema com base no código retornado na coluna ExitCode. Consulte a seção Códigos de erro para mais detalhes.
-
Outputcontém a saída da execução do comando. Se o grupo consistente de snapshots foi criado, informações como o ID do grupo serão exibidas.[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\"]
-
Códigos de erro
Código de erro (ExitCode) | Descrição |
0 | Snapshot criado com êxito. |
1 | Uma ou mais condições não foram atendidas. Possíveis erros incluem:
|
2 | Tipo ou quantidade inválida de parâmetros após a string |
3 | Possíveis erros incluem:
|
4 | Falha ao criar o grupo consistente de snapshots. |
5 | O grupo consistente de snapshots não está no estado esperado. |
6 | Tempo esgotado na solicitação de criação do grupo consistente de snapshots. |
7 | Um snapshot de disco no grupo consistente de snapshots não está no estado esperado. |
8 | Não foi possível adicionar tags ao snapshot. |
9 | Falha na execução do script prescript.sh. |
10 | Falha na execução do script postscript.sh. |
11 | Não foi possível suspender as operações de I/O. |
12 | Não foi possível retomar as operações de I/O. |
13 | Nenhuma função RAM vinculada à instância. |
14 | Limite máximo de snapshots excedido. |
15 | O snapshot não está no estado esperado. |
16 | Criação de snapshot anterior em andamento; novos snapshots não podem ser criados. |
255 | Erro desconhecido. |
Referências
É possível criar snapshots consistentes com a aplicação para bancos de dados MySQL ou SQL Server. Para mais informações, consulte Melhores práticas para criar snapshots consistentes com a aplicação para MySQL (Linux) ou Melhores práticas para criar snapshots consistentes com a aplicação para SQL Server (Windows).