背景
開発環境にはseedでデータを書き込むのが一般的かと思いますが、今回自由研究としてRDSから開発環境にデータを持ってくることをやってみましたw(セキュリティ的によろしくないので、実務ではちゃんとseed使おうね)
CLIだけで頑張ろうとすると、インスタンスへdumpファイルを落とす→scpを使ってローカルへ持ってくる手順が一般的ですかね?そうすると容量問題があったりすると思います。
(当たり前ですが)無理やりlocalパスをつけたところでインスタンス内のディレクトリを探しちゃうので無理っぽいです。。(もしCLIだけでできる方法知ってたら教えてほしいです)
$ sudo mysqldump -h XXXXXXX.ap-northeast-1.rds.amazonaws.com -u [username] -p [dbname] --set-gtid-purged=OFF > /Path/to/local
-bash: /Path/to/local: No such file or directory
手順
MySQL Workbenchのインストール
今回はMySQL Workbench
を使って実現しました。
MySQL Workbenchをダウンロードしてインストールしてください。ちなみにお使いのOSのバージョンによっては起動できないのでOSに適正なバージョンのMySQL Workbenchをお使いください。(どのバージョンがいいかはChatGPTに聞くといいと思います。)
※Monterey12.6.3だと、最新は立ち上げられなかったのでv8.0.28にしました。
RDSへのConnection設定
立ち上げたらConnectionを設定しましょう。
以下の赤枠の「+」ボタンをクリックします。
以下の画面に設定していきます。
まずはRDSへの接続を作っていきましょう。(画像は初期値)
項目名 | 値 |
---|---|
Connection Name | 任意の名前でOK |
Connection Method | Standard TCP/IP over SSH |
SSH Hostname | EC2とか踏み台サーバーのホスト名(Elastic IP:port) |
SSH Username | デフォだとec2-user |
SSH Password | 設定されているpassword |
SSH Key File | pem fileのパス |
MySQL Hostname | XXXXXXXXXXXXXXX.ap-northeast-1.rds.amazonaws.com |
MySQL Server Port | 3306 |
Username | MySQLのusername |
Password | MySQLのpassword |
Test Connectionで試してみましょう。
成功すれば「Successfully」って感じのワードが出てきます。
そしたら「OK」をクリックして完了です。
RDSデータのExport
作ったConnectionをクリックして、AdministrationタブのData Export
より、DumpしたいSchemaを選択し、Export先も指定して、右下のStart Export
をクリックで吐き出されます。
localのMySQLへのConnection設定
次にローカル(今回はDockerコンテナ)の登録です。(画像は初期値)
項目名 | 値 |
---|---|
Connection Name | 任意の名前でOK |
Connection Method | Standard TCP/IP |
Hostname | localhost |
Port | 3306 |
Username | MySQLのusername(docker-compose.ymlとかに書いているはず) |
Password | MySQLのpassword(docker-compose.ymlとかに書いているはず) |
RDSへの接続と同じようにTest Connectionで試してみましょう。
成功すれば「Successfully」って感じのワードが出てきます。
そしたら「OK」をクリックして完了です。
localへのImport
AdministrationタブのData Import/Restore
を開く。
右側の..
ボタンよりさっきExportしたファイルを選択する。
そうすると勝手にImport対象のSchemaを選択してくれるのでそのあとはStart Import
をクリックして少し待てば完了!
簡単だね!
まとめ
基本的にはSeedが用意されていると思うのでこんなことはしなくていいと思うけど、こんな手段もあったので紹介してみました。
いつかどこかでだれかの役に立ったらいいなあ