LoginSignup
5
7

More than 3 years have passed since last update.

mysqldumpでssh(多段)ごしにリモートサーバにmysqlのバックアップを取得する

Posted at

mysqldumpでssh(多段)ごしにリモートサーバにmysqlのバックアップを取得する

はじめに

リモートのDBサーバ(多段sshの先にある)から手元の環境にssh越しにバックアップを取得しました。

ネットワーク的にはこんな感じ

ローカル → [fumidai]踏み台(ssh入り口) → [webserver]Webサーバー → [mydatabase]DB

※DBには、Webサーバーからしか接続できない

仮にこうします)
※ DBのホスト名(IP)= AAA.BBB.CCC.DDD
※ DB接続ユーザー名= root
※ DB接続パスワード= prootpassword

セットアップ

ssh経由でのリモートサーバーの接続する際に利用される設定ファイルを使います。

[.ssh/config]には、以下のように多段の設定を行います。

Host fumidai
  HostName xxx.xxx.xxx.xxx # 踏み台のアドレス
  User qiita_tarou # 踏み台にログイン許可されたユーザー(sshのキーは登録されている前提)

Host webserver
  HostName xxx.xxx.xxx.xxx # Webサーバーのアドレス
  User centos # Webサーバーにログイン許可されたユーザー(今回は、centosユーザーとする)
  IdentitiesOnly yes
  IdentityFile ~/.ssh/webserver.pem # pemキー
  ProxyCommand ssh -W %h:%p fumidai

この状態で、sshで、webserverにログインできることを確認

$ ssh webserver
[centos@webserver ~]$ 

ローカルから実行するコマンド

ssh {.ssh/configに設定している接続先名} 'mysqldump --single-transaction -h {DBのホスト名 or IPアドレス} -u{DBユーザー名} -p{DBパスワード} {データベース名} | gzip' | cat > ./backup.sql.gz

なので、今回の例だと以下の様になる

ssh webserver 'mysqldump --single-transaction -h AAA.BBB.CCC.DDD -uroot -prootpassword mydatabase | gzip' | cat > ./mydatabase.sql.gz
5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7