SSHを使用してデータベース移行をスクリプト化するには?

SSHを使用してデータベース移行をスクリプト化するには?

私はsync.sh私たちのウェブサイトの理想的ではないバージョン管理と調和したスクリプトを作成しようとしています。このスクリプトは、いくつかの異なる点と一緒にライブデータベースのコピーをローカル開発環境に移行します。 mysqlの移行部分に問題があります。

スクリプトは開発コンピュータで実行されます。 remote生放送の進行役です。

# --------------
# 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
# ...

スクリプトのmysql部分を実行すると、次の結果が表示されます。

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

SSHキーが設定されており、リモートでSSHを正しく接続できます。しかし、スクリプトコンテキストで実行すると問題が発生します。

ベストアンサー1

これを使用して、トンネリングなしで1行でこれを実行できます。

$ ssh user@remote "mysqldump -u user --password=password database_name" | 
  mysql -u local database_name

おすすめ記事