Garanta a consistência dos dados em aplicações como bancos de dados ao restaurar snapshots. Para isso, libere os dados da memória para os discos antes de criar o snapshot.
Contexto
Ao criar um grupo consistente de snapshots com o recurso de snapshot consistente com a aplicação ativado, o sistema gera um dos seguintes tipos de snapshot conforme o cenário.
Item | Snapshot consistente com a aplicação | Snapshot consistente com o sistema de arquivos |
Consistência de dados | Garante a consistência dos dados nas aplicações, como bancos de dados. | Garante a consistência dos dados nos sistemas de arquivos. |
Implementação |
|
|
Cenários suportados | Ideal para aplicações que exigem consistência de dados, como bancos de dados e sistemas críticos de negócios. | Recomendado para cenários que demandam consistência geral do sistema de arquivos, como servidores de arquivos e sistemas de gestão documental. |
Tags | APPConsistent:True | FsConsistent:True |
Funcionamento
O fluxo de criação de snapshots varia entre instâncias Linux e Windows.
Instância Linux
Por padrão, o sistema gera snapshots consistentes com o sistema de arquivos. Após o upload dos scripts prescript.sh e postscript.sh, o sistema verifica a consistência da aplicação com base nesses scripts. Se a verificação for bem-sucedida, os snapshots recebem a marcação de consistentes com a aplicação; caso contrário, permanecem como consistentes com o sistema de arquivos.
A tabela a seguir detalha os dois scripts.
Nome do script | Funcionalidade | Tipo | Caminho | Permissões | Conteúdo |
prescript.sh | Suspende todas as operações de escrita na aplicação antes da criação do snapshot para evitar inconsistência de dados. | Shell | /tmp/prescript.sh | Somente o usuário root possui permissões de leitura, escrita e execução nos scripts. | Desenvolva scripts personalizados conforme suas necessidades de negócio. Por exemplo, siga o procedimento em Step 1: Create the prescript.sh and postscript.sh scripts. |
postscript.sh | Restaura a aplicação e retoma as operações de escrita após a conclusão da criação do snapshot. | Shell | /tmp/postscript.sh |
O nome, o tipo e o caminho de armazenamento do script são fixos. Utilize exatamente os valores listados acima; caso contrário, os scripts falharão na execução.
-
Ative o recurso de snapshot consistente com a aplicação e verifique se o Cloud Assistant está instalado na instância.
NotaSe o Cloud Assistant não estiver instalado e você selecionar Enable Application-consistent Snapshot, o plug-in do Cloud Assistant será instalado automaticamente.
-
O Cloud Assistant executa o script prescript.sh, suspende as operações de E/S e cria os snapshots.
Se as configurações do script estiverem corretas e a execução for bem-sucedida, o sistema cria snapshots consistentes com a aplicação.
Caso as configurações sejam inválidas ou a execução falhe, o sistema gera snapshots consistentes com o sistema de arquivos.
O Cloud Assistant executa o script postscript.sh para retomar as operações de E/S.
Instância Windows
Após 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 da aplicação usando o VSS. Se a verificação for aprovada, os snapshots recebem a marcação de consistentes com a aplicação; caso contrário, são marcados como consistentes com o sistema de arquivos.
-
Ative o recurso de snapshot consistente com a aplicação e verifique se o Cloud Assistant está instalado na instância.
NotaSe o Cloud Assistant não estiver instalado e você selecionar Enable Application-consistent Snapshot, o plug-in do Cloud Assistant será instalado automaticamente.
-
O Cloud Assistant suspende as operações de E/S e cria os snapshots.
O Cloud Assistant invoca o VSS e suspende todas as operações de E/S.
-
Verifique a opção Contain Writers by Default.
Se estiver selecionada, o sistema cria snapshots consistentes com a aplicação.
Se estiver desmarcada, o sistema gera snapshots consistentes com o sistema de arquivos.
Retome as operações de E/S.
Limitações
Suportado apenas em ESSDs com o multi-attach feature desativado.
Você pode criar snapshots consistentes com a aplicação somente para discos cloud anexados à mesma instância ECS. Não é possível abranger instâncias diferentes.
Pré-requisitos
-
Uma instância ECS criada e executando um dos seguintes sistemas operacionais:
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 precisa estar com status Normal na instância. Para visualizar o status do Cloud Assistant, consulte Check Cloud Assistant status and troubleshoot exceptions.
-
Uma função RAM com uma política personalizada para snapshots consistentes com a aplicação deve estar vinculada à instância ECS. Consulte Create a RAM role and attach it to an ECS instance.
NotaO Cloud Assistant exige permissões específicas para acessar a instância ECS e executar comandos. Conceda essas permissões por meio da função RAM.
Configure uma função RAM personalizada, como AppSnapshotRoleName.
-
Anexe uma política personalizada à função RAM. O exemplo de política abaixo concede permissões para consultar snapshots, criar snapshots, adicionar tags e consultar informações de disco.
{ "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 dos scripts prescript.sh e postscript.sh preparados para a instância ECS.
Consulte Use Workbench.
NotaPara detalhes sobre os scripts, consulte How it works.
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 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. Na seção Select Cloud Disks, marque os ESSDs 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 corretamente os scripts, o sistema cria snapshots consistentes com a aplicação.
-
Se você marcar Enable Application-consistent Snapshot mas não configurar os scripts adequadamente, o sistema gera 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 do Cloud Assistant será instalado automaticamente.
-
Também é possível ativar o recurso File System I/O Suspension and Resume e definir um tempo limite.
NotaAo ativar File System I/O Suspension and Resume, o sistema suspende as operações de E/S durante a criação do snapshot para evitar inconsistência de dados. Se o tempo limite exceder 16 segundos e a suspensão não for concluída nesse período, a operação falhará, o que pode causar inconsistência de dados.
Para mais detalhes sobre os parâmetros, consulte a seção Procedure.
-
Clique em OK.
Após a criação, uma mensagem exibe 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 criados.
-
Na aba Command Execution Result da página ECS Cloud Assistant, clique no ID da tarefa e verifique se os snapshots consistentes com a aplicação foram criados.

O valor de ExitCode é
0conforme mostrado na figura anterior, indicando que os snapshots consistentes com a aplicação foram criados com sucesso. O ID do grupo consistente de snapshots aparece na saída do comando.NotaSe ExitCode não for
0, ocorreu um erro. Solucione o problema com base no valor de ExitCode. Consulte a seção Error codes. -
Visualize as informações sobre o grupo consistente de snapshots criado e os snapshots contidos nele.
Na aba Snapshot-consistent Groups, localize o grupo consistente de snapshots criado e clique no ID do grupo para visualizar os detalhes do snapshot.
-
Na seção Snapshot Information, verifique se o snapshot é consistente com a aplicação ou com o sistema de arquivos com base na tag.
-
Se a tag
AppConsistent:Trueestiver presente, trata-se de um snapshot consistente com a aplicação.
-
Caso a tag
FsConsistent:Trueapareça, o 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 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 Windows na lista suspensa Select Instances. Na seção Select Cloud Disks, marque os ESSDs 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 Contain Writers by Default, o sistema cria snapshots consistentes com a aplicação. Após marcar Enable Application-consistent Snapshot, a opção Contain Writers by Default torna-se visível.
-
Se você selecionar apenas Enable Application-consistent Snapshot, o sistema gera 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 do Cloud Assistant será instalado automaticamente.
Para mais detalhes sobre os parâmetros, consulte a seção Procedure.
-
Clique em OK.
Após a criação, uma mensagem exibe 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 e verifique se os snapshots consistentes com a aplicação foram criados.

O valor de ExitCode é
0conforme mostrado na figura anterior, indicando que os snapshots consistentes com a aplicação foram criados com sucesso. O ID do grupo consistente de snapshots aparece na saída do comando.NotaSe ExitCode não for
0, ocorreu um erro. Solucione o problema com base no valor de ExitCode. Consulte a seção Error codes. -
Visualize as informações sobre o grupo consistente de snapshots criado e os snapshots contidos nele.
Na aba Snapshot-consistent Groups, localize o grupo consistente de snapshots criado e clique no ID do grupo para visualizar os detalhes do snapshot.
-
Na seção Snapshot Information, verifique se o snapshot é consistente com a aplicação ou com o sistema de arquivos com base na tag.
-
Se a tag
AppConsistent:Trueestiver presente, trata-se de um snapshot consistente com a aplicação.
-
Caso a tag
FsConsistent:Trueapareça, o snapshot é consistente com o sistema de arquivos.
-
Chamar uma operação de API
-
Chame a operação RunCommand para criar snapshots consistentes com a aplicação em uma ou mais instâncias ECS via Cloud Assistant.
Configure parâmetros como
RegionId,Type,CommandContenteInstanceId. A seção a seguir fornece exemplos deCommandContente descreve os parâmetros do 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-pluginespecifica o plug-in app-snapshot-plugin para o Cloud Assistant.-
--params=define os parâmetros do plug-in. A tabela a seguir 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 Linux FsFreeze deve ser ativado para colocar os sistemas de arquivos em modo somente leitura antes da criação do snapshot.
Valor padrão: True.
TimeoutInSeconds
Integer
Não
O tempo limite para operações de E/S. Unidade: segundos.
Valor padrão: 30.
PreScriptPath
String
Não
O caminho do script prescript.sh. Exemplo: /tmp/prescript.sh. O script deve atender aos seguintes requisitos:
Permissões: Definir como 700 (somente root pode ler, escrever e executar).
Conteúdo do script: Desenvolva scripts personalizados conforme suas necessidades de negócio.
ImportantePara instâncias Linux, este parâmetro é obrigatório. Se o script tiver permissões, caminhos ou nomes de arquivo inválidos, o sistema criará snapshots consistentes com o sistema de arquivos.
PostScriptPath
String
Não
O caminho do script postscript.sh. Exemplo: /tmp/postscript.sh. O script deve atender aos seguintes requisitos:
Permissões: Definir como 700 (somente root pode ler, escrever e executar).
Conteúdo do script: Desenvolva scripts personalizados conforme suas necessidades de negócio.
ImportantePara instâncias Linux, este parâmetro é obrigatório. Se o script tiver permissões, caminhos ou nomes de arquivo inválidos, o sistema criará snapshots consistentes com o sistema de arquivos.
ExcludeDiskId
String
Não
Os discos cloud a serem excluídos dos snapshots.
Name
String
Sim
O nome do grupo consistente de snapshots.
Description
String
Não
A 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-winespecifica o plug-in app-snapshot-plugin-win para o Cloud Assistant.-
--params=define os parâmetros do plug-in. A tabela a seguir descreve 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
Os discos cloud a serem excluídos dos snapshots.
Name
String
Sim
O nome do grupo consistente de snapshots.
Description
String
Não
A descrição do grupo consistente de snapshots.
Chame a operação DescribeInvocationResults usando o
InvokeIdretornado.-
Verifique se os snapshots consistentes com a aplicação foram criados.
-
ExitCodeindica o resultado:0: Snapshots consistentes com a aplicação criados com sucesso.Se o valor de ExitCode não for
0, ocorreu um erro. Corrija o erro com base no código de erro retornado. Consulte a seção Error codes deste tópico.
-
Outputcontém a saída do comando. Se o grupo consistente de snapshots for criado, o ID do grupo será exibido.[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 | O snapshot foi criado conforme esperado. |
1 | Uma ou mais condições não foram atendidas:
|
2 | O tipo ou a quantidade de parâmetros após a string |
3 | Ocorreu um dos seguintes erros:
|
4 | Não foi possível criar o grupo consistente de snapshots. |
5 | O grupo consistente de snapshots não está no estado esperado. |
6 | A solicitação para criar o grupo consistente de snapshots atingiu o tempo limite. |
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 | Não foi possível executar o script prescript.sh. |
10 | Não foi possível executar o script postscript.sh. |
11 | Não foi possível suspender as operações de E/S. |
12 | Não foi possível retomar as operações de E/S. |
13 | Nenhuma função RAM está vinculada à instância. |
14 | O número de snapshots excedeu o limite máximo. |
15 | O snapshot não está no estado esperado. |
16 | Um snapshot anterior está sendo criado, impedindo a criação de novos snapshots. |
255 | Ocorreu um erro desconhecido. |
Referências
É possível criar snapshots consistentes com a aplicação para bancos de dados MySQL ou SQL Server. Consulte Best practices for creating application-consistent snapshots for MySQL (Linux) ou Best practices for SQL Server application-consistent snapshots (Windows).