DB接続環境
図のような環境でローカルにダンプファイルを作成したいケースはありませんか?
SQLクライアントツールを使うと簡単にダンプファイル作成出来ますが、開発者が各々好きなツールを使っていたので作成方法の共有が面倒でした。
スマートに作成したいなと思い調べたところ、2行のコマンドで出来ることが分かったので共有します。
コマンド
localにpostgresql
をインストールして下記コマンドを実行。
SSHポートフォワーディング
ssh [remote.username]@[remote.host] -p [remote.port] -i [秘密鍵のpath] -f -N -L [local.port]:[db.host]:[db.port]
ダンプファイル作成
pg_dump "host=localhost port=[local.port] dbname=[db.name] user=[db.user] password=[db.password]" > ~/Downloads/backup.dmp
コマンドの補足
ポートフォワーディングを利用してlocalのポートをDBサーバーのポートと見なす設定を行います。
// 踏み台サーバーにssh接続。
ssh [remote.username]@[remote.host] -p [remote.port] -i [秘密鍵のpath]
// 「-f」でバックグラウンド実行。「-N」でリモートコマンドを無効。
-f -N
// 「-L」がポートフォワーディングのオプション。local.portは空いているポートを指定。
-L [local.port]:[db.host]:[db.port]
今回は、踏み台サーバーからDBサーバーへの接続はパスワード認証を想定。
// 接続パラメータの指定方法としてconninfo文字列を使用
pg_dump "host=localhost port=[local.port] dbname=[db.name] user=[db.user] password=[db.password]"
// ダンプファイル格納先を指定。
> ~/Downloads/backup.dmp
conninfo文字列について