12
14

More than 3 years have passed since last update.

AWSのRDSからdumpをとる方法

Posted at

やりたいこと

ローカルのデータベースを本番のもので置き換えて動作検証がしたい。
そのためにRDSで作成している本番DBからdumpをとりたい!

やりかた

本番DBとローカルでsshトンネルを開通させる→dumpをとるコマンドを実行。

ポートフォワーディング(トンネル開通)とは?

https://www.clear-code.com/blog/2014/9/12.html
今回はローカルのポートから踏み台サーバーを経由してDBに接続する。

実行コマンド

ポートフォワーディング

必要な情報の取得方法は後述します。

ssh -N (実行ユーザーのuser name)@踏み台のIPアドレス -L ローカルのポート番号:DBのエンドポイント:DBのポート番号

必要によって以下のオプションを指定
-i: 秘密鍵の指定
-f: バックグラウンドで実行

DBのエンドポイント・ポート番号

Screen Shot 2020-02-04 at 17.01.15.png

RDS→Databases→該当DBの Endpoint namePort をコピペ

踏み台のIPアドレス

EC2→Instances→該当インスタンスをチェックしたときに下に出てくる

Screen Shot 2020-02-04 at 17.11.35.png

このタブ内にある IPv4 Public IP をコピペ

ローカルのポート番号

現在使っていない番号だったら何でもOK。例えば今回は既に 3316 を使っていたので 3317 にした。

dumpをとるコマンド

これでコンソールからコマンドを打ってdumpが取れる状態になったので、以下でdumpをとる。

mysqldump -u <ユーザー名> -p -h 127.0.0.1 -P 3317 <DB名> > 20200204.dump

パスワードを求められるので入力。このユーザー名とパスワードはRDSのDBのもの。
mysqlの場合は localhost ではなく 127.0.0.1 とする必要があります。
これでdumpが取れました!🎉

補足

mysqldump: Couldn't execute 'SELECT COLUMN_NAME,
こんな感じで怒られる場合は、dumpのコマンドに --skip-column-statistics オプションを追加して以下のようにして下さい。

mysqldump --skip-column-statistics -u <ユーザー名> -p -h 127.0.0.1 -P 3317 <DB名> > 20200204.dump
12
14
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
12
14