Como fazer o script de uma migração de banco de dados usando o SSH?

2

Estou tentando criar um script sync.sh que coordena com nosso controle de versão abaixo do ideal para o nosso site. Este script irá migrar uma cópia do banco de dados ativo para o nosso ambiente de desenvolvimento local e algumas outras coisas. Estou tendo problemas com a parte de migração do mysql.

Este script é executado em uma máquina de desenvolvimento. remote é o host ativo.

# --------------
# database

# ssh tunnel
ssh -L 3307:remote:3306 user@remote

# mysql dump
mysqldump -u someuser -h remote -P 3307 -p"p4ssw0rd" db > localfile.sql

# somehow close ssh tunnel ???

# populate local db with sql dump file
mysql -ulocal db < localfile.sql

# -----------------
# other sync stuff
# ...

Quando apenas executo a parte do mysql do script, recebo esta saída:

Pseudo-terminal will not be allocated because stdin is not a terminal.
Enter password: 

Temos a configuração das chaves ssh e posso enviar ssh para o controle remoto corretamente. No entanto, quando executado no contexto do script, as coisas estão dando errado.

    
por user633183 14.03.2012 / 18:47

1 resposta

4

Você poderia fazer isso em uma linha sem o túnel usando algo como:

$ ssh user@remote "mysqldump -u user --password=password database_name" | 
  mysql -u local database_name
    
por 14.03.2012 / 18:54