Skip to main content
Snapshots são backups do armazenamento de uma aplicação ou de um banco de dados. Aplicações e bancos de dados compartilham os mesmos três métodos:
  • c.Apps.Snapshots: List(ctx, appID), Create(ctx, appID), Restore(ctx, appID, name, versionID)
  • c.Databases.Snapshots: List(ctx, databaseID), Create(ctx, databaseID), Restore(ctx, databaseID, name, versionID)
Quantos snapshots você pode criar por dia depende do seu plano (veja Limites). Cada trecho abaixo roda sozinho dentro deste programa: cole um de cada vez em main e execute o goimports (veja Executando os exemplos).

Listando snapshots

Criando um snapshot

Create aguarda o snapshot (sem um prazo no ctx, pelo menos 2 minutos antes de expirar). Um snapshot grande pode não terminar a tempo: a API então responde 202 e o SDK retorna um SnapshotCreated com Pending definido como true e um erro nil. O snapshot continua sendo gerado e aparece em List sozinho, geralmente em até 2 minutos.
Nunca chame Create novamente para verificar um snapshot pendente: isso inicia um novo e conta para a cota diária de snapshots do plano. Consulte List em vez disso.

Restaurando um snapshot

Restore(ctx, id, name, versionID) recebe o Name e o VersionID de um snapshot listado.

Baixando um snapshot

c.DownloadSnapshot(ctx, url, w) transmite um arquivo de snapshot a partir da sua url assinada (de List ou Create) para qualquer io.Writer. Ele não chama a API: a chave de API nunca é enviada ao host de armazenamento, e a URL nunca aparece no erro retornado. Nada é armazenado em memória, e não há prazo padrão (limite-o ou cancele-o com o ctx). Um erro de rede antes da resposta é tentado novamente como qualquer GET.
Uma URL expirada ou inválida retorna um *APIError com o status HTTP do host de armazenamento e UNKNOWN_ERROR. Uma URL que não pode ser interpretada e um erro do seu io.Writer são retornados como erros simples.

Snapshots da conta

c.Account.Snapshots(ctx, scope) lista todos os snapshots da conta. Passe "" para todos eles, ou squarecloud.SnapshotScopeApplications ou squarecloud.SnapshotScopeDatabases. Requer um plano ativo e compartilha o rate limit dos endpoints de rede (429 RATE_LIMITED).

Limites

  • Create é limitado a uma chamada a cada 180 segundos e a uma cota diária que depende do plano: ultrapassar a cota resulta em 429 DAILY_SNAPSHOTS_LIMIT_REACHED.
  • Enquanto uma restauração está em andamento, excluir a aplicação ou iniciar o banco de dados resulta em 403 RESTORE_IN_PROGRESS.

Próximos passos

Bancos de dados

Crie e gerencie bancos de dados.

Referência da API de snapshots

Os endpoints REST por trás destes métodos.

Snapshots pela CLI

As mesmas ações pelo terminal.