Transferindo banco de dados PostgreSQL entre servidores

2

É possível transferir diretamente um banco de dados PostgreSQL entre dois servidores PostgreSQL?

Atualmente, estou configurando uma versão de "desenvolvimento" de meu banco de dados de produção usando pg_dump para serializar todo o banco de dados em um arquivo, baixar o arquivo e usar o pg_restore para carregar o banco de dados no servidor de desenvolvimento. No entanto, como o banco de dados vem crescendo, esse processo agora está demorando horas. Existe alguma maneira de simplesmente "conectar" os dois servidores e transferir o banco de dados diretamente, em vez desse processo demorado de download / download?

    
por Cerin 15.05.2011 / 02:16

4 respostas

3

Note que eu trabalhei apenas com o MySQL, mas o PostegreSQL não deveria ser diferente.

Se pg_dump é alguma coisa meu mysqldump, então você não pode simplesmente canalizar a saída para o pg_restore? Essa é a maneira mais direta e rápida que posso imaginar. Qualquer outra coisa é apenas mais sobrecarga

    
por 15.05.2011 / 02:21
1

Uma coisa que você pode considerar é ter dois bancos de dados de desenvolvimento, então você tem um que você está usando enquanto o outro está passando pelo ciclo pg_dump | pg_restore. Embora eu nunca tenha tido um banco de dados que tenha levado mais que alguns minutos, nunca investiguei se o --format tar poderia ser mais rápido que o formato padrão.

    
por 15.05.2011 / 02:30
1

No PostgreSQL há basicamente dois tipos de backup e replicação para atingir seu objetivo. Agora você está usando o backup lógico, tente fazer backup físico:

Physical cold backup means coping the files (if necessary also the rdbms binaries) to a place where you can get it back in case of problems.

Advantages: Physical cold backup is generally much faster than logical hot backup.

Disadvantages: Database cluster has to be shut down during backup. You can not use cold backup for upgrading a PostgreSQL database cluster.

Então, para fazer um backup físico frio, você precisa:

  • Parar o servidor de banco de dados
  • copia fisicamente o arquivo de banco de dados para o servidor de desenvolvimento (você também pode usar o rsynch)
  • Inicie o servidor novamente

Se você não puder parar o cluster, é melhor configurar uma replicação assíncrona usando a nova versão 9.0 do postgreSQL.

    
por 17.05.2011 / 00:12
0

Se os dois servidores tiverem a mesma arquitetura, você poderá simplesmente copiar o diretório de dados. Normalmente, você teria que desligar o servidor para fazer isso ou configurar o arquivamento do WAL. Mas para criar um banco de dados de teste, pode ser suficiente fazê-lo de qualquer maneira e limpar sua cópia com pg_resetxlog depois.

Você pode usar o rsync para reduzir a quantidade de dados a serem copiados em execuções subseqüentes.

Se os dois servidores tiverem uma arquitetura diferente, então pg_dump é a única rota.

    
por 16.05.2011 / 22:43