fazendo o download de um grande banco de dados (postgres) para uma cópia local

3

Eu tenho um grande banco de dados postgres no Amazon RDS (cerca de 9 GB quando compactado) e às vezes precisamos copiá-lo e fazer alguns testes em nossas máquinas locais.

Fazer um despejo de banco de dados (pg_dump) e baixá-lo é simplesmente muito lento e, honestamente, estamos apenas ficando presos nas últimas vezes que tentamos.

Existe uma maneira simples de obter partes do DB de uma maneira inteligente? por exemplo, obtenha apenas alterações dos últimos 10 dias e, em seguida, podemos mesclá-los com o banco de dados local que temos, ou talvez obter DB em partes etc.?

Tenho certeza de que não sou o primeiro com essa necessidade, mas não consegui encontrar um método ou tutorial decente para explicar as melhores maneiras de fazer isso.

Obrigado!

    
por Ronen Ness 19.12.2016 / 15:15

1 resposta

4
O despejo comprimido de 9 GB não é muito grande. Você só precisa fazer o certo:

  • despejar da instância do EC2 na mesma conta e região da AWS em que o banco de dados RDS está sendo executado - não pela Internet;
  • usa o formato de despejo de diretório ( --format=directory ou -Fd ) - é compactado automaticamente;
  • use o dump paralelo (por exemplo, --jobs=16 ou -j16 ) e restauração paralela;
  • use sslmode=disable na string de conexão ou env PGSSLMODE=disable pg_dump … para desativar o SSL - algumas versões do AWS RDS têm um limite de 64 GB de dados SSL em uma única conexão;
  • lembre-se que o banco de dados RDS restaurado da captura instantânea é terrivelmente lento até que todos os dados sejam lidos pelo menos uma vez - a primeira leitura é 10 vezes mais lenta que o normal, pois os dados são obtidos do armazenamento em archive (S3 talvez) sob demanda t fazer esse despejo de um banco de dados restaurado recentemente do instantâneo;
  • mova-o para fora da AWS somente após o despejo com êxito no estado compactado.
por 23.12.2016 / 11:21