当サイトの記事を別媒体に流用する際は必ず問い合わせページからご連絡下さい

アクセス制限しているRDS for MySQLをdumpしてローカルに落とす方法

どーもへっぽこだよぉー。
先日ローカルで起きてないエラーが本番で起きたので調査するべく本番と同じデータを入れてみることにしました。

さっそく

で検索!!
一番最初に引っかかったこの記事がよさそう。

参考 AWSのRDSからdumpをとる方法Qiita

なになにこのコマンドでいけるだって。

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

じゃさっそく実k・・

mysqldump: Got error: 2003: Can't connect to MySQL server on 'xxx' (60) when trying to connect

oh・・なんてことだ・・なんでこんなエラーが・・

あっ・・

この前外部のアクセス制限したんだった・・(´・ω・`)

ていうことで今回はアクセス制限下でのdump方法+それをローカルに落とす方法を解説します。

まずはEC2にアクセスします。

ssh ec2-user@パブリック IPv4 アドレス

次に

mysqldump -u ユーザー名 -p -h ホスト名 データベース名 > アウトプットファイル名

上記のコマンドでデータをEC2サーバーに落とします。・・が。
ここに少しつまずきポイントがあります(へっぽこがハマった箇所)。

ホスト名はmysqlに入って

SHOW VARIABLES LIKE 'hostname';

で調べることができます。
実際RDSで打ってみるとip-xx-x-x-xxxみたいな感じででます。

それを

mysqldump -u ユーザー名 -p -h ホスト名 データベース名 > アウトプットファイル名

に当てはめると

見事にエラーが起きます\(^o^)/

正解はRDSの管理画面から見れるエンドポイントをホスト名に当てはめることです。

これで無事にdumpができました。
次に落としたデータをどうやってローカルに落とすかですが、転送コマンドを使います。

ローカルで以下のコマンドを実行します。

scp -i ~/.ssh/id_rsa EC2ユーザー名@ip-プライベート IPv4 アドレス:ファイル名 ローカルに落とすパス

これでローカルにEC2で落としてきたデータをローカルに転送できました。
ローカルから直接

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

みたいなコマンドでデータをとってこれるような環境は危険だと思うので、そういう人は是非アクセス制限してこの方法を試してみてください。

以上、へっぽこでした。
ばいばい。

ワンクリックでランキングに協力してください(´;ω;`)
※万一記事に関わる個人・団体の方で記事の削除依頼がある場合、本サイトのお問い合わせから連絡ください。内容を確認させていただきます。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)