Para alguns trabalhos de teste e desenvolvimento, gostaríamos da capacidade de clonar rotineiramente os bancos de dados existentes do RedShift (todos os esquemas e todos os dados). Algo como uma restauração de backup.
O melhor que posso encontrar começa criando um instantâneo de todo o cluster, o que não é prático neste momento.
Temos scripts para criar o banco de dados e o esquema, mas não temos um mecanismo simples/arrumado para preencher as tabelas de outro banco de dados AWS RedShfit. (Descobrimos que não podemos usar INSERT INTO db_new.schema.table SELECT * FROM db_old.schema.table
porque a sintaxe entre bancos de dados não é suportada)
Alguém tem alguma sugestão?
Você pode fazer o seguinte:
UNLOAD
seus dados para S3 ( http://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html )COPY
os dados no novo banco de dados ( http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html )Isso (UNLOAD/COPY) será bastante rápido para um conjunto de dados de tamanho de desenvolvimento.
Acabei de passar muito tempo fazendo isso. É problemático porque as ferramentas postgres não capturam as informações da chave sort e dist. Postarei scripts completos em nosso repositório github público daqui a pouco, mas, por enquanto, aqui está um script que extrai todas as definições de tabela para criar instruções de tabela. Ele ainda não aborda tipos de compactação de coluna ou chaves primárias, mas pelo menos nos permite recriar tabelas em outro banco de dados. Preenchê-los é, então, uma simples questão de fazer scripts de instruções de carregamento e descarregamento. O script não é bonito devido a uma série de limitações do Redshift sql e eu o observo por muitas horas, mas funciona bem.
Gosto da ideia de capturar o estado do banco de dados como código, mas acho que há uma maneira mais fácil no contexto do redshift de instantâneos de backup e restauração deles.
Este documento da AWS para copiar um banco de dados para outra conta da AWS é um guia, você pode fazer o mesmo dentro da conta ou o que faria em uma restauração de emergência do instantâneo.
Agora que seu esquema e dados estão lá, a próxima tarefa é reduzir esse banco de dados como um ambiente de teste e redimensionar o cluster. Há também endpoints de DNS e outras configurações para limpar, mencionadas no documento.
A etapa de emagrecimento é a parte interessada, talvez alguém comente sobre isso.