どーもへっぽこだよぉー。
先日ローカルで起きてないエラーが本番で起きたので調査するべく本番と同じデータを入れてみることにしました。
さっそく
で検索!!
一番最初に引っかかったこの記事がよさそう。
なになにこのコマンドでいけるだって。
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
みたいなコマンドでデータをとってこれるような環境は危険だと思うので、そういう人は是非アクセス制限してこの方法を試してみてください。
以上、へっぽこでした。
ばいばい。
最新の記事だからここにコメントするけど、何々がオワコンで〜っていうアレな記事が多いっすね