Snapshots e backups do Amazon Redshift
Snapshots são backups pontuais de um cluster. Existem dois tipos de snapshots: automatizado e manual. O Amazon Redshift armazena esses snapshots internamente no Amazon S3 usando uma conexão Secure Sockets Layer (SSL) criptografada.
O Amazon Redshift tira automaticamente snapshots incrementais que rastreiam as alterações no cluster desde o snapshot automatizado anterior. Os snapshots automatizados retêm todos os dados necessários para restaurar um cluster a partir de um snapshot. Você pode criar uma programação de snapshot para controlar quando snapshots automatizados são tirados ou tirar um snapshot manual a qualquer momento.
Quando você restaura a partir de um snapshot, o Amazon Redshift cria um novo cluster e disponibiliza o novo cluster antes que todos os dados sejam carregados, para que você possa começar a consultar o novo cluster imediatamente. O cluster transmite dados sob demanda do snapshot em resposta a consultas ativas e carrega os dados restantes em segundo plano.
Ao iniciar um cluster, você pode definir o período de retenção para snapshots automatizados e manuais. Você pode alterar o período de retenção padrão para snapshots automatizados e manuais, modificando o cluster. É possível alterar o período de retenção do snapshot manual ao criar o snapshot ou modificando o snapshot.
Você pode monitorar o progresso de snapshots visualizando os detalhes do snapshot no AWS Management Console ou chamando describe-cluster-snapshots na CLI ou a ação de API DescribeClusterSnapshots. Para um snapshot em andamento, eles exibem informações como o tamanho do snapshot incremental, a taxa de transferência, o tempo decorrido e o tempo estimado restante.
Para garantir que seus backups estejam sempre disponíveis para o cluster, o Amazon Redshift armazena snapshots em um bucket do Amazon S3 do gerenciado internamente pelo Amazon Redshift. Para gerenciar cobranças de armazenamento, avalie de quantos dias você precisa para manter snapshots automatizados e configure o período de retenção de acordo. Exclua todos os snapshots manuais dos quais você não precisa mais. Para obter mais informações sobre o custo do armazenamento de backup, consulte a página de Preços do Amazon Redshift
Trabalhar com snapshots e backups no Amazon Redshift sem servidor
O Amazon Redshift sem servidor, do mesmo modo que um cluster provisionado, permite que você faça um backup como uma representação pontual dos objetos e dos dados no namespace. Existem dois tipos de backup no Amazon Redshift sem servidor: snapshots criados manualmente e pontos de recuperação criados automaticamente pelo Amazon Redshift sem servidor. Você pode encontrar mais informações sobre como trabalhar com snapshots para o Amazon Redshift sem servidor em Trabalhar com snapshots e pontos de recuperação.
Também é possível restaurar um snapshot de um cluster provisionado para um namespace sem servidor. Para obter mais informações, consulte Restaurar um namespace com tecnologia sem servidor usando um snapshot.
Snapshots automatizados
Quando snapshots automatizados são ativados para um cluster, o Amazon Redshift tira snapshots desse cluster periodicamente. Por padrão, o Amazon Redshift tira um snapshot a cada oito horas ou depois de cada 5 GB por nó de alterações de dados, o que ocorrer primeiro. Se o seu volume de dados for maior que 5 GB * número de nós, o menor tempo entre a criação automatizada de snapshots será de 15 minutos. Você também pode criar uma programação de snapshot para controlar quando snapshots automatizados são tirados. Se você estiver usando cronogramas personalizados, o tempo mínimo entre os snapshots automatizados será de uma hora. Os snapshots automatizados são ativados por padrão quando você cria um cluster.
Os snapshots automatizados são excluídos ao final de um período de retenção. O período de retenção padrão é de um dia, mas você pode modificá-lo usando o console do Amazon Redshift ou programaticamente usando a API ou CLI do Amazon Redshift.
Para desativar snapshots automatizados, defina o período de retenção como zero. Se você desativar os snapshots automatizados, o Amazon Redshift para de tirar snapshots e exclui todos os snapshots automatizados existentes para o cluster. Não é possível desabilitar snapshots automatizados para tipos de nó RA3. Você pode definir um período de retenção automatizado do tipo de nó RA3 de 1 a 35 dias.
Somente o Amazon Redshift pode excluir um snapshot automatizado; você não pode excluí-lo manualmente. O Amazon Redshift exclui snapshots automatizados no final do período de retenção de um snapshot, quando você desativa os snapshots automatizados para o cluster ou quando exclui o cluster. O Amazon Redshift retém o snapshot automatizado mais recente até que você desabilite os snapshots automatizados ou exclua o cluster.
Se quiser manter um snapshot automatizado por um período mais longo, você poderá criar uma cópia dele como um snapshot manual. O snapshot automatizado será mantido até o final do período de retenção, mas o snapshot manual correspondente será retido até você excluí-lo manualmente ou até o final do período de retenção.
Programações de snapshots automatizados
Para controlar com precisão quando snapshots são tirados, você pode criar uma programação de snapshot e anexá-la a um ou mais clusters. Quando você modifica uma programação de snapshot, a programação é modificada para todos os clusters associados. Se um cluster não tem uma programação de snapshot anexada, o cluster usa a programação padrão de snapshot automatizado.
Uma programação de snapshot é um conjunto de regras de programação. Você pode definir uma regra de programação simples com base em um intervalo especificado, como a cada 8 ou 12 horas. Você também pode adicionar regras para tirar snapshots em certos dias da semana, em horários específicos ou durante períodos específicos. As regras também podem ser definidas usando expressões cron semelhantes ao Unix
Formato da programação de snapshot
No console do Amazon Redshift, você pode criar uma programação de snapshot. Você pode anexar uma programação a um cluster para acionar a criação de um snapshot do sistema. Uma programação pode ser associada a vários clusters, e você pode criar várias definições cron em uma programação para acionar um snapshot.
Você pode definir uma programação para seus snapshots usando uma sintaxe cron. A definição dessas programações usa uma sintaxe cron
As expressões cron modificadas do Amazon Redshift têm 3 campos obrigatórios, separados por espaço em branco.
Sintaxe
cron(
Minutes
Hours
Day-of-month
Month
Day-of-week
Year
)
Campos | Valores | Curingas |
---|---|---|
Minutos |
0–59 |
, - * / |
Horas |
0–23 |
, - * / |
Dia do mês |
1–31 |
, - * ? / L W |
Mês |
1-12 ou JAN-DEZ |
, - * / |
Dia da semana |
1-7 ou SUN-SAT |
, - * ? L # |
Ano |
1970–2199 |
, - * / |
Curingas
-
A , (vírgula) curinga inclui valores adicionais. No campo
Day-of-week
,MON,WED,FRI
incluirá segunda-feira, quarta-feira e sexta-feira. Os valores totais são limitados a 24 por campo. -
O - (traço) curinga especifica intervalos. No campo
Hour
, 1–15 incluiria as horas 1 a 15 do dia especificado. -
O * (asterisco) curinga inclui todos os valores no campo. No campo
Hours
, * incluirá cada hora. -
A / (barra) curinga especifica incrementos. No campo
Hours
, você pode inserir1/10
para especificar a cada décima hora, a partir da primeira hora do dia (por exemplo, 01:00, 11:00 e 21:00). -
O curinga ? (interrogação) especifica um ou outro. No campo
Day-of-month
, você pode inserir 7 e, se não se importar com qual dia da semana era o sétimo, pode inserir ? no campo Dia da semana. -
O curinga L nos campos
Day-of-month
ouDay-of-week
especifica o último dia do mês ou da semana. -
O curinga W no campo
Day-of-month
especifica um dia da semana. No campoDay-of-month
,3W
especifica o dia mais próximo do terceiro dia da semana do mês. -
O curinga # no campo Dia da semana especifica uma determinada instância do dia da semana definido dentro de um mês. Por exemplo, 3#2 seria a segunda terça-feira do mês: o 3 refere-se a terça-feira, porque é o terceiro dia de cada semana, e o 2 refere-se ao segundo dia desse tipo dentro do mês.
nota
Se você usar um caractere “#”, poderá definir apenas uma expressão no campo do dia da semana. Por exemplo, "3#1,6#3" não é válido porque é interpretado como duas expressões.
Limites
-
Não é possível especificar os campos
Day-of-month
eDay-of-week
na mesma expressão cron. Se você especificar um valor em um dos campos, deverá usar um ? (ponto de interrogação) no outro. -
Os cronogramas de snapshot não são compatíveis com as seguintes frequências:
-
Snapshots programados com frequência superior a 1 por hora.
-
Snapshots programados com frequência inferior a 1 por dia (24 horas).
Se você tem programações sobrepostas que resultam na programação de snapshots em uma janela de 1 hora, o resultado é um erro de validação.
-
Ao criar uma programação, você pode usar os seguintes exemplos de strings cron.
Minutos | Horas | Dia da semana | Significado |
---|---|---|---|
0 |
14-20/1 |
TER |
A cada hora entre 14h e 20h na terça-feira. |
0 |
21 |
SEG-SEX |
Todas as noites, às 21h, de segunda a sexta-feira. |
30 |
0/6 |
SÁB-DOM |
Incremento a cada 6 horas no sábado e domingo, a partir de 30 minutos após meia-noite (00:30) daquele dia. Isso resulta em um snapshot às [00:30, 06:30, 12:30 e 18:30] de cada dia. |
30 |
12/4 |
* |
Incremento a cada 4 horas, a partir de 12:30 de cada dia. O resultado é [12:30, 16:30, 20:30]. |
Por exemplo, para executar em uma programação de um incremento a cada 2 horas, a partir de 15:15 de cada dia. O resultado é [15:15, 17:15, 19:15, 21:15, 23:15] , especifique:
cron(15 15/2 *)
Você pode criar várias definições de programação cron em uma programação. Por exemplo, o seguinte comando da AWS CLI contém duas programações cron em uma programação.
create-snapshot-schedule --schedule-identifier "my-test" --schedule-definition "cron(0 17 SAT,SUN)" "cron(0 9,17 MON-FRI)"
Snapshots manuais
Você poderá obter um snapshot manual a qualquer momento. Por padrão, os snapshots manuais são retidos indefinidamente, mesmo depois que você exclui o cluster. Você pode especificar o período de retenção ao criar um snapshot manual ou pode alterar o período de retenção modificando o snapshot. Para obter mais informações sobre como alterar o período de retenção, consulte Modificar o período de retenção de snapshots manuais.
Se um snapshot for excluído, você não poderá iniciar operações novas que referenciem esse snapshot. Porém, se estiver em andamento, uma operação de restauração será executada até a conclusão.
O Amazon Redshift tem uma cota que limita o número total de snapshots manuais que você pode criar; esta cota é por conta da AWS por região da AWS. A cota padrão está listada em Cotas e limites no Amazon Redshift.
Armazenamento de snapshots
Como os snapshots acumulam encargos de armazenamento, é importante que você os exclua quando não precisar mais deles. O Amazon Redshift exclui snapshots automatizados e manuais no final de seus respectivos períodos de retenção de snapshots. Você também pode excluir snapshots manuais usando o AWS Management Console ou com o comando da CLI batch-delete-cluster-snapshots.
É possível alterar o período de retenção do snapshot manual modificando as configurações do snapshot manual.
Você pode obter informações sobre quanto armazenamento seus snapshots estão consumindo usando o console do Amazon Redshift ou usando o comando da CLI describe-storage.
Excluir tabelas de snapshots
Por padrão, todas as tabelas permanentes definidas pelo usuário são incluídas em snapshots. Se uma tabela, como uma tabela temporária, não precisar de backup, você poderá reduzir significativamente o tempo necessário para criar snapshots e restaurá-los. Você também reduz o espaço de armazenamento no Amazon S3 usando uma tabela sem backup. Para criar uma tabela sem backup, inclua o parâmetro BACKUP NO ao criar a tabela. Para obter mais informações, consulte CREATE TABLE e CREATE TABLE AS no Guia do desenvolvedor de banco de dados do Amazon Redshift.