概要
Snapmart社のstagingのDB環境は、AWS RDSを使用しています。
毎日24時にproduction環境のスナップショットからstaging用DBを作成し、update文で個人情報やメールアドレスなどをマスクした状態にしています。
また、stagingが配置されているVPCは社内ネットワークからしかアクセスできないようしています。
そのため、自宅からリモートで作業を行いたい場合、stagingのDBに接続できず思うように開発ができません。 *1
今回は、手っ取り早くローカルのmysqlにデータをdump/importするための手順を記します。
準備するもの・こと
AWS RDS staging用DBのデータ
AWS RDS staging用DBのデータをダンプします。 ダンプするデータは、特定のデータベースのテーブル定義データと、テーブルの中身のデータの二つに分けて取得します。
mysqldump -uhoge -phoge -hhoge.com -d -n > OUTPUT_TABLE mysqldump -uhoge -phoge -hhoge.com -t table_name > OUTPUT_DATA
そして、ダンプしたファイルをscpでローカルにもってきます。
元々のDBの削除と作成
めんどくさいのでRails経由で行います。
bundle exec rake db:drop RAILS_ENV=development bundle exec rake db:create RAILS_ENV=development
import
データ部をimportする際に-f
はエラーを無視してimportするぜ!というオプションです。
duplicate enty
エラーが出てしまっていたのですが、細かいことは気にしないので、スルーすることにしました。
sql_local < ~/Downloads/OUTPUT_TABLE sql_local -f < ~/Downloads/OUTPUT_DATA
追記 201903201343 メモ
DDLとデータで分けたりせずにdump実行すれば、dumpファイルに
DROP TABLE IF EXISTS XXXTable
がつくので、ローカルDBの初期化処理は必要ない。
*1:VPN使えば良いって話はありますが