Copie o banco de dados PostgreSQL de um servidor remoto

11

Quando eu estava usando o MySQL, eu poderia executar um comando que SSHs no meu servidor e copiar o banco de dados na minha máquina local.

servidor de controle remoto ssh -t 'mysqldump --compress -u dbuser --password = "password" db_name' | / usr / local / mysql / bin / mysql -u root --password = "password" local_db_name

Como posso fazer a mesma coisa com o PostgreSQL?

wyred
fonte

Respostas:

15

Se o servidor de banco de dados obtiver conexões de banco de dados do seu host (geralmente na porta 5432), não será necessário usar o SSH. Nesse caso, você precisa fazer o seguinte:

pg_dump -h your_db_host -U db_user -C db_name | psql -h localhost -d local_db_name -U local_db_user

Se você só pode se conectar ao seu banco de dados a partir do próprio host, precisará adicionar a lógica SSH do seu exemplo do MySQL.

Com -C, você receberá um CREATE DATABASEcomando no início do despejo para não precisar criar por conta própria. O comando acima solicitará uma senha duas vezes, a menos que você as armazene em um arquivo .pgpass (assumindo que você esteja no Linux / Unix). Além disso, a conexão local pode ser diferente se o seu banco de dados não escutar no TCP (nesse caso, apenas omita a -h localhostparte).

Para mais detalhes e opções, consulte a documentação do pg_dump .

dezso
fonte
significa que você precisa ter a mesma senha nos dois servidores, certo?
Florian Heigl
11
@FlorianHeigl No.
dezso
Para quem estiver lendo isso no futuro: Digite a senha do primeiro banco de dados (remoto), pressione enter, digite a senha do usuário do banco de dados do host local, pressione enter. O fato de ter solicitado as duas senhas (e o UNIX nunca mostrar senhas quando você as tinge) também me confundiu.
AleksandrH